VHT基础数据恢复
这个例子展示了如何执行基本的VHT数据恢复。文中还介绍了当接收信号存在载波频偏时如何恢复VHT数据。类似的过程可以用于恢复具有HT和非HT格式的数据。
基本数据恢复
WLAN Toolbox™提供了生成和恢复符合IEEE®802.11ac™标准的波形的功能。数据恢复过程包括以下步骤。
生成VHT波形
让波形通过一个通道
提取VHT-LTF并解调
利用解调后的VHT-LTF估计信道
提取数据字段
利用信道和噪声方差估计来恢复数据
框图显示了这些步骤以及它们对应的命令。
创建VHT配置对象。
wlanVHTConfig;
使用VHT配置对象创建VHT传输波形。设置数据顺序为[1, 0, 1, 1)
.波形发生器功能重复数据序列,生成指定数量的数据包。
txSig = wlanWaveformGenerator([1;0;1;1],cfg);
将接收到的信号通过AWGN通道传递。
rxSig = awgn(txSig,10);
确定波形的场指数。
ind = wlanFieldIndices(cfg);
从接收的信号中提取VHT-LTF。
rxhtltf = rxSig(ind.VHTLTF(1):ind.VHTLTF(2),:);
解调VHT-LTF。利用解调信号估计信道响应。
demodVHTLTF = wlanvhtltf解调(rxVHTLTF,cfg);chEst = wlanVHTLTFChannelEstimate(demodVHTLTF,cfg);
提取VHT数据字段。
rxData = rxSig(ind.VHTData(1):ind.VHTData(2),:);
利用信道和噪声方差估计恢复信息位。的前8位匹配输入数据序列的两个重复[1, 0, 1, 1)
.
rxBits = wlanVHTDataRecover(rxData,chEst,0.1,cfg);rxBits (1:8)
ans =8x1 int8列向量1 0 1 1 1 1 0 1 1
数据恢复与频率校正
当存在载波频率偏移时,数据恢复是通过这些步骤完成的。
生成VHT波形
让波形通过一个通道
提取L-STF并执行粗频偏估计
用粗估计来修正偏移量
提取L-LTF并执行精细的频率偏移估计
用精细估计来修正偏移量
提取VHT-LTF并解调
利用解调后的VHT-LTF估计信道
提取数据字段
利用信道和噪声方差估计来恢复数据
框图显示了这些步骤以及它们对应的命令。
设置通道带宽和采样速率。
生化武器=“CBW160”;Fs = 160e6;
创建一个支持2x2 MIMO传输的VHT配置对象。万博1manbetx
cfg = wlanVHTConfig(“ChannelBandwidth”生化武器,...“NumTransmitAntennas”2,“NumSpaceTimeStreams”2);
生成包含随机PSDU的VHT波形。
txPSDU = randi([0 1],cfg.PSDULength*8,1);txSig = wlanWaveformGenerator(txPSDU,cfg);
创建一个2x2 TGac通道。
tgacChan = wlanTGacChannel(“SampleRate”fs,“ChannelBandwidth”生化武器,...“NumTransmitAntennas”2,“NumReceiveAntennas”2);
创建一个相位和频率偏移对象。
pfOffset = comm.PhaseFrequencyOffset(“SampleRate”fs,“FrequencyOffsetSource”,输入端口的);
将传输的波形通过有噪声的TGac通道。
rxSigNoNoise = tgacChan(txSig);rxSig = awgn(rxSigNoNoise,15);
对接收的信号引入500hz的频率偏移。
rxSigFreqOffset = pfOffset(rxSig,500);
查找PPDU的所有组件字段的开始和停止索引。
ind = wlanFieldIndices(cfg);
提取L-STF。估计并校正载波频率偏移。
rxLSTF = rxSigFreqOffset(ind.LSTF(1):ind.LSTF(2),:);offoffset1 = wlanCoarseCFOEstimate(rxLSTF,cbw);rxSig1 = pfOffset(rxSigFreqOffset,- offset1);
从校正后的信号中提取L-LTF。估计并校正剩余频率偏移。
rxLLTF = rxSig1(ind.LLTF(1):ind.LLTF(2),:);offset2 = wlanFineCFOEstimate(rxLLTF,cbw);rxSig2 = pfOffset(rxSig1,- offset2);
提取并解调VHT-LTF。估计通道系数。
rxhtltf = rxSig2(ind.VHTLTF(1):ind.VHTLTF(2),:);demodVHTLTF = wlanvhtltf解调(rxVHTLTF,cfg);chEst = wlanVHTLTFChannelEstimate(demodVHTLTF,cfg);
从接收到并经过频率校正的PPDU中提取VHT数据字段。恢复数据字段。
rxData = rxSig2(ind.VHTData(1):ind.VHTData(2),:);rxPSDU = wlanVHTDataRecover(rxData,chEst,0.03,cfg);
计算收到的数据包的误码数。
numErr = biterr(txPSDU,rxPSDU)
numErr = 2