主要内容

正确的符号计时和多普勒偏移

方法纠正符号计时和频率偏移错误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,...获得=√spsFilt);rxfilter = com . raisedcosinereceivefilter (...FilterSpanInSymbols = lenFilt,...InputSamplesPerSymbol = spsFilt,...DecimationFactor = spsFilt / 2,...获得=√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=true);cdReceive = com .星座图(...ReferenceConstellation = refConst,...SamplesPerSymbol = spsFilt标题=接收信号的);cdDoppler = com .星座图(...ReferenceConstellation = refConst,...SamplesPerSymbol = spsSync,...Title =“频率校正信号”);cdTiming = com .星座图(...ReferenceConstellation = refConst,...SamplesPerSymbol = spsSync,...Title =“频率和定时同步信号”);

主要处理回路

主要处理循环:

  • 生成随机符号并应用QAM调制。

  • 对调制信号进行滤波。

  • 应用频率和定时偏移。

  • 将传输的信号通过AWGN信道传递。

  • 过滤接收的信号。

  • 纠正多普勒频移。

  • 纠正定时偏移。

k = 1:15 data = randi([0 M-1],nSym,1);modSig = qammod(data,M,UnitAveragePower=true);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)

另请参阅

|