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

此示例显示如何测量IEEE®802.11ax的数据包错误率™ 高效(HE)单用户格式链接。

介绍

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

波形配置

HE单用户(SU)数据包是对单用户的全频段传输。HE-SU格式的传输参数使用瓦兰赫舒克对象。对象的属性包含配置。在此示例中,对象配置为20 MHz信道带宽、2个发射天线、2个空时流、无空时块编码和16-QAM速率1/2(MCS 3)。

cfgHE=wlanHESUConfig;cfgHE.ChannelBandwidth=“CBW20”;%信道带宽cfgHE.NumSpaceTimeStreams=2;%时空流的数量cfgHE.NumTransmitAntennas=2;%发射天线的数量cfgHE.APEPLength=1e3;%有效负载长度(字节)cfgHE.ExtendedRange=false;%不要使用扩展范围格式cfgHE.toneru=false;%不要使用上106音RUcfgHE.PreHESpatialMapping=false;%前HE场的空间映射cfgHE.GuardInterval=0.8;%保护间隔持续时间cfgHE.helttype=4;%HE-LTF压缩模式信道编码=“自民党”;%信道编码cfgHE.MCS=3;%调制编码方案

通道配置

在此示例中,TGax NLOS室内信道模型与延迟剖面模型B一起使用。当发射器和接收器之间的距离大于或等于5米时,模型B被视为NLOS。这将在wlanTGaxChannel.在本例中,模拟了2x2 MIMO信道。

%创建并配置TGax通道chanBW=cfgHE.ChannelBandwidth;tgaxChannel=wlanTGaxChannel;tgaxChannel.DelayProfile=“B型”; tgaxChannel.numtransmitantenas=cfgHE.numtransmitantenas;tgaxChannel.numReceive天线=2;tgaxChannel.TransmitReceiveDistance=5;%非直瞄距离(米)tgaxChannel.ChannelBandwidth=chanBW;tgaxChannel.LargeScaleFadingEffect=“没有”fs=wlanSampleRate(cfgHE);tgaxChannel.SampleRate=fs;

模拟参数

对于系统中的每个SNR点(dB)信噪比向量生成多个分组,通过信道并解调以确定分组错误率。

信噪比=10:5:35;

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

  1. 最大数字错误是在每个SNR点模拟的最大数据包错误数。当数据包错误数达到这个极限时,在这个SNR点的模拟就完成了。

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

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

最大数值误差=10;%SNR点上的最大数据包错误数maxNumPackets=100;%信噪比点的最大数据包数

处理信噪比点

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

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

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

  3. 在OFDM解调后,将AWGN添加到接收波形中,以创建每个子载波的期望平均SNR。通信信道配置为提供正确的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。

A.帕弗环路可用于并行处理SNR点,因此为每个SNR点创建并配置AWGN信道通信信道。要启用并行计算以提高速度,请注释掉下面的“for”语句并取消注释“parfor”语句。

numSNR=numel(信噪比);%信噪比点数packetErrorRate=零(1,numSNR);%获取占用子载波索引和OFDM参数ofdmInfo=wlanHEOFDMInfo(“他需要数据”,cfgHE);%从PPDU中提取字段的索引ind=WLANFIELDICES(cfgHE);%parfor isnr=1:numSNR%使用“parfor”加速模拟对于isnr=1:numSNR%每次迭代设置随机子流索引,以确保%迭代使用一组可重复的随机数stream=RandStream(“组合递归”,“种子”,99);stream.Substream=isnr;RandStream.setGlobalStream(stream);%每模拟一个SNR点创建一个AWGN信道实例awgnChannel=comm.awgnChannel;awgnChannel.NoiseMethod='信噪比(SNR)';awgnChannel.SignalPower=1/tgaxChannel.numreceive天线;%考虑以零为单位的噪声能量,因此SNR是根据%有源副载波awgnChannel.SNR=SNR(isnr)-10*log10(ofdmInfo.FFTLength/ofdmInfo.NumTones);%循环以模拟多个数据包numPacketErrors=0;numPkt=1;%传输包的索引虽然numPacketErrors<=maxnumerors&&numPkt<=maxNumPackets%使用随机PSDU生成数据包psduLength=getPSDULength(cfgHE);%PSDU长度(字节)txPSDU=randi([0 1],pModule长度*8,1);tx=WLANWaveOrmGenerator(txPSDU,cfgHE);%添加尾随零以允许信道延迟txPad=[tx;零(50,cfgHE.NumTransmitAntennas)];%通过衰落的室内TGax信道复位(TGAX通道);%不同实现的复位通道rx=tgaxChannel(txPad);%通过AWGN通道传递波形rx=AWGN信道(rx);%分组检测和确定粗分组偏移量粗糙度PKTOFFSET=WLANPACKETDERTECT(rx,chanBW);如果isempty(粗pktoffset)%如果为空,则未检测到L-STF;数据包错误numPacketErrors=numPacketErrors+1;numPkt=numPkt+1;持续;%转到下一个循环迭代终止%提取L-STF并执行粗略频率偏移校正lstf=rx(粗pktoffset+(ind.lstf(1):ind.lstf(2)),:;粗略频率=WLANCARSECOFESTIMATE(lstf,chanBW);rx=助手频率偏移(rx,fs,-频率关闭);%提取非HT字段并确定精细数据包偏移非htfields=rx(粗pktofset+(ind.LSTF(1):ind.LSIG(2)),:;精细pktofset=wlanSymbolTimingEstimate(非htfields,chanBW);%确定最终数据包偏移量pktOffset=粗pktOffset+精pktOffset;%如果检测到数据包超出预期延迟范围%信道建模;分组错误如果pktOffset>50 numPacketErrors=numPacketErrors+1;numPkt=numPkt+1;持续;%转到下一个循环迭代终止%提取L-LTF并执行精细频率偏移校正rxLLTF=rx(pktOffset+(ind.LLTF(1):ind.LLTF(2)),:;fineFreqOff=WlanfineCfoestate(rxLLTF,chanBW);rx=助手频率偏移(rx,fs,-fineFrequencyOff);%HE-LTF解调与信道估计rxHELTF=rx(pktofset+(ind.HELTF(1):ind.HELTF(2)),:);HELTFDEM=WLANHEDEMODE(rxHELTF,“HE-LTF”,cfgHE);[chanEst,pilotEst]=heLTFChannelEstimate(heltfdemm,cfgHE);%数据解调rxData=rx(pktofset+(ind.HEData(1):ind.HEData(2)),:;demosym=wlanHEDemodulate(rxData,“他需要数据”,cfgHE);%导频相位跟踪解调符号=共相位错误跟踪(解调符号、信道、cfgHE);%估计氦场中的噪声功率nVarEst=估计值(demodSym(of dminfo.PilotIndices,:,:),pilotEst,cfgHE);%从解调符号和信道中提取数据子载波%估计demodatasym=demodSym(ofdmInfo.dataindex,:,:);chanEstData=chanEst(ofdmInfo.dataindex,:,:);%均衡与空时分组码合并[eqDataSym,csi]=heEqualizeCombine(解调数据对称、信道数据、nVarEst、cfgHE);%恢复数据rxPSDU=wlanHEDataBitRecover(eqDataSym、nVarEst、csi、cfgHE、,“LDPCDecoding方法”,“分层bp”);%确定是否有任何位出错,即数据包错误packetError=~isequal(txPSDU,rxPSDU);numPacketErrors=numPacketErrors+packetError;numPkt=numPkt+1;终止%计算SNR点的数据包错误率(PER)包装错误率(isnr)=numPacketErrors/(numPkt-1);disp([“MCS”num2str(cfgHE.MCS)','...“信噪比”num2str(信噪比(isnr))...“完成后”num2str(numPkt-1)“包,”...“PER:”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

绘制数据包错误率与信噪比

图:符号学(信噪比、打包错误率、,'-*'); 持有在…上; 网格在…上; xlabel(‘信噪比(dB)’);伊莱贝尔(“PER”);dataStr=arrayfun(@(x)sprintf(“MCS%d”,x),cfgHE.MCS,“UniformOutput”,假);图例(dataStr);头衔(斯普林特)('通道%s、%s、%s、PSDULength:%d的PER',tgaxChannel.DelayProfile,cfgHE.ChannelBandwidth,cfgHE.ChannelCoding,cfgHE.APEPLength);

在每个SNR点测试的数据包数量由两个参数控制:最大数字错误maxNumPackets。对于有意义的结果,这些值应大于此示例中显示的值。例如,下图是通过使用最大数字错误:1e3和maxNumPackets:1e4。

附录

此示例使用以下帮助器函数:

精选书目

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