主要内容

WLAN HDL时间和频率同步

这个示例展示了如何实现一个针对HDL代码生成和硬件实现进行优化的WLAN时间和频率同步模型。时间和频率同步是无线局域网(WLAN)数据包信息恢复的关键步骤。

该模型对无线信道和射频(RF)前端损伤所引入的接收WLAN信号中的时间和频率偏移进行估计和校正。该模型首先对接收信号进行粗略的时间和频率估计和校正。然后,该模型对接收信号进行时间和频率估计和校正,以消除任何残余偏移。支持非高吞吐量(no金宝appn-high throughput, Non-HT)、高吞吐量(high throughput, HT)、非常高吞吐量(very high throughput, VHT)和高效率(high efficiency, HE)帧格式的20、40和80 MHz带宽选项。这个例子比较了Simulink®模型输出与MATL金宝appAB®函数通过使用WLAN Toolbox™功能。

WLAN分组解码包括时间和频率同步、OFDM解调、信道估计和均衡、格式检测、信号解码和数据解码等阶段。

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

在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持续时间的一个窗口内平均计算出的相关度量。然后,子系统通过考虑得到的度量值的角度来估计载波频偏。

在MATLAB中,运行此命令打开粗CFO估算子系统。

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

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

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

open_system ([model_name'/WLANTimeAndFrequencySynchronization/粗CFO estimate and Correction/粗CFO Correction']);

好的时间同步

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

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

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

精细的CFO估算和修正

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

在MATLAB中,运行此命令打开Fine CFO Estimation子系统。

open_system ([model_name'/WLANTimeAndFrequencySynchronization/Fine CFO estimate and Correction/Fine CFO estimate ']);

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

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

open_system ([model_name'/WLANTimeAndFrequencySynchronization/Fine CFO estimate and Correction/Fine CFO Correction']);

模型接口与验证

示例模型接受接收的波形作为输入以及有效和启动信号。模型返回一个同步的波形作为输出,同时返回一个有效的信号。该示例中的其他输出包括检测到的包标志、CFO估计值及其有效值以及作为输出检测到的包数量。财务总监估计值是粗略财务总监估计值和精细财务总监估计值的总和。的wlanFrontEndInitScript为模型提供输入。的wlanWaveformGenerator.m函数在脚本中生成VHT 20 MHz框架,即通过TGac通道延迟概要文件的模型的加性高斯白噪声(AWGN) 30 dB信噪比(信噪比)与其他频道添加障碍10 kHz首席财务官和定时偏移的“25”。

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

通过使用WLAN Toolbox函数验证示例的输出。为Simulink模型及其MATLAB等效函数指定相同的输入波形,然后比较输出。金宝app

流(无线局域网MATLAB时间和频率同步比较\n) inputWaveformRef = inputWaveform(1:end-length(Hd.Numerator)+1);inputWaveformRef =过滤器(Hd.Numerator 1 inputWaveformRef);% WLAN报文检测(startOffset、锰)= wlanPacketDetect (inputWaveformRef,生化武器);rxWave1 = inputWaveformRef (startOffset + 1:结束);粗略的财务总监估计和修正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输出和MAT金宝appLAB参考输出的比较

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

另请参阅

功能