主要内容

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;%不要使用高于106音RUcfgHE。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 = cfgHE.ChannelBandwidth;tgaxChannel = wlanTGaxChannel;tgaxChannel。DelayProfile =“b型”;tgaxChannel。NumTransmitAntennas = cfgHE.NumTransmitAntennas;tgaxChannel。NumReceiveAntennas = 2;tgaxChannel。TransmitReceiveDistance = 5;% NLOS的距离以米为单位tgaxChannel。ChannelBandwidth = chanBW;tgaxChannel。LargeScaleFadingEffect ='没有任何';tgaxchannel.normalizechanneloutpuls = false;fs = wlansamplerge(cfghe);TGAXCHANNEL.SAMPLEDE = FS;

仿真参数

对于每个SNR点(DB)SNR.矢量生成若干数据包,通过信道和解调来确定数据包错误率。

SNR = 10:5:35;

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

  1. maxnumerrors.为每个信噪比点模拟的最大包错误数。当包错误数达到该限制时,此信噪比点的仿真就完成了。

  2. maxNumPackets为每个信噪比点上模拟的最大报文数,并在未达到包错误限制时限制模拟的长度。

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

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

处理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。

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

numsnr = numel(snr);%信噪比点数numSNR packetErrorRate = 0 (1);%获取已占用子载波指标和OFDM参数ofdmInfo = wlanHEOFDMInfo ('他是数据', cfgHE);%从PPDU中提取字段的索引印第安纳州= wlanFieldIndices (cfgHE);%parcor = 1:numsnr%使用'par for'加速模拟为了isnr = 1: numSNR%每次迭代设置随机子流索引,以确保每个%迭代使用一组可重复的随机数流= RandStream ('幸福的陪审'“种子”,99);Stream.substream = ISNR;randstream.setGlobalstream(Stream);%考虑噪声能量为零,因此信噪比定义为%活跃副载波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);包检测并确定粗包偏移量chanBW coarsePktOffset = wlanPacketDetect (rx);如果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 = 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 = 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,成龙,cfgHE);估算HE领域的噪声功率据nvar = heNoiseEstimate (demodSym (ofdmInfo.PilotIndices,:,:),飞行员,cfgHE);从解调符号和信道中提取数据子载波%的估计demodDataSym = demodSym (ofdmInfo.DataIndices,:,);chanEstData =成龙(ofdmInfo.DataIndices,:,);%均衡和STBC合并[eqDataSym, csi] = heEqualizeCombine (demodDataSym chanEstData,据nvar, cfgHE);%恢复数据据nvar rxPSDU = wlanHEDataBitRecover (eqDataSym, csi, cfgHE,“LDPCDecodingMethod”“layered-bp”);%确定是否有任何位错误,即数据包错误packetError = ~ isequal (txPSDU rxPSDU);numPacketErrors = numPacketErrors + packetError;numpkt = numpkt + 1;结尾%计算SNR点的数据包错误率(每个)packeterrorrate(isnr)= numpacketerrors /(numpkt-1);DISP([“主持人”num2str(cfghe.mcs)”、“...“信噪比”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

绘制包错误率与信噪比

图;packetErrorRate semilogy(信噪比,“- *”);抓住;网格;Xlabel('snr(db)');ylabel ('每');dataStr = arrayfun (@ (x) sprintf (“MCS % d ', cfgHE x)。MCS,“UniformOutput”,错误的);传奇(数据组织);标题(Sprintf('PER for HE Channel %s, %s, %s, PSDULength: %d',tgaxchannel.delayprofile,cfghe.channelbandwidth,cfghe.channelcoding,cfghe.apeploding));

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

附录

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

选定的参考书目

  1. IEEE P802.11ax™/ D4.1信息技术标准草案——电信和信息交换系统之间-本地和市区网络特定需求-第11部分:无线局域网介质访问控制(MAC)和物理层(体育)规范-第六修正案:高效WLAN的增强。