主要内容

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

此示例显示如何测量IEE​​E®802.11AX™高效率(HE)单用户格式链路的数据包错误率。

介绍

在此示例中,端到端模拟用于确定802.11ax的数据包错误率[1选择SNR点的单用户格式链接。在每个SNR点处,通过嘈杂的TGAX室内通道发送多个数据包,解调和PSDU恢复。将PSDU与发送以确定分组错误率的PSDU进行比较。每个分组的处理总结在下图中。

波形配置

SU (HE single user)包是对单个用户的全频带传输。HE SU格式的传输参数使用wlanHESUConfig对象。对象的属性包含配置。本例中,该对象配置为20mhz信道带宽、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。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.largescalefadingeffect ='没有任何';fs = wlanSampleRate (cfgHE);tgaxChannel。SampleRate = f;

仿真参数

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

SNR = 10:5:35;

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

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

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

在此示例中选择的数字将导致仿真非常短。对于统计上有意义的结果,我们建议增加这些数字。

maxNumErrors = 10;%SNR点的最大分组错误数maxNumPackets = 100;%一个信噪比点的最大包数

处理SNR点

对于每个SNR点,测试了许多数据包,并计算数据包错误率。802.11AX的预先序言是向后兼容802.11ac™的,因此在该示例中,VHT波形的前端同步组件用于在接收器处同步HE波形。对于每个数据包,发生以下处理步骤:

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

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

  3. 在OFDM解调后,将AWGN加入到接收波形中,以产生所需的每子载波平均信噪比。的comm.awgnchannel.对象配置为提供正确的信噪比。该配置考虑了信道内接收天线数量的归一化,以及在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。

一种议案循环可用于并行化SNR点的处理,因此对于每个SNR点,使用AWGN通道通过使用comm.awgnchannel.对象。为了使用并行计算来提高速度,请将下面的'for'语句注释掉,并取消对'parfor'语句的注释。

numsnr = numel(snr);数量的SNR点数numSNR packetErrorRate = 0 (1);%获取占用子载波指数和OFDM参数ofdmInfo = wlanHEOFDMInfo (“数据”, cfgHE);%索引从PPDU中提取字段印第安纳州= wlanFieldIndices (cfgHE);%partsnr = 1:numsnr%使用'par for'加速模拟为了ISNR = 1:NUMSNR%每次迭代设置随机子流索引,以确保每个%迭代使用可重复的随机数Stream = RANDSTREAM('幸福父母''种子',99);Stream.substream = ISNR;randstream.setglobalstream(Stream);%模拟了每个SNR点创建AWGN通道的实例Awgnchannel = comm.awgnchannel;awgnchannel.noisemethod =“信噪比”;Awgnchannel.signalpower = 1 / tgaxchannel.numreceiveantennas;%ocket用于空中的噪声能量,因此每次定义SNR%活动子载波awgnchannel.snr = snr(ISNR)-10 * log10(Ofdminfo.fftlength / ofdminfo.numtones);% Loop模拟多个数据包numpacketerrors = 0;numpkt = 1;传输的数据包%索引numpacketerrors <= maxnumerrors && numpkt <= maxnumpackets%使用随机PSDU生成数据包psdulength = getpsdulength(cfghe);% PSDU长度,以字节为单位TXPSDU = RANDI([0 1],PSDULENG * 8,1);Tx = WlanWaveFormGenerator(TXPSDU,CFGHE);%添加尾随零以允许通道延迟txpad = [tx;零(50,cfghe.numtransmitantannas)];%通过褪色室内TGAX通道重置(TGAXCHANNEL);为不同的实现重置通道rx = tgaxchannel(txpad);%通过AWGN通道传递波形rx = awgnchannel(rx);包检测并确定粗包偏移量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)),:);coarsfreqoff = wlancoarsecfoestimate(lstf,chanbw);rx = helperfrequencyOffset(RX,FS,-CoarseFreqoff);%提取非ht字段并确定精细数据包偏移量nonhtfields = rx(coarsepktoffset +(ind.lstf(1):Ind.lsig(2)),:);finepktoffset = WlanyMboltimingEstime(非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 = hechommonphaseerrortracking(Demodsym,Chanest,Cfghe);估计他领域的估计噪音力量nvarest = henoiseestimate(emodsym(Ofdminfo.pilotindices,:,:),pilotest,cfghe);从解调符号和信道中提取数据子载波% 估计emoddatasym = remodsym(Ofdminfo.dataindices,:,:);chanestdata = chanest(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,SNR 10在11个数据包之后完成,每次:1 MCS 3,SNR 15完成17个数据包,每次:0.64706 MCS 3,SNR 20完成52个数据包,每次:0.21154 MCS 3,SNR 25完成100包后,每:0.02 MCS 3,SNR 30完成100个数据包后,每:0 MCS 3,SNR 35完成100包后,每:0

绘制数据包错误率与SNR

数字;半径(SNR,Packeterrorrate,' -  *');持有;网格;Xlabel(“信噪比(dB)”);ylabel('每');dataStr = arrayfun (@ (x) sprintf ('MCS%D',x),cfghe.mcs,'统一输出'、假);传奇(dataStr);标题(sprintf ('每个人的频道%s,%s,%s,psdulength:%d',tgaxchannel.delayprofile,cfghe.channelbandwidth,cfghe.channelcoding,cfghe.apepltength));

在每个SNR点测试的数据包数由两个参数控制:maxnumerrors.maxNumPackets.对于有意义的结果,这些值应大于此示例中所呈现的值。例如,下面的图是通过运行更长的仿真来创建的maxnumerrors.:1E3和maxNumPackets:1E4。

附录

这个例子使用了以下帮助函数:

选定的书目

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