主要内容

用于单用户格式的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.LARGESCALEFADEFFECT ='没有任何';tgaxchannel.normalizechanneloutpuls = false;fs = wlansamplerge(cfghe);TGAXCHANNEL.SAMPLEDE = FS;

仿真参数

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

SNR = 10:5:35;

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

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

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

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

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

处理SNR点

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

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

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

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

  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 = numel(snr);%SNR点数numSNR packetErrorRate = 0 (1);%获得占用子载波指数和OFDM参数ofdmInfo = wlanHEOFDMInfo ('他是数据',cfghe);从PPDU中提取字段的%索引印第安纳州= wlanFieldIndices (cfgHE);%parcor = 1:numsnr%使用'par for'加速模拟为了ISNR = 1:NUMSNR%每次迭代设置随机子流索引,以确保每个%迭代使用可重复的随机数Stream = randstream('幸福的陪审''种子',99);Stream.substream = ISNR;randstream.setGlobalstream(Stream);%ocket用于null中的噪声能量,因此每次定义SNR%活动子载波packetSNR =信噪比(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],psdulength * 8,1);Tx = WlanWaveFormGenerator(TXPSDU,CFGHE);%添加尾随零以允许通道延迟txpad = [tx;零(50,cfghe.numtransmitantannas)];%通过褪色室内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);[Chanest,Pilotest] = 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);从解调符号和信道中提取数据子载波% 估计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('snr(db)');ylabel('每');dataStr = arrayfun (@ (x) sprintf ('MCS%D',x),cfghe.mcs,'统一输出',错误的);传奇(数据组织);标题(Sprintf(“每个人都是频道%s,%s,%s,psdulength:%d',tgaxchannel.delayprofile,cfghe.channelbandwidth,cfghe.channelcoding,cfghe.apeploding));

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

附录

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

选定的参考书目

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