主要内容

802.11ax包错误率模拟单用户格式

这个例子展示了如何测量IEEE®802.11ax™高效率(HE)单用户格式链路的包错误率。

介绍

在本例中,端到端仿真用于确定802.11ax [1单用户格式链接用于选择信噪比点。在每个信噪比点,多个包通过一个有噪声的TGax室内信道传输,解调和PSDUs恢复。PSDUs与传输的PSDUs进行比较,以确定包错误率。下面的图表总结了每个包的处理过程。

波形的配置

HE单个用户(SU)数据包是单个用户的全频带传输。使用SU格式的发送参数使用wlanhauconfig对象。对象的属性包含配置。在该示例中,对象被配置为20MHz信道带宽,2个发送天线,2个时空流,没有空间时间块编码和16-QAM速率-1 / 2(MCS 3)。

cfghe = wlanhauconfig;cfghe.channelbandwidth =“CBW20”%通道带宽cfgHE。NumSpaceTimeStreams = 2;%空间流的数量cfghe.numtransmitantennas = 2;%发送天线数cfgHE。一个PEPLength = 1e3;%有效负载长度,以字节为单位cfgHE。ExtendedRange = false;%不使用扩展范围格式cfghe.upper106toneru = false;%不要使用高于106音RUcfghe.prehepatialmapping = false;预先田地的%空间映射cfgHE。GuardInterval = 0.8;保护间隔时间cfgHE。HELTFType = 4;% HE-LTF压缩模式cfgHE。ChannelCoding =“方法”%信道编码cfgHE。MCS = 3;%调制和编码方案

通道配置

在该示例中,TGAX NLOS室内通道模型用于延迟配置文件Model-B。当发射器和接收器之间的距离大于或等于5米时,模型-B被认为是NLO。这进一步描述了wlanTGaxChannel.在此示例中模拟了2x2 MIMO通道。

%创建并配置TGax通道chanBW = cfgHE.ChannelBandwidth;tgaxChannel = wlanTGaxChannel;tgaxChannel。DelayProfile ='model-b';tgaxChannel。NumTransmitAntennas = cfgHE.NumTransmitAntennas;tgaxChannel。NumReceiveAntennas = 2;tgaxChannel。TransmitReceiveDistance = 5;对于nlos的百分米距离tgaxChannel。ChannelBandwidth = chanBW;tgaxChannel。LargeScaleFadingEffect =“没有”;fs = wlansamplerge(cfghe);tgaxchannel.samplere = fs;

仿真参数

的每个信噪比点(dB)SNR.矢量生成若干数据包,通过信道和解调来确定数据包错误率。

信噪比= 10:5:35;

每个信噪比点测试的包数由两个参数控制:

  1. maxNumErrors为每个信噪比点模拟的最大包错误数。当包错误数达到该限制时,此信噪比点的仿真就完成了。

  2. maxnumpackets.为每个信噪比点上模拟的最大报文数,并在未达到包错误限制时限制模拟的长度。

在这个例子中选择的数字将导致一个非常短的模拟。对于统计上有意义的结果,我们建议增加这些数字。

maxnumerrors = 10;%一个信噪比点的最大包错误数maxnumpackets = 100;%SNR点的最大数据包数

处理信噪比点

对每个信噪比点测试多个包并计算包错误率。802.11ax的前置HE前导与802.11ac™向后兼容,因此在本例中,VHT波形的前端同步组件用于同步接收机的HE波形。对于每个包,将执行以下处理步骤:

  1. 一个PSDU被创建并被编码以创建单个数据包波形。

  2. 波形通过室内TGAX通道模型。不同的频道实现是针对不同数据包进行建模的。

  3. AWGN被添加到接收的波形中以在OFDM解调之后创建每个子载波的所需平均SNR。当comm.AWGNChannel对象配置为提供正确的SNR。该配置通过在OFDM解调期间除去的未使用子载波中的接收天线数和未使用的子载波中的噪声能量来进行归一化。

  4. 检测到数据包。

  5. 估计并校正粗载波频偏。

  6. 确定精细的时序同步。提供L-STF,L-LTF和L-SIG样本用于精细定时,以允许在L-STF的开始或结尾处进行分组检测。

  7. 估计和校正细载波频率偏移。

  8. 从同步接收波形中提取HE-LTF。对HE-LTF进行OFDM解调并进行信道估计。

  9. 从同步接收波形中提取数据场并进行OFDM解调。

  10. 执行公共相位误差导频跟踪以跟踪任何残差载波频率偏移。

  11. 噪声估计使用解调数据场导频和导频子载波的单流信道估计。

  12. 相位校正的OFDM符号用信道估计均衡。

  13. 对均衡的符号进行解调和解码以恢复PSDU。

一个parfor环路可用于并行处理信噪比点,因此针对每个信噪比点,使用comm.AWGNChannel对象。要使并行计算的使用增加速度评论出“for”声明,并取消注释下面的“栏杆”声明。

numSNR =元素个数(信噪比);%信噪比点数packeterrorrate = zeros(1,numsnr);%获取已占用子载波指标和OFDM参数Ofdminfo = wlanheofdminfo('他是数据', cfgHE);%从PPDU中提取字段的索引IND = WLANFIELDINDIDICES(CFGHE);%parfor isnr = 1:numSNR %使用“parfor”加速模拟isnr = 1: numSNR%迭代设置随机子流索引,以确保每个%迭代使用一组可重复的随机数流= RandStream (“combRecursive”“种子”, 99);流。Substream = isnr;RandStream.setGlobalStream(流);%创建一个AWGN信道实例每个SNR点模拟awgnChannel = comm.AWGNChannel;awgnChannel。NoiseMethod ='信噪比(SNR)';awgnChannel。SignalPower = 1 / tgaxChannel.NumReceiveAntennas;%考虑噪声能量为零,因此信噪比定义为%活跃副载波awgnChannel。信噪比=信噪比(isnr) -10 * log10 (ofdmInfo.FFTLength / ofdmInfo.NumTones);%循环以模拟多个数据包numPacketErrors = 0;numPkt = 1;%发送的数据包索引numPacketErrors < = maxNumErrors & & numPkt < = maxNumPackets%生成随机PSDU的数据包psduLength = getPSDULength (cfgHE);%PSDU长度为字节txPSDU = randi([0 1],psduLength*8,1);tx = wlanWaveformGenerator (txPSDU cfgHE);添加尾随零以允许通道延迟txPad = [tx;0 (50, cfgHE.NumTransmitAntennas)];%通过衰落的室内TGax信道重置(tgaxChannel);用于不同实现的%重置通道rx = tgaxChannel (txPad);%将波形通过AWGN通道rx = awgnChannel (rx);%数据包检测并确定粗分组偏移量chanBW coarsePktOffset = wlanPacketDetect (rx);如果isempty (coarsePktOffset)%如果空不检测到L-STF;包错误numPacketErrors = numPacketErrors + 1;numPkt = numPkt + 1;继续%进入下一个循环迭代结束%提取L-STF并进行粗频偏校正lstf = rx (coarsePktOffset + (ind.LSTF (1): ind.LSTF (2)),:);coarseFreqOff = wlanCoarseCFOEstimate (lstf chanBW);rx = helperFrequencyOffset (rx, fs -coarseFreqOff);%提取非HT字段并确定精细数据包偏移量nonhtfields = rx (coarsePktOffset + (ind.LSTF (1): ind.LSIG (2)),:);finePktOffset = wlanSymbolTimingEstimate (nonhtfields chanBW);%确定最终数据包偏移量pktOffset = coarsePktOffset + finePktOffset;%如果数据包被检测出,且从%通道建模;包错误如果pktoffset> 50 numpacketerrors = numpacketerrors + 1;numPkt = numPkt + 1;继续%进入下一个循环迭代结束%提取L-LTF并进行精细的频率偏移校正rxLLTF = rx (pktOffset + (ind.LLTF (1): ind.LLTF (2)),:);fineFreqOff = wlanFineCFOEstimate (rxLLTF chanBW);rx = helperFrequencyOffset (rx, fs -fineFreqOff);HE-LTF解调和信道估计rxHELTF = rx (pktOffset + (ind.HELTF (1): ind.HELTF (2)),:);heltfDemod = wlanHEDemodulate (rxHELTF,“HE-LTF”, cfgHE);(陈,飞行员)= heLTFChannelEstimate (heltfDemod cfgHE);%数据解调rxdata = rx(pktoffset +(ind.hedata(1):Ind.hedata(2)),:);emodsym = wlanhedemodulate(rxdata,'他是数据', cfgHE);导频相位跟踪demodSym = heCommonPhaseErrorTracking (demodSym,成龙,cfgHE);估算HE领域的噪声功率据nvar = heNoiseEstimate (demodSym (ofdmInfo.PilotIndices,:,:),飞行员,cfgHE);%从解调的符号和通道中提取数据子载波%的估计demodDataSym = demodSym (ofdmInfo.DataIndices,:,);chanEstData =成龙(ofdmInfo.DataIndices,:,);%均衡和STBC合并[eqdatasym,csi] = heequalizeCombine(Demoddatasym,Chanestdata,Nvarest,Cfghe);%恢复数据据nvar rxPSDU = wlanHEDataBitRecover (eqDataSym, csi, cfgHE,“LDPCDecodingMethod”“layered-bp”);%确定是否有任何位错误,即数据包错误Packeterror =〜Isequal(TXPSDU,RXPSDU);numpacketerrors = numpacketerrors + packeterror;numPkt = numPkt + 1;结束%计算信噪比点的包错误率packetErrorRate (isnr) = numPacketErrors / (numPkt-1);disp ([“主持人”num2str (cfgHE.MCS)','...“信噪比”num2str(SNR(ISNR))...“完成后”num2str (numPkt-1)“包”,...'每:'num2str(packeterrorrate(ISNR))]);结束
MCS 3,信噪比10完成11包,之后每:1 MCS 3、信噪比后15完成17个数据包,每:0.64706 MCS 3,信噪比20 52包完成后,每:0.21154 MCS 3,信噪比25 100包完成后,每:0.02 MCS 3,信噪比30 100包完成后,每:0 MCS 3,信噪比35 100包完成后,每:0

绘制包错误率与信噪比

图;packetErrorRate semilogy(信噪比,“- *”);持有;网格;包含(“信噪比(dB)”);ylabel (“每”);data口= arrayfun(@(x)sprintf(“MCS % d ', cfgHE x)。MCS,“UniformOutput”、假);传奇(dataStr);标题(sprintf ('PER for HE Channel %s, %s, %s, PSDULength: %d', cfgHE.ChannelBandwidth tgaxChannel.DelayProfile cfgHE.ChannelCoding cfgHE.APEPLength));

每个信噪比点测试的包数由两个参数控制:maxNumErrorsmaxnumpackets..对于有意义的结果,这些值应该大于本例中所示的值。作为一个例子,下面的图是通过使用maxNumErrors: 1 e3和maxnumpackets.: 1 e4。

附录

此示例使用以下辅助功能:

选定的参考书目

  1. IEEE P802.11ax™/ D4.1信息技术标准草案——电信和信息交换系统之间-本地和市区网络特定需求-第11部分:无线局域网介质访问控制(MAC)和物理层(体育)规范-第六修正案:高效WLAN的增强。