主要内容

用于单用户格式的802.11AX数据包错误速率模拟

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

介绍

在此示例中,端到端模拟用于确定802.11ax的分组错误率[1单个用户格式链接,用于选择信噪比点。在每个信噪比点,多个数据包通过嘈杂的TGax室内信道传输,解调并恢复psu。将psd与传输的psd进行比较,以确定数据包错误率。下面的图总结了每个包的处理过程。

波形的配置

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

cfgHE = wlanHESUConfig;cfgHE。ChannelBandwidth ='CBW20'% 信道带宽cfghe.numspacetimestreams = 2;%时空流数量cfgHE。NumTransmitAntennas = 2;%发射天线数cfgHE。一个PEPLength = 1e3;%有效负载长度(以字节为单位)cfghe.extendedRange = false;%不要使用扩展范围格式cfgHE。Upper106ToneRU = false;%不要使用upper 106 tone rucfgHE。PreHESpatialMapping = false;% pre-HE字段的空间映射cfgHE。GuardInterval = 0.8;%保护间隔持续时间cfgHE。HELTFType = 4;% HE-LTF压缩模式cfghe.channelcoding ='LDPC'%信道编码cfghe.mcs = 3;调制和编码方案

通道配置

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

%创建并配置TGax通道chanbw = cfghe.channelbandwidth;tgaxchannel = wlantgaxchannel;tgaxchannel.delayprofile =“b型”;tgaxchannel.numtransmitantennas = cfghe.numtransmitantennas;tgaxchannel.numreceiveantennas = 2;tgaxchannel.transmitreceivedistance = 5;% NLOS距离(米)TGAXCHANNEL.CHANNELBANDWIDTH = CHANBW;TGAXCHANNEL.LARGESCALEFADEFFECT =“没有”;tgaxChannel。NormalizeChannelOutputs = false;fs = wlanSampleRate (cfgHE);tgaxChannel。SampleRate = f;

仿真参数

对于每一个信噪比点(dB)信噪比向量生成多个数据包,通过通道并解调以确定数据包错误率。

信噪比= 10:5:35;

在每个SNR点测试的数据包数由两个参数控制:

  1. maxNumErrors是每个SNR点模拟的最大分组错误数。当数据包错误的数量达到此限制时,此SNR点处的模拟已完成。

  2. maxNumPackets是在每个SNR点处模拟的最大数据包数,并限制模拟的长度如果未达到数据包错误限制。

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

maxNumErrors = 10;%SNR点处的最大数据包错误数maxNumPackets = 100;%SNR点的最大数据包数

处理信噪比点

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

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

  2. 该波形通过一个室内TGax通道模型。不同的信道实现为不同的数据包建模。

  3. 在OFDM解调后,AWGN被添加到接收波形中,以创建每个有源子载波所需的平均信噪比。

  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。

一个par循环可用于并行处理的信噪比点。为了使用并行计算来提高速度,注释掉下面的'for'语句并取消对'parfor'语句的注释。

numSNR =元素个数(信噪比);%SNR点数numSNR packetErrorRate = 0 (1);%获得占用子载波指数和OFDM参数ofdmInfo = wlanHEOFDMInfo (“数据”, cfgHE);从PPDU中提取字段的%索引印第安纳州= wlanFieldIndices (cfgHE);%parfor isnr = 1:numSNR %使用'parfor'来加速模拟ISNR = 1:NUMSNR设置每个迭代的随机子流索引,以确保每个%迭代使用可重复的随机数Stream = randstream(“combRecursive”'种子', 99);流。Substream = isnr;RandStream.setGlobalStream(流);%ocket用于null中的噪声能量,因此每次定义SNR%活动子载波packetSNR =信噪比(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 = 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)),:);coarsefreqoff = wlancoarsecfoestimate(LSTF,Chanbw);rx = helperfrequencyoffset(rx,fs,-coarsefreqoff);%提取非ht字段,确定细包偏移量nonhtfields = rx(coarsepktoffset +(ind.lstf(1):Ind.lsig(2)),:);finepktoffset = Wlanymboltimingestimate(非Hantfields,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)),:);demodSym = wlanHEDemodulate (rxData,“数据”, cfgHE);%导频阶段跟踪Demodsym = HeCommOnphaseErrortracking(Demodsym,Chanest,Cfghe);估计他领域的噪音力量nvarest = henoiseestimate(remodsym(Ofdminfo.pilotindices,:,:),pilotest,cfghe);从解调符号和信道中提取数据子载波% 估计demodDataSym = demodSym (ofdmInfo.DataIndices,:,);chanEstData =成龙(ofdmInfo.DataIndices,:,);%均衡和STBC组合[eqDataSym, csi] = heEqualizeCombine (demodDataSym chanEstData,据nvar, cfgHE);%恢复数据rxpsdu = wlanhedatabitrocover(eqdatasym,nvarest,csi,cfghe,'ldpcdecodingmethod''分层BP');%确定是否有错误,即数据包错误packetError = ~ isequal (txPSDU rxPSDU);numPacketErrors = numPacketErrors + packetError;numPkt = numPkt + 1;结束%计算SNR点的包错误率packetErrorRate (isnr) = numPacketErrors / (numPkt-1);disp (['MCS'num2str (cfgHE.MCS)”、“......'snr'num2str(信噪比(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

绘图数据包错误率与SNR

数字;半机(SNR,Packeterrorrate,' -  *');持有;网格;包含(“信噪比(dB)”);ylabel(“每”);dataStr = arrayfun (@ (x) sprintf ('MCS%D',x),cfghe.mcs,'统一输出'、假);传奇(dataStr);标题(sprintf (“每个人都是频道%s,%s,%s,psdulength:%d', cfgHE.ChannelBandwidth tgaxChannel.DelayProfile cfgHE.ChannelCoding cfgHE.APEPLength));

在每个SNR点测试的数据包数由两个参数控制:maxNumErrorsmaxNumPackets.对于有意义的结果,这些值应该大于本例中给出的值。作为示例,下面的图是通过运行一个较长的模拟来创建的maxNumErrors: 1 e3和maxNumPackets:1E4。

附录

本示例使用了以下帮助函数:

选定的参考书目

  1. IEEE P802.11AX™/ D4.1信息技术标准草案 - 系统之间的电信和信息交流 - 本地和大都市区域网络 - 特定要求 - 第11部分:无线LAN介质访问控制(MAC)和物理层(PHY)规格 -修订6:高效WLAN的增强。