使用粗糙和精细的补偿来补偿频率偏移
使用载体同步器在嘈杂的QAM信号中纠正相位和频率偏移。然后使用载体同步器和粗频薪补偿器校正偏移量。
设置示例参数。
FS = 10000;%符号率(HZ)sps = 4;每个符号样本%M = 16;%调制顺序k = log2(m);每个符号的%位EBNO = 20;%EB/NO(DB)snr = convertsnr(ebno,“ ebno”,bitpersymbol = k,samplespersymbol = sps);
创建一个星座图对象,以可视化偏移补偿技术的影响。指定星座图仅显示最后4000个样本。
constdiagram = comm.constellationdiagram(...“参考结构化”,Qammod(0:M-1,M),...“ Samplespersymbol”,sps,...“符号StodisPlaySource”,,,,'财产',,,,...'符号播放',4000,...'xlimits',[-5 5],,...'ylimits',[-5 5]);
引入400 Hz的频率偏移和30度的相位偏移。
phasefreqoffset = comm.phasefrequencyoffset(...“频率offset”,400,...“阶段”,30,...'采样率',fs);
生成随机数据符号并应用16 QAM调制。
data = randi([0 M-1],10000,1);modsig = qammod(data,m);
创建一个凸起的余弦过滤对象,并过滤调制信号。
txfilter = Comm。...“输出采样符号”,sps,...'获得',SQRT(SPS));txsig = txfilter(modsig);
应用相位和频率偏移,然后通过AWGN通道传递信号。
freqoffsetsig = apeasfreqoffset(txsig);rxsig = awgn(freqoffsetsig,snr);
通过使用载体同步器对信号进行良好的频率校正。
finesync = comm.carriersynchronizer(...'阻尼因子',0.7,...“标准化卢比窗口”,0.005,...“ Samplespersymbol”,sps,...'调制',,,,'qam');rxData = finesync(rxsig);
显示最后4000个符号的星座图。
constdiagram(RXDATA)
即使有时间收敛,该图的螺旋性也表明载体同步器尚未补偿大频率偏移。400 Hz偏移量是样本率的1%。
用载体同步器之前插入粗频率补偿器重复该过程。
创建一个粗频率补偿器,以将频率偏移降低到可管理的水平。
coarsync = comm.coarsefrequencyCompensator(...'调制',,,,'qam',,,,...“频率分辨”,1,...'采样率',fs*sps);
将接收的信号传递给粗频率补偿器,然后将其传递给载体同步器。
syncoarse = coarsync(rxsig);rxData = finesync(Synccoarse);
在粗糙和良好的频率补偿后绘制信号的星座图。现在,收到的数据与参考星座保持一致。
constdiagram(RXDATA)