正确的符号计时和多普勒偏移
方法纠正符号计时和频率偏移错误comm.SymbolSynchronizer
而且comm.CarrierSynchronizer
系统对象。
配置
初始化仿真参数。
M = 16;调制阶数nSym = 2000;数据包中的符号数SPS = 2;每个符号的样本百分比spsFilt = 8;用于过滤器和通道的每个符号的样本spsSync = 2;%用于同步器的每个符号的样本lenFilt = 10;% RRC过滤器长度
为发射器和接收器创建一对匹配的根凸起余弦(RRC)滤波器系统对象。
txfilter = com . raisedcosinetransmitfilter (“FilterSpanInSymbols”lenFilt,...“OutputSamplesPerSymbol”spsFilt,“获得”、sqrt (spsFilt));rxfilter = com . raisedcosinereceivefilter (“FilterSpanInSymbols”lenFilt,...“InputSamplesPerSymbol”spsFilt,“DecimationFactor”spsFilt / 2,“获得”、sqrt (1 / spsFilt));
创建一个相频偏移系统对象来引入100 Hz多普勒频移。
多普勒= com .相位频率偏移(“FrequencyOffset”, 100,...“PhaseOffset”45岁的“SampleRate”1 e6);
创建一个可变delay System对象来引入定时偏移。
varDelay = dsp.VariableFractionalDelay;
创建载波和符号同步器系统对象,分别校正多普勒频移和定时偏移。
carrierSync = com . carriersynchronizer (“SamplesPerSymbol”, spsSync);symbolSync = com . symbolsynchronizer (...“TimingErrorDetector”,早期的后期(non-data-aided)”,...“SamplesPerSymbol”, spsSync);
创建星座图系统对象以查看结果。
refConst = qammod(0:M-1,M,“UnitAveragePower”,真正的);cdReceive = com .星座图(“ReferenceConstellation”refConst,...“SamplesPerSymbol”spsFilt,“标题”,接收信号的);cdDoppler = com .星座图(“ReferenceConstellation”refConst,...“SamplesPerSymbol”spsSync,“标题”,“频率校正信号”);cdTiming = com .星座图(“ReferenceConstellation”refConst,...“SamplesPerSymbol”spsSync,“标题”,“频率和定时同步信号”);
主要处理回路
主要处理循环:
生成随机符号并应用QAM调制。
对调制信号进行滤波。
应用频率和定时偏移。
将传输的信号通过AWGN信道传递。
过滤接收的信号。
纠正多普勒频移。
纠正定时偏移。
为k = 1:15 data = randi([0 M-1],nSym,1);modSig = qammod(data,M,“UnitAveragePower”,真正的);txSig = txfilter(modSig);txDoppler =多普勒(txSig);txDelay = varDelay(txDoppler,k/15);rxSig = awgn(txDelay,25);rxFiltSig = rxfilter(rxSig);rxCorr = carrierSync(rxFiltSig);rxData = symbolSync(rxCorr);结束
可视化
绘制接收信号、频率校正信号和频率定时同步信号的星座图。在接收信号中不能识别特定的星座点,只能在频率校正信号中识别部分星座点。然而,时间和频率同步信号对准预期的QAM星座点。
cdReceive (rxSig)
cdDoppler (rxCorr)
cdTiming (rxData)