主要内容

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

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

简介

在本例中,使用端到端模拟来确定802.11ax的包错误率[1]单用户格式链接,以选择信噪比点。在每个信噪比点,多个包通过有噪声的TGax室内信道传输,解调并恢复psdu。将psdu与传输的psdu进行比较,以确定数据包错误率。下图总结了每个包的处理过程。

波形的配置

SU (HE single user packet)报文是对单个用户的全频带传输。HE SU格式的传输参数使用wlanHESUConfig对象。对象的属性包含配置。在本例中,该对象配置为20 MHz信道带宽、2个发射天线、2个空时流、无空时块编码和16-QAM速率-1/2 (MCS 3)。

cfgHE = wlanHESUConfig;cfgHE。ChannelBandwidth =“CBW20”通道带宽%cfgHE。NumSpaceTimeStreams = 2;%时空流个数cfgHE。numtransmitantenna = 2;%发射天线个数cfgHE。一个PEPLength = 1e3;负载长度(以字节为单位)cfgHE。ExtendedRange = false;不要使用扩展范围格式cfgHE。Upper106ToneRU = false;不使用106调以上的俄服cfgHE。PreHESpatialMapping = false;pre-HE字段的空间映射cfgHE。GuardInterval = 0.8;防护间隔时间%cfgHE。HELTFType = 4;HE-LTF压缩模式cfgHE。ChannelCoding =“方法”%信道编码cfgHE。MCS = 3;调制和编码方案

通道配置

在本例中,使用TGax NLOS室内信道模型和延迟剖面模型- b。当发射机和接收机之间的距离大于或等于5米时,模型b被认为是NLOS。这将在中进一步描述wlanTGaxChannel.本例模拟了一个2x2 MIMO通道。

创建和配置TGax通道chanBW = cfgh . channelbandwidth;tgaxChannel = wlanTGaxChannel;tgaxChannel。DelayProfile =“b型”;tgaxChannel。numtransmitantenna = cfgh . numtransmitantenna;tgaxChannel。numreceiveantenna = 2;tgaxChannel。TransmitReceiveDistance = 5;%距离(以米为单位)tgaxChannel。ChannelBandwidth = chanBW;tgaxChannel。LargeScaleFadingEffect =“没有”;tgaxChannel。NormalizeChannelOutputs = false;fs = wlanSampleRate(cfgHE);tgaxChannel。SampleRate = fs;

仿真参数

的每个信噪比点(dB)信噪比生成若干矢量包,通过信道并解调以确定包错误率。

信噪比= 10:5:35;

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

  1. maxNumErrors为每个信噪比点模拟的最大包错误数。当报文错误数达到该限制值时,该信噪比点的模拟结束。

  2. maxNumPackets是在每个信噪比点上模拟的最大数据包数,如果没有达到数据包错误限制,则限制模拟的长度。

本例中选择的数字将导致一个非常短的模拟。为了获得统计上有意义的结果,我们建议增加这些数字。

maxNumErrors = 10;在一个信噪比点上的最大错误包数maxNumPackets = 100;一个信噪比点的最大包数

处理信噪比点

对于每个信噪比点,将测试若干数据包,并计算数据包错误率。802.11ax的pre-HE导文向后兼容802.11ac™,因此在本例中,VHT波形的前端同步组件用于在接收机处同步HE波形。对于每个包,会发生以下处理步骤:

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

  2. 波形通过室内TGax通道模型传递。不同的信道实现为不同的包建模。

  3. 将AWGN添加到接收的波形中,以在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环路可用于并行化处理信噪比点。为了使用并行计算来提高速度,注释掉'for'语句并取消注释下面的'parfor'语句。

numSNR = numel(snr);信噪比百分比packketerrorrate = 0 (1,numSNR);获取占用子载波指数和OFDM参数ofdmInfo = wlanHEOFDMInfo(“数据”, cfgHE);%索引从PPDU中提取字段ind = wlanFieldIndices(cfgHE);%parfor isnr = 1:numSNR %使用'parfor'加快模拟速度isnr = 1:numSNR每次迭代设置随机子流索引,以确保每个子流的索引迭代使用一组可重复的随机数流= RandStream(“combRecursive”“种子”, 99);流。Substream = isnr;RandStream.setGlobalStream(流);%考虑噪声能量为空,因此信噪比定义为有源子载波百分比packetSNR = snr(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 = txxchannel (txPad);通过AWGN通道传递波形rx = awgn(rx,packetSNR);包检测和确定粗包偏移coarsePktOffset = wlanPacketDetect(rx,chanBW);如果isempty (coarsePktOffset)%如果为空,未检测到L-STF;包错误numPacketErrors = numPacketErrors+1;numPkt = numPkt+1;继续%转到下一次循环迭代结束提取L-STF并进行粗频偏校正lstf = rx(coarsePktOffset+(ind.LSTF(1):ind.LSTF(2)),:);粗freqoff = wlan粗secfoestimate (lstf,chanBW);rx = frequencyOffset(rx,fs,-粗freqoff);提取非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 = frequencyOffset(rx,fs,-fineFreqOff);HE-LTF解调和信道估计rxHELTF = rx(pktOffset+(ind.HELTF(1):ind.HELTF(2)),:);heltfDemod = wlanHEDemodulate(rxHELTF,“HE-LTF”, cfgHE);[chanEst,pilotEst] = heLTFChannelEstimate(heltfDemod,cfgHE);数据解调rxData = rx(pktOffset+(ind.HEData(1):ind.HEData(2)),:);demodSym = wlanHEDemodulate(rxData,“数据”, cfgHE);导频相位跟踪demodSym = wlanHETrackPilotError(demodSym,chanEst,cfgHE,“数据”);估计HE场的噪声功率nVarEst = heNoiseEstimate(demodSym(ofdmInfo.PilotIndices,:,:),pilotEst,cfgHE);从解调的符号和信道中提取数据子载波%的估计demodDataSym = demodSym(ofdinfo . dataindices,:,:);chanEstData = chanEst(ofdinfo . dataindices,:,:);%平衡和STBC结合[eqDataSym,csi] = heEqualizeCombine(demodDataSym,chanEstData,nVarEst,cfgHE);%恢复数据rxPSDU = wlanHEDataBitRecover(eqDataSym,nVarEst,csi,cfgHE,“LDPCDecodingMethod”“layered-bp”);确定是否有任何位错误,即数据包错误。packetError = ~isequal(txPSDU,rxPSDU);numPacketErrors = numPacketErrors+packetError;numPkt = numPkt+1;结束计算信噪比点的包错误率(PER)packeterrors (isnr) = numPacketErrors/(numPkt-1);disp ([“主持人”num2str (cfgHE.MCS)','...“信噪比”num2str(信噪比(isnr))...“完成后”num2str (numPkt-1)“包”,...“每:”num2str (packetErrorRate (isnr))));结束
MCS 3, 11包后信噪比10,PER:1 MCS 3, 17包后信噪比15,PER:0.64706 MCS 3, 52包后信噪比20,PER:0.21154 MCS 3, 100包后信噪比25,PER:0.02 MCS 3, 100包后信噪比30,PER:0 MCS 3, 100包后信噪比35,PER:0

图包错误率与信噪比

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

在每个信噪比点上测试的包数由两个参数控制:maxNumErrors而且maxNumPackets.对于有意义的结果,这些值应该大于本例中显示的值。作为一个例子,下图是通过运行一个较长的模拟创建的maxNumErrors: 1 e3和maxNumPackets: 1 e4。

附录

本例使用了以下helper函数:

选定的参考书目

  1. IEEE标准802.11ax™-2021。IEEE信息技术标准。系统间的电信和信息交换。局域网和城域网。特殊要求。第11部分:无线局域网介质访问控制(MAC)和物理层(PHY)规范。修改件1:高效WLAN的增强。