主要内容

WLAN HDL时间和频率同步

这个例子展示了如何实现一个为HDL代码生成和硬件实现而优化的WLAN时间和频率同步模型。时间和频率同步是恢复无线局域网报文信息的关键步骤。

该模型估计和纠正接收到的WLAN信号中的时间和频率偏移,这些偏移是由无线信道和射频(RF)前端缺陷引入的。最初,该模型对接收到的信号进行粗略的时间和频率估计和校正。然后,该模型对接收信号的时间和频率估计和校正进行微调,以去除任何残留偏移。该模型支持20、40和80 MHz带宽选项,用于非高吞吐量(Non-HT)、高吞吐量(HT)、非常高吞吐量(VHT)和高效率(HE)帧格式。该示例使用WLAN工具箱™特性比较了Simulink®模型输出和MATLAB®函数。

WLAN包解码包括以下几个阶段:时间和频率同步、OFDM解调、信道估计和均衡、格式检测、信号解码和数据解码。

在这个解码过程中,只有时间和频率同步阶段可以优化HDL代码的生成。在未来的版本中,HDL支持将扩展到其他阶段。

在MATLAB中,运行这个命令打开示例模型。

model_name =“wlanhdlTimeAndFrequencySynchronization”;open_system (model_name);

WLANTimeAndFrequencySynchronization模型包含以下子系统:粗时间同步、粗CFO估计与校正、精时间同步和精CFO估计与校正。

在MATLAB中,运行这个命令打开WLANTimeAndFrequencySynchronization子系统。

open_system ([model_name' / WLANTimeAndFrequencySynchronization '),“力”);

粗糙的时间同步

粗时间同步算法实现了MATLAB函数中描述的双滑动相关窗口wlanPacketDetect.m.粗时间同步子系统使用遗留短训练域(L-STF)符号的自相关来返回估计的包开始偏移量。峰值检测器子系统将相关指标与信号的能量进行比较,并确定包的开始。下一阶段,精细符号定时检测使用遗留的长训练场(L-LTF)对数据包启动估计进行改进。

在MATLAB中,运行这个命令打开粗时间同步子系统。

open_system ([model_name“/ WLANTimeAndFrequencySynchronization /时间粗同步”]);

粗略的财务总监估计与修正

考虑到从粗时间同步子系统开始的数据包,粗CFO估计和校正子系统使用L-STF对输入执行自相关,并在L-STF持续时间的窗口内对计算的相关度量进行平均。然后,子系统通过考虑得到的度量的角度估计载波频偏(CFO)。

在MATLAB中,运行这个命令打开粗CFO估计子系统。

open_system ([model_name'/WLANTimeAndFrequencySynchronization/粗CFO估计和校正/粗CFO估计']);

该子系统使用CFO估计值来校正频率偏移。

在MATLAB中,运行这个命令打开粗CFO校正子系统。

open_system ([model_name'/WLANTimeAndFrequencySynchronization/粗CFO估计和校正/粗CFO校正']);

好的时间同步

精细时间同步子系统采用粗校正的时间和频率偏移波形进行精细时间偏移同步。相关器子系统将接收到的信号与本地生成的L-LTF进行交叉相关。峰值搜索器子系统搜索最大相关峰值,然后同步信号。

在MATLAB中,运行这个命令打开精细时间同步子系统。

open_system ([model_name/ WLANTimeAndFrequencySynchronization /好时间同步的]);

财务总监的精细估计和修正

精细CFO估计和校正子系统采用精细时间同步波形作为输入,用于微调频率偏移。该子系统对CFO进行估计和校正,去除粗频率校正后的残留,用L-LTF代替L-STF进行类似于粗估计的细CFO估计,并考虑平均相关角估计频率偏移。

在MATLAB中,运行这个命令打开Fine CFO estimate子系统。

open_system ([model_name'/WLANTimeAndFrequencySynchronization/Fine CFO估计和校正/Fine CFO估计']);

精细CFO校正子系统使用估计的精细CFO校正剩余频率偏移,然后输出校正后的WLAN接收信号。

在MATLAB中,运行这个命令打开Fine CFO Correction子系统。

open_system ([model_name'/WLANTimeAndFrequencySynchronization/Fine CFO估计和校正/Fine CFO校正']);

模型接口与验证

示例模型接受接收到的波形作为输入以及有效和开始信号。该模型返回一个同步波形作为输出和有效信号。示例中的其他输出包括一个包检测标志、一个CFO估计值及其有效性,以及作为输出检测到的包的数量。CFO估计是粗CFO和细CFO估计的总和。的wlanFrontEndInit脚本为模型提供输入。的wlanWaveformGenerator.m函数生成VHT 20 MHz帧,该帧通过具有模型a延迟配置的TGac通道。在30 dB信噪比(SNR)的加性高斯白噪声(AWGN)中添加了10 kHz CFO的其他通道缺陷和“25”的时间偏移。

流(模拟HDL时频同步\n');= sim卡(“wlanhdlTimeAndFrequencySynchronization.slx”);流('\n HDL模拟完成。% d包检测。out.numPacketsDetected(结束));
模拟HDL的时间和频率同步,模拟HDL完成。1包检测。

利用WLAN工具箱函数对实例的输出结果进行了验证。为Simulink模型及其MATLAB等效函数指定相同的输入波形,然后比较输出。

流(\n比较WLAN MATLAB时频同步\n') inputWaveformRef = inputWaveform(1:end-length(Hd.Numerator)+1);inputWaveformRef =过滤器(Hd.Numerator 1 inputWaveformRef);% WLAN包检测(startOffset、锰)= wlanPacketDetect (inputWaveformRef,生化武器);rxWave1 = inputWaveformRef (startOffset + 1:结束);粗略的CFO估计和修正coarseFreqOff = wlanCoarseCFOEstimate (rxWave1,生化武器);rxWave2 = hwlanFrequencyOffsetCorrect (fs, rxWave1 coarseFreqOff);%精细时间同步searchBufferLLTF = rxWave2 (1: wlanConfig.lstfLen * 10 + wlanConfig.lltfLen * 3);(抵消,MN) = wlanSymbolTimingEstimate (searchBufferLLTF,生化武器);rxWave3 = rxWave2(抵消+ 1:结束);%精细CFO估计和修正LTFs = rxWave3 (10 * wlanConfig.lstfLen + (1: wlanConfig.lltfLen * 2));fineFreqOff = wlanFineCFOEstimate (LTFs,生化武器);matOut = hwlanFrequencyOffsetCorrect (fs, rxWave3 fineFreqOff);流(\n MATLAB仿真完成。\ n”);simData = out.syncedData;simValid = out.validOut;simOut =双(simData (simValid));
比较WLAN MATLAB时频同步MATLAB仿真完成。

仿真结果

方法生成的输入波形的时间和频率同步wlanFrontEndInit.m脚本并输出时间和频率校正波形,如此计时图所示。

时序图显示输出rxOut在L-STF开始时同步,估计的频率偏移为9.695 kHz,接近引入的10 kHz的频率偏移。

Simulink输出与MATLAB参考输出的比较

情节(真正的(matOut));持有;simOut = simOut(1:长度(matOut));情节(真正的(simOut));标题(WLAN HDL Simulink与MATLAB参考输出的实际部分比较“字形大小”10);包含(的样本数量);ylabel (“振幅”);传奇(“MATLAB参考输出的实部”“Simulink输出的真实部分”);图;情节(图像放大(matOut));持有;simOut = simOut(1:长度(matOut));情节(图像放大(simOut));标题(WLAN HDL Simulink与MATLAB参考输出虚部的比较“字形大小”10);包含(的样本数量);ylabel (“振幅”);传奇(' MATLAB参考输出的虚部'' Simulink输出的虚部');

另请参阅

功能

Baidu
map