主要内容

使用粗同步和精同步校正16-QAM的相位和频率偏移

AWGN信道中16-QAM信号的有效相位和频率偏移补偿分两步完成。首先,使用粗略频率补偿器提供的估计值校正粗略频率偏移,然后使用载波同步微调校正。由于粗略频率校正,car即使归一化带宽设置为较低值,rier同步器也会快速收敛。较低的归一化带宽值能够更好地校正较小的剩余载波偏移。对接收信号应用相位和频率偏移校正后,使用前置码解决相位模糊。

定义仿真参数。

fs=10000;%采样率(Hz)sps=4;%每个符号的样本数M=16;%调制顺序k=log2(M);%每符号位数rng(1996年)%为可重复的结果设置种子巴克=公共巴克码(...“长度”,13,“样品性能框架”,13);%序言msgLen=1e4;numFrames=10;frameLen=msgLen/numFrames;

生成数据有效载荷并将前导添加到每个帧。该前导稍后用于相位模糊度解决。

前导=(1+barker())/2;%长度13,单极数据=零(msgLen,1);对于idx=1:numFrames有效载荷=randi([0 M-1],帧-巴克长度,1);数据((idx-1)*frameLen+(1:frameLen))=[前导码;有效载荷];终止

为发射脉冲形状滤波、接收脉冲形状滤波、QAM粗略频率补偿、载波同步和星座图创建系统对象。

txFilter=comm.RaisedCosineTransmitFilter(...“OutputSamplesPerSymbol”,sps);rxFilter=comm.RaisedCosineReceiveFilter(...“InputSamplesPerSymbol”,sps,“决策因素”,sps);粗略=通信粗略频率补偿器(“采样器”,财政司司长,...“频率分辨率”,10);精细=通信载波同步器(...“阻尼系数”,0.4,“正常化环路带宽”,0.001,...“SamplesPerSymbol”1.“调制”,“QAM”);axislimits=[-6];星座图=comm.ConstellationDiagram(“参考告知”,qammod(0:M-1,M),...“频道名称”,{“会合前”,“会合后”},...“ShowLegend”符合事实的“XLimits”,限制,“YLimits”,限制);

还为AWGN信道创建一个系统对象,以及相位和频率偏移,以增加信号损伤。添加大于90度的相位偏移,以产生相位模糊,从而导致星座象限移动。

ebn0=8;频率偏移=110;相位偏移=110;awgnChannel=comm.awgnChannel(“埃布诺”,ebn0,...“BitsPerSymbol”K“SamplesPerSymbol”,sps);pfo=通信相位频率偏移(“频率偏移”,频率偏移,...“相位偏移”,相位偏移,“采样器”,fs);

生成随机数据符号,应用16-QAM调制,并将调制信号通过发射脉冲成形滤波器。

txMod=qammod(数据,M);txSig=txFilter(txMod);

使用全氟辛烷磺酸系统对象,然后将信号通过AWGN通道添加高斯白噪声。

txSigOffset=pfo(txSig);rxSig=awgnChannel(txSigOffset);

粗略频率补偿器系统对象为频率偏移提供粗略校正。对于本例中的情况,将接收信号校正的频率偏移校正到发射信号的10 Hz以内就足够了。

Sync粗糙=粗糙(rxSig);

将信号通过接收脉冲整形滤波器,并进行精细频率校正。

rxFiltSig=精细(rxFilter(SyncRough));

显示信号中第一个和最后1000个符号的星座图。在同步环路收敛之前,图表的螺旋性质表明频率偏移未被校正。在载波同步器已经收敛到解决方案之后,符号与参考星座对齐。

施工图([rxFiltSig(1:1000)rxFiltSig(9001:end)])

解调信号。考虑由发送和接收滤波器引起的信号延迟,以将接收数据与发送数据对齐。计算并显示总误码和误码率。检查误码时,使用接收信号的后一部分以确保同步环路已收敛。

rxData=qamdemod(rxFiltSig,M);delay=(txFilter.FilterSpanInSymbols+rxFilter.FilterSpanInSymbols)/2;idxSync=2000;%在同步环路收敛后,检查接收信号的误码率[syncDataTtlErr,syncDataBER]=biterr(数据(idxSync:end delay),rxData(idxSync+delay:end))
syncDataTtlErr=16116
syncDataBER=0.5042

根据所使用的随机数据,同步环路会聚并锁定后,接收信号中可能会因相位模糊而产生误码。在这种情况下,您可以使用前导码确定并消除同步信号中的相位模糊,以减少误码。如果相位模糊度最小,则位错误可能保持不变。

idx=9000+(1:巴克长度);phOffset=角度(txMod(idx)。*conj(rxFiltSig(idx+延迟));phOffsetEst=平均值(phOffset);disp(['相位偏移量=',num2str(rad2deg(phOffsetEst)),“学位”])
相位偏移=-90.1401度
resPhzSig=exp(1i*phOffsetEst)*rxFiltSig;

在解决相位模糊后解调信号。重新计算总误码和误码率。

resPhzData=qamdemod(resPhzSig,M);[resPhzTtlErr,resPhzBER]=biterr(数据(idxSync:end delay),resPhzData(idxSync+delay:end))
resPhzTtlErr=5
resPhzBER=1.5643e-04