该示例演示了WLAN接收器中的联合采样时钟和载波频率偏移跟踪。
无线局域网无线电通常使用一个振荡器来获得用于采样和调制的时钟。发射机和接收机中的振荡器并不以完全相同的频率运行。由于这种不匹配,接收机和发射器之间存在载波频率偏移(CFO),以及接收机相对于发射器偏移的采样瞬间。这种在接收机和发射机之间的采样瞬间的偏移称为采样时钟偏移(SCO)。当接收机的采样时钟运行比发射机慢时,这将导致更大的采样周期和正的采样时钟偏移。IEEE®802.11™标准中包含的导频子载波允许跟踪和纠正SCO和CFO的损伤。
在OFDM系统中,SCO表现为子载波和符号相关的相位旋转和载波间干扰(ICI)[1]。当SCO较大且数据包较长时,远离DC的子载波将受到严重损害。CFO表现为ICI和所有子载波共有的依赖于符号的相位旋转。此图显示了由于这些损害而导致的子载波从一个OFDM符号到下一个OFDM符号的相位旋转。 是子载波索引的相位误差 , 为子载波数, 是上合组织,, 为载波频率偏移, 是符号的时期, 是相位误差梯度(PEG),并且 为常见相位误差(CPE)。PEG和CPE可用于估算SCO和剩余CFO。
此示例显示了如何展示IEEE 802.11ac™VHT波形,具有固定的SCO和CFO损伤[2[并显示解调受损波形的均衡星座,无需联合定时和相位跟踪,以校正SCO和CFO以证明跟踪的有效性。
创建VHT配置对象以参数化传输。使用一个只有500字节的数据负载和16点正交振幅调制(16-QAM)来产生少量的OFDM符号,并使损害容易可视化。
cfgVHT = wlanVHTConfig;cfgVHT。ChannelBandwidth =“CBW20”;cfgVHT。NumTransmitAntennas = 1;cfgVHT。NumSpaceTimeStreams = 1;cfgVHT。MCS = 4;%16-QAM和3/4编码速率cfgVHT。APEPLength = 500;%字节
创建一个随机PSDU。
s=rng(10);%种子随机数发生器psdu = randi([0 1],cfgvht.psdulength * 8,1,“int8”);
生成VHT报文。
tx=波发生器(psdu,cfgVHT);
型号-百万分之一(PPM)采样时钟偏差在发射机和接收机之间使用comm.SampleRateOffset
.
sco=-100;PPM中%采样时钟偏移量
用comm.SampleRateOffset
通过指定所需的采样率偏移。采样率偏移是发射机和接收机采样率之间的相对偏移。采样时钟偏移是发射机和接收机采样周期之间的相对偏移。
sr = -sco /(1 + sco / 1e6);在PPM中样品率偏移%
模型采样时钟偏移,在波形上加零以允许滤波器延迟。
samplingclockoffset = comm.sampletyOffset(SRO);rx = samplingclockoffset([tx; zeros(100,cfgvht.numtransmitantannas]);
使用剩余载波频率偏移波形助手频率偏移功能。该示例假设相同的振荡器用于采样和调制,从而CFO取决于SCO和载波频率。
fc = 5.25 e9;%载波频率,赫兹CFO =(SCO * 1E-6)* FC;载波频率偏移,赫兹fs=wlanSampleRate(cfgVHT);%基带采样率rx = helperfrequencyoffset(rx,fs,cfo);%添加频率偏移
将噪声添加到方差为30 dBW的波形中。
awgnChannel=comm.awgnChannel(“NoiseMethod”,'方差','方差'10 ^ (-30/10));rx = awgnChannel (rx);
为了同步数据包,为恢复数据字段做准备,本示例执行以下处理步骤。
检测包
进行粗载波频偏估计和校正
建立符号定时同步
执行精细的载波频率偏移估计和校正
解调L-LTF并估计噪声功率
解调VHT-LTF并估计信道响应
生成字段索引并执行数据包检测。
IND = WLANFIELDINDIDICES(CFGVHT);toff = wlanpacketdetect(rx,cfgvht.channelbandwidth);
执行粗略的频率偏移校正。
lstf = rx(设备+ (ind.LSTF (1): ind.LSTF (2)),:);coarseCFOEst = wlanCoarseCFOEstimate (lstf cfgVHT.ChannelBandwidth);rx = helperFrequencyOffset (rx, fs -coarseCFOEst);
执行符号定时同步。
nonhtprodeamble = rx(toff +(ind.lstf(1):Ind.lsig(2)),:);ysefoff = WlansymboltimingEstimate(nonhtprodeamble,cfgvht.channelbandwidth);Toff = Toff + youff;
执行精细的频率偏移校正。
lltf = rx(toff +(ind.lltf(1):Ind.lltf(2)),:);finecfoest = wlanfinecfoestimate(lltf,cfgvht.channelbandwidth);rx = helperfrequencyoffset(rx,fs,-finecfoest);
执行信道估计。
vhtltf = rx(toff +(ind.vhtltf(1):Ind.vhtltf(2)),:);vhtltfdemod = wlanvhtltfdemodulate(vhtltf,cfgvht);chanest = wlanvhtltfchannelestimate(vhtltfdemod,cfgvht);
获得单流信道估计。
chanEstSSPilots=vhtSingleStreamChannelEstimate(VHTLTFDEM,cfgVHT);
粗略和精细频率偏移估计和校正去除了大部分CFO,但由于波形中存在损伤,剩余CFO仍然存在。接收机必须跟踪和校正此偏移。
disp ('前端减值更正:');
前端减值纠正:
前端CFOEST=粗CFOEST+精CFOEST;显示(['估计CFO:'num2str (frontEndCFOEst“%.1f”)“赫兹”]);
估计CFO:-525209.0 Hz
ResidualCFO = CFO-FrontendCFOEST;DISP([最初调整后的剩余CFOnum2str(剩余LCFO,“%.1f”)“赫兹”]);
初始校正后的剩余CFO:209.0 Hz
使用trackingVHTDataRecover用于恢复VHT数据字段的功能,带有可选的飞行员跟踪功能,以纠正由于SCO和CFO导致的定时和相位错误。使用跟踪恢复配置对象
首先,恢复数据字段时不进行导频跟踪。使用基带速率下字段的开始和结束采样索引从波形中提取数据字段。如果接收器的采样率高于发射器的采样率,则接收器需要的采样量大于发射器产生的采样量。要考虑到这一点,请提取氖
从波形中提取额外样本并传递到恢复功能。所需额外样本的最大数量取决于预期的SCO、基带采样率和最大数据包持续时间。
创建一个禁用飞行员跟踪的恢复配置。
cfgrec = trackingrecoveryconfig;cfgrec.pilottracking ='没有任何';
用下列方法提取数据字段氖
考虑到负SCO的额外样本。
maxDuration = 5.484 e - 3;%最大数据包持续时间在几秒钟内maxSCO=120;%百万分之一Ne=ceil(fs*maxDuration*maxSCO*1e-6);%额外样品数量dataind = toff +(ind.vhtdata(1):Ind.Vhtdata(2)+ Ne);dataind = dataind(Dataind <= length(rx));%仅在波形中使用索引data = rx(Dataind,:);
解调和解码。
[rxPSDUNoTrack ~, eqSymNoTrack] = trackingVHTDataRecover(数据、陈chanEstSSPilots、cfgVHT cfgRec);
绘制均衡的星座。该曲线显示由残余CFO引起的所有星座点的旋转,以及由于SCO引起的星座点的扩散。尽管AWGN添加到波形中,但损伤会导致解码PSDU内的比特错误。
constnotrack = comm.constellationdiagram;constnotrack.title =.“无导频跟踪的均衡符号”; ConstNoTrack.referencecontellation=wlanReferenceSymbols(cfgVHT);ConstNoTrack(eqSymNoTrack(:);释放(ConstNoTrack)
[~, berNoTrack] = biterr (rxPSDUNoTrack psdu);disp (的误比特率:);
误码率:
DISP([“没有跟踪:”Num2str(Bernotrack)]);
无跟踪:0.066964
现在恢复数据场与联合时间和阶段飞行员跟踪纠正SCO和剩余CFO。
此示例中的跟踪算法估计绝对值
和
每个OFDM符号,并对解调符号应用每个子载波和符号相位校正,以反转由SCO和CFO引起的相位误差。该算法计算每个接收到的导频子载波之间的相位误差和每个符号的平均期望值pilottrackingwindow
OFDM符号。根据该值,算法计算
和
每个符号,并使用这些估计将相位校正应用于每个符号和子载波[3.,4]。
启用导频跟踪创建恢复配置。
cfgrec = trackingrecoveryconfig;cfgrec.pilottracking =“联合”;联合定时和相位跟踪cfgRec.PilotTrackingWindow=9;% OFDM符号的平均窗口
解调和解码。
[rxPSDU, ~, eqSymTrack、cpe、挂钩)= trackingVHTDataRecover(数据、陈chanEstSSPilots、cfgVHT cfgRec);
绘制均衡星座图。这显示了一个清晰的16-QAM星座,没有扩展或旋转。解码的PSDU不包含任何位错误。
consttrack = comm.constellationdiagram;constrack.title ='与联合试验跟踪的均等符号';consttrack.referenceConstellation = wlanreferencesymbols(cfgvht);consttrack(eqsymtrack(:));释放(Consttrack)
[~,berTrack]=biterr(rxPSDU,psdu);disp([“跟踪:'num2str (berTrack)]);
跟踪:0
的trackingVHTDataRecover函数返回可以估计剩余CFO和SCO的测量值:
氯化聚乙烯
- 每个符号的常见相位错误(弧度)
钉子
-每个符号的相位误差梯度(每个子载波的弧度)
使用随着变化率的线性最小二乘拟合来估计来自这些测量的SCO和残留CFO。的trackingplotscocfoestimates.功能执行这些测量并绘制结果。
[ResidualCFOEST,SCOEST] = TrackingPlotsCocfoestimates(CPE,PEG,CFGVHT);
流('跟踪的减值:\n');
跟踪减值:
流('估计残余CFO:%3.1F Hz(%.1F Hz误差)\ n',...ResidualCFOEST,ResidualCFoest-ResealualCFO);
估计残差CFO: 198.9 Hz (-10.1 Hz误差)
流(估计SCO: %3.1f PPM(%。1 f PPM错误)\ n ',scoEst,scoEst sco);
估计SCO:-98.3 ppm(1.7 ppm误差)
首席财务官= frontEndCFOEst + residualCFOEst;初始+跟踪CFO估计流('估计CFO(初始+跟踪):%.1f Hz(%.1f Hz错误)\n',CFOEST,CFOEST-CFO);
预估CFO(初始+跟踪):-525010.1 Hz (-10.1 Hz错误)
rng(年代);%恢复随机数生成器的状态
此示例演示如何在恢复WLAN波形的数据字段时跟踪和校正采样时钟和载波频率偏移。
本例使用数据场恢复功能,对VHT、HT-MF和非HT格式进行联合导频跟踪,并使用一个对象来配置恢复算法。
要查看他格式数据包的导频跟踪的示例,请参阅802.11ax数据包的恢复过程实例
Speth,M.,S.A.Fechtel,G. Fock和H. Meyr。“使用OFDM的无线宽带系统的最佳接收器设计。一世。”IEEE通信事务47岁的没有。11(1999年11月):1668-77。https://doi.org/10.1109/26.803501。
IEEE Std 802.11™-2016 (IEEE Std 802.11-2012修订版)。第11部分:无线局域网介质访问控制(MAC)和物理层(PHY)规范信息技术的IEEE标准。系统之间的电信和信息交换。局域网和城域网—具体要求。
Chiueh,Tzi-Dar,Pei-yun Tsai,Lai。I-Wei,和Tzi-Dar Chiueh。无线MIMO-OFDM通信基带接收机设计第二版,霍博肯,新泽西州:J.威利父子公司,2012年。
Horlin,François和AndréBourdoux。模拟前端的数字补偿:一种新的无线收发器设计方法.奇切斯特,西萨塞克斯X;Hoboken,NJ:J. Wiley&Sons,2008。