恢复过程为802.11ax包

这个例子展示了如何在接收的IEEE®802.11ax™波形检测分组和解码净荷位。接收器恢复分组格式参数从前导字段数据字段和MAC帧进行解码。

介绍

在一个802.11ax分组的发送参数是使用L-SIG,HE-SIG-A发送到接收机,和HE-SIG-B前置码字段[1]:

  • L-SIG字段包含允许接收方确定包的传输时间的信息。

  • heg - siga字段包含用于hemu用户的公共传输参数,以及用于hesu和hee - ext - su包的所有传输参数。

  • 在L-SIG的字段长度信息,调制类型,和OFDM符号中的HE-SIG-A字段中的数字的组合决定了HE分组格式。

  • 该HE-SIG-B字段包含资源单元(RU)分配信息,并且用于在HE-MU分组的用户的传输参数。

在这个例子中,我们检测和生成的波形中的解码HE-MU分组。这个例子也可以恢复HE-SU和HE-EXT-SU的数据包。所有的传输参数除了假设带宽是未知的,因此从经解码的L-SIG,HE-SIG-A中检索到的信道,和HE-SIG-B前置码字段。将回收的传输参数用于将HE-数据字段进行解码。此外,进行了如下分析:

  • 所检测的分组的波形恢复并显示。

  • 所检测的分组的频谱被回收并显示。

  • 显示所有空间流的均衡数据符号的星座。

  • 测量各场的误差矢量大小(EVM)。

  • 的A-MPDU被检测和帧校验序列(FCS)被确定为恢复的MAC帧。

  • 显示每个数据符号和平均值的副载波的空间流的EVM。

  • 每一数据子载波和空间流的EVM平均值的符号被显示。

波形传播

在这个例子中一个802.11ax HE-MU波形被合成但可以使用所捕获的波形。您可以使用MATLAB®从大范围与仪器控制工具箱™和软件定义无线电平台的仪器获得的I / Q数据。

合成的波形是通过2×2 TGax室内衰落信道,加性高斯白噪声,以及载波频率偏移损害。以生成HE-MU波形我们配置的HE-MU格式配置对象wlanHEMUConfig。注意,wlanHEMUConfig配置对象仅在发射机侧使用。接收器将配制的HE恢复配置对象wlanHERecoveryConfig。恢复配置对象的未知属性是在对L-SIG、HE- siga和HE- sigb字段中的信息位进行解码后设置的。辅助函数heSigRecGenerateWaveform产生受损的波形。执行以下处理步骤:

  • 的MSDU的随机有效载荷的MAC帧,这是编码成HE-MU分组创建。

  • 该波形通过TGax室内衰落信道模型。

  • 载波频率偏移(CFO)和加性高斯白噪声(AWGN)添加到波形。

%的混合OFDMA和MU-MIMO的配置是用于HE-MU分组定义。%的分配索引17所限定两台52色调的RU,在每一个用户%RU,和一个106-音调RU。的106色调RU具有两个用户在MU-MIMO%配置。cfgMU = wlanHEMUConfig(17);cfgMU.NumTransmitAntennas = 2;%配置RU 1和用户1cfgMU.RU {1} = .SpatialMapping'直接';cfgMU.User {1} .STAID = 1;cfgMU.User {1} = .APEPLength 1E3;cfgMU.User {1} .MCS = 5;cfgMU.User {1} .NumSpaceTimeStreams = 2;cfgMU.User {1} = .ChannelCoding“方法”;%配置RU 2和用户2cfgMU.RU {2}。SpatialMapping =“傅立叶”;cfgMU.User {2} .STAID = 2;cfgMU.User {2} .APEPLength = 500;cfgMU.User {2} .MCS = 4;cfgMU.User {2} .NumSpaceTimeStreams = 1;cfgMU.User {2} = .ChannelCoding“* *”;%配置RU 3和用户1cfgMU.RU {3}。SpatialMapping =“傅立叶”;cfgMU.User {3} .STAID = 3;cfgMU.User {3} .APEPLength = 100;cfgMU.User {3} .MCS = 2;cfgMU.User {3} .NumSpaceTimeStreams = 1;cfgMU.User {3} = .ChannelCoding“* *”;%配置RU 3和用户2cfgMU.User {4}。稳重的= 4;cfgMU.User {4}。一个PEPLength = 500; cfgMU.User{4}.MCS = 3; cfgMU.User{4}.NumSpaceTimeStreams = 1; cfgMU.User{4}.ChannelCoding =“方法”;%指定的传播信道numRx = 2;%的接收天线的数目delayProfile ='型号-d';%TGax信道延迟分布%指定障碍noisePower = -40;在dBW中应用的噪声功率CFO = 62e3;%载波频率偏移Hz%生成波形RX = heSigRecGenerateWaveform(cfgMU,numRx,delayProfile,noisePower,CFO);

丢包恢复

要处理的信号存储在变量中处方。的处理步骤,以恢复分组是:

  • 的HE恢复配置对象,wlanHERecoveryConfig被创建。对象属性随着前导字段的解码而更新。

  • 的分组中检测和同步。

  • 提取并解调L-LTF。解调后的L-LTF码元不包括如[描述为每个20MHz的段色调旋转221.3.7.5],部分。

  • 解调后的L-LTF码元用于信道和噪声估计。

  • 含有样品相当于紧接L-LTF以下四个OFDM符号的时域信号被用来确定在HE分组格式。数据包格式在更新wlanHERecoveryConfig宾语。

  • L-LTF被解调。解调的L-LTF符号包括[221.3.7.5],部分。的L-LTF的信道估计(具有色调旋转)被用于预HE-LTF解码。

  • 在L-SIG和RL-SIG字段提取。所述信道估计对每个子信道的额外个子载波的L-SIG和RL-SIG字段。被更新的L-LTF的信道估计包括在额外的子载波的信道估计。

  • 在L-SIG字段中的信息比特被回收,以确定在几微秒的分组的长度。

  • 后HE-SIG-A解码,恢复配置对象与用于HE-MU分组公共传输参数和HE-SU所有的传输参数和HE-EXT-SU分组更新。

  • 对于HE-MU分组格式的HE-SIG-B字段进行解码。对于非压缩SIGB波形HE-SIGB公共字段被解码的第一后跟HE-SIGB用户字段。对于压缩SIGB波形只有HE-SIGB用户字段进行解码。

  • 对于没有SIGB压缩的HE-MU格式RU分配和用户传输参数从HE-SIGB字段回收。对于压缩SIGB波形RU分配信息从HE-SIG-A字段推断和用户传输参数从HE-SIGB用户字段位决定。

  • wlanHERecoveryConfig对象是在heg - b解码后使用每个用户的恢复传输参数创建的。

  • 提取和解调hef - ltf字段。解调符号用于信道估计分配给感兴趣用户的子载波。MIMO信道估计用于解码HE-Data字段。

  • 方法提取出HE-Data字段并恢复PSDU位wlanHERecoveryConfig对象为每个用户。

  • 回收的PSDU内检测A-MPDU,并检查FCS为恢复的MAC帧。

设置波形恢复参数

在这个例子中从信道带宽开所有的传输参数被假定为是未知的,并且将被恢复。甲恢复配置对象,wlanHERecoveryConfig时,创建存储在所述L-SIG,HE-SIG-A所恢复的信息,和HE-SIG-B前置码字段。在传输特性wlanHERecoveryConfig前导码字段的后续解码之后被更新。下面的代码配置对象和处理变量。

chanBW = cfgMU.ChannelBandwidth;假设信道带宽已知SR = wlanSampleRate(cfgMU);% 采样率%创建HE恢复配置对象,并设置信道带宽cfgRx = wlanHERecoveryConfig;cfgRx.ChannelBandwidth = chanBW;%回收率配置对象是用来获取的开始和结束预HE-SIG-B字段的%索引。IND = wlanFieldIndices(cfgRx);为示例设置绘图(简介、timeScope ConstellationDiagram、EVMPerSubcarrier EVMPerSymbol] = heSigRecSetupPlots (sr);%最小分组长度是10个OFDM符号lstfLength =双(ind.LSTF(2));minPktLen = lstfLength * 5;在L-STF样品的%数rxWaveLen =大小(rx, 1);
警告:MATLAB连接器没有运行。警告:MATLAB连接器没有运行。

前端处理

前端处理包括包检测,粗略载波频率偏移校正,定时同步,和精细的载波频率偏移校正的。一个回路用于所接收的波形中检测和同步的分组。样本偏移searchOffset被用于索引到处方以检测的分组。内第一个数据包处方检测并处理。如果检测到的包的同步失败,样本索引偏移量searchOffset是否递增以超越处理过的包处方。重复这个过程,直到成功地检测并同步了一个包。

searchOffset = 0;从%样品中波形的开始偏移(searchOffset + minPktLen) <= rx小波%数据包检测pktOffset = wlanPacketDetect (rx chanBW searchOffset);%调整分组偏移pktOffset = searchOffset + pktOffset;如果的isEmpty(pktOffset)||(pktOffset + ind.LSIG(2)> rxWaveLen)误差('**未检测到数据包**');结束%粗频率使用L-STF偏移估计和校正rxLSTF = rx (pktOffset + (ind.LSTF (1): ind.LSTF (2)),:);coarseFreqOffset = wlanCoarseCFOEstimate (rxLSTF chanBW);rx = helperFrequencyOffset (rx、sr、-coarseFreqOffset);%符号定时同步searchBufferLLTF = RX(pktOffset +(ind.LSTF(1):ind.LSIG(2)),:);pktOffset = pktOffset + wlanSymbolTimingEstimate(searchBufferLLTF,chanBW);使用L-STF进行精细频偏估计和校正rxLLTF = rx (pktOffset + (ind.LLTF (1): ind.LLTF (2)),:);fineFreqOffset = wlanFineCFOEstimate (rxLLTF chanBW);rx = helperFrequencyOffset (rx、sr、-fineFreqOffset);%定时同步完成:检测到数据包fprintf中('在索引%d\n'检测到数据包,pktOffset + 1);%显示估计出的载波频率偏移cfoCorrection = coarseFreqOffset + fineFreqOffset;%总CFOfprintf中('估计CFO:%5.1f赫兹\ n \ n',cfoCorrection);打破;%前端处理完成时,停止搜索分组结束%比例基于L-STF功率波形(AGC)增益= 1./(sqrt(mean(rxLSTF.*conj(rxLSTF))));RX = RX *增益。
分组在索引404估计CFO检测:61942.9赫兹

数据包格式检测

与L-LTF紧接的四个OFDM符号等价的时域样本用于确定数据包格式[1图27 - 63]。提取并解调L-LTF。对于格式检测,解调的L-LTF符号必须不包括[221.3.7.5],部分。解调后的L-LTF用于信道和噪声估计。L-LTF信道(没有音调旋转)和噪声功率估计用于检测数据包格式。

rxLLTF = rx (pktOffset + (ind.LLTF (1): ind.LLTF (2)),:);lltfDemod = wlanLLTFDemodulate (rxLLTF chanBW);lltfChanEst = wlanLLTFChannelEstimate (lltfDemod chanBW);noiseVar = helperNoiseEstimate (lltfDemod);disp (“检测报文格式...”);rxSIGA = rx (pktOffset + (ind.LSIG (1): ind.HESIGA (2)),:);pktFormat = wlanFormatDetect (rxSIGA lltfChanEst、noiseVar chanBW);fprintf中('%s的分组中检测\ n \ n',pktFormat);%设置在回收对象的报文格式和更新域指数cfgRx。PacketFormat = pktFormat;IND = wlanFieldIndices(cfgRx);
检测数据包格式…HE-MU包检测

L-LTF信道估计

解调L-LTF和执行信道估计。解调的L-LTF符号包括[221.3.7.5],部分。L-LTF信道估计(带音调旋转)用于均衡和解码pre-HE-LTF字段。

lltfDemod = wlanHEDemodulate(rxLLTF,'L-LTF',chanBW);lltfChanEst = wlanLLTFChannelEstimate(lltfDemod,chanBW);

L-SIG和RL-SIG解码

在L-SIG字段用于确定接收时间,或RXTIME,分组的。所述RXTIME是使用L-SIG有效载荷的长度的比特来计算。在L-SIG和RL-SIG字段恢复到上的L-SIG和RL-SIG字段中的额外副载波执行信道估计。该lltfChanEst被更新的信道估计包括关于在L-SIG和RL-SIG字段额外副载波的信道估计。在L-SIG的有效载荷使用从L-LTF字段中得到的信道和噪声功率的估计解码。在L-SIG长度场所在wlanHERecoveryConfigL-SIG解码之后被更新。

disp ('解码L-SIG ......');%提取物L-SIG和RL-SIG字段rxLSIG = RX(pktOffset +(ind.LSIG(1):ind.RLSIG(2)),:);%OFDM解调helsigDemod = wlanHEDemodulate(rxLSIG,“L-SIG”,chanBW);估计CPE和相位校正符号helsigDemod = preHECommonPhaseErrorTracking(helsigDemod,lltfChanEst,“L-SIG”,chanBW);每个子信道和额外的4个子载波%的估计信道创建完整%的信道估计preheInfo = wlanHEOFDMInfo(“L-SIG”,chanBW);preHEChanEst = preHEChannelEstimate(helsigDemod,lltfChanEst,preheInfo.NumSubchannels);平均L-SIG和RL-SIG在均衡前helsigDemod =平均(helsigDemod,2);平衡数据携带子载波,合并20兆赫子信道[eqLSIGSym, csi] = preHESymbolEqualize (helsigDemod (preheInfo.DataIndices,:,)preHEChanEst (preheInfo.DataIndices::), noiseVar, preheInfo.NumSubchannels);%解码L-SIG字段[〜,failCheck,lsigInfo] = wlanLSIGBitRecover(eqLSIGSym,noiseVar,CSI);如果failCheck DISP(' ** L-SIG检查失败**');其他disp ('L-SIG检查通');结束%获得从回收的L-SIG比特的长度信息,并更新恢复配置对象的% L-SIG长度属性lsigLength = lsigInfo.Length;cfgRx。LSIGLength = LSIGLength;测量L-SIG符号的EVM维生素与= comm.EVM;维生素。ReferenceSignalSource =“从参考星座估计”;维生素。归一化=“平均星座力量”;EVM.ReferenceConstellation = wlanReferenceSymbols('BPSK');rmsEVM = EVM(eqLSIGSym);fprintf中(' L-SIG EVM: %2.2fdB\n\n',20 *日志10(rmsEVM / 100));%计算的接收时间和样品的数目对应于%包RXTime =小区((lsigLength + 3)/ 3)* 4 + 20;%在微秒numRxSamples = round(RXTime * 1e-6 * sr);在时间样本的数量%fprintf中('RXTIME:%DUS \ N',RXTime);fprintf中(“样本数目:%d\n\n”,numRxSamples);
解码L-SIG……L-SIG检查通过L-SIG EVM: -36.91dB RXTIME: 536us数据包中样品数量:10720

其中检测到的数据包的波形和频谱处方被显示的给定所计算的RXTIME和样品的相应数量。

sampleOffset = MAX(( -  lstfLength + pktOffset),1);%第一个标绘索引sampleSpan = numRxSamples + 2*lstfLength;%样本数以阴谋%绘制尽可能多的数据包(和额外的样本),我们可以plotIdx = sampleOffset:分钟(sampleOffset + sampleSpan,rxWaveLen);配置timeScope以显示数据包timeScope.TimeSpan = sampleSpan / SR;timeScope.TimeDisplayOffset = sampleOffset / SR;timeScope.YLimits = [0最大(ABS(RX(:)))];时间波谱(ABS(RX(plotIdx,:)));释放(时间波谱);显示检测到的数据包的频谱spectrumAnalyzer(RX(pktOffset +(1:numRxSamples),:));释放(spectrumAnalyzer);

HE-SIG-A解码

该HE-SIG-A字段包含一个HE分组的传输配置。从L-LTF中得到的信道和噪声功率的估计需要将HE-SIG-A字段进行解码。

disp (“解码HE-SIG-A…”)rxSIGA = RX(pktOffset +(ind.HESIGA(1):ind.HESIGA(2)),:);sigaDemod = wlanHEDemodulate(rxSIGA,'HE-SIG-A',chanBW);hesigaDemod = preHECommonPhaseErrorTracking (sigaDemod preHEChanEst,'HE-SIG-A',chanBW);平衡数据携带子载波,合并20兆赫子信道preheInfo = wlanHEOFDMInfo('HE-SIG-A',chanBW);[eqSIGASym, csi] = preHESymbolEqualize (hesigaDemod (preheInfo.DataIndices,:,)preHEChanEst (preheInfo.DataIndices,:,)noiseVar preheInfo.NumSubchannels);恢复heg - siga位[sigaBits, failCRC] = wlanHESIGABitRecover (eqSIGASym noiseVar, csi);%的HE-SIG-A位执行CRC如果failCRC DISP(' ** he - siga - CRC fail **');其他disp (' he - siga CRC pass');结束%测量heg - siga符号的EVM释放(维生素);如果比较字符串(pktFormat'HE-EXT-SU'su包的heg - siga字段的第二个符号是% QBPSK。EVM.ReferenceConstellation = wlanReferenceSymbols('BPSK',[0 PI / 2 0 0]);为L-LTF的缩放用于HE-EXT-SU分组%帐户rmsEVM = EVM(eqSIGASym * SQRT(2));其他EVM.ReferenceConstellation = wlanReferenceSymbols('BPSK');rmsEVM = EVM(eqSIGASym);结束fprintf中('HE-SIG-A EVM:%2.2fdB \ n \ n',20 * log10(平均(rmsEVM) / 100));
解码HE-SIG-A……heg - siga CRC pass heg - siga EVM: -35.17dB

解释回收HE-SIG-A位

wlanHERecoveryConfig对象在解释恢复的he - siga位之后更新。

cfgRx = interpretHESIGABits(cfgRx,sigaBits);IND = wlanFieldIndices(cfgRx);%更新字段索引

显示从HE-MU包的he - siga字段获得的公共传输配置。由-1表示的属性是未知的或未定义的。在成功解码heg - sigb字段之后,将更新与用户相关的未知属性。

disp (cfgRx)
wlanHERecoveryConfig与属性:PacketFormat: 'HE-MU' ChannelBandwidth: 'CBW20' LSIGLength:383 SIGBCompression:0 SIGBMCS:0 SIGBDCM:0 NumSIGBSymbolsSignaled:5 STBC:0 LDPCExtraSymbol:0 PreFECPaddingFactor:4 PEDisambiguity:0 GuardInterval:3.2000 HELTFType:4个NumHELTFSymbols:2 UplinkIndication:0 BSSColor:0 SpatialReuse:0 TXOPDuration:127 HighDoppler:0 AllocationIndex:-1 NumUsersPerContentChannel:-1 RUTotalSpaceTimeStreams:-1 RUSize:-1 RUIndex:-1 STAID:-1 MCS:-1 DCM:-1 ChannelCoding: '未知' 波束形成:-1 NumSpaceTimeStreams:-1 SpaceTimeStreamStartingIndex:-1

HE-SIG-B解码

对于一个HE-MU包,he - sigb字段包含:

  • 对于非压缩SIGB波形RU分配信息从HE-SIGB普通字段推断[1表。27-23]。对于压缩SIGB波形RU分配信息推断从回收的HE-SIG-A位。

  • 对于非压缩SIGB波形的数目HE-SIGB符号在更新wlanHERecoveryConfig宾语。如果HE-SIG-B的符号的数目在HE-SIG-A字段被设置为15表示,并且所有内容信道通过CRC的符号只更新。HE-SIG-B的符号数指示的HE-SIG-A字段如果任何HE-SIG-B内容信道失败CRC不更新。

  • 压缩两个SIGB用户传输参数和非压缩波形从HE-SIGB用户字段推断[1表,27-25 27 - 26]。

从L-LTF中得到的信道和噪声功率的估计需要将HE-SIG-B字段进行解码。

如果比较字符串(pktFormat'HE-MU')fprintf中('解码HE-SIG-B ... \ N');如果~ cfgRx。SIGBCompression流('解码HE-SIG-B共用字段... \ N');S = getSIGBLength(cfgRx);%获取公共字段符号。HE-SIG-B字段的开始是已知的rxSym = RX(pktOffset +(ind.HESIGA(2)+(1:s.NumSIGBCommonFieldSamples)),:);%解码heg - sigb公共字段(地位、cfgRx) = heSIGBCommonFieldDecode (rxSym、preHEChanEst noiseVar, cfgRx);% CRC在heg - b内容通道上如果比较字符串(状态,'成功')fprintf中('HE-SIG-B(共用字段)CRC通\ N');elseif比较字符串(状态,'ContentChannel1CRCFail')fprintf中(' **内容通道-1\n **'失效);elseif比较字符串(状态,'ContentChannel2CRCFail')fprintf中('** HE-SIG-B CRC失败内容通道2 \ n **');elseif任何(的strcmp(状态,{'UnknownNumUsersContentChannel1''UnknownNumUsersContentChannel2'}))错误(“**未知数据包长度,丢弃数据包\n **”);其他%丢弃如果所有HE-SIG-B的内容信道失败的分组错误(' ** he - sigb CRC fail **');结束%更新字段索引作为HE-SIG-B的符号的数目是% 更新IND = wlanFieldIndices(cfgRx);结束%得到完整的HE-SIG-B字段样品rxSIGB = rx (pktOffset + (ind.HESIGB (1): ind.HESIGB (2)),:);fprintf中('解码HE-SIG-B用户字段... \ N');% Decode heg - b用户字段[failCRC,cfgUsers] = heSIGBUserFieldDecode(rxSIGB,preHEChanEst,noiseVar,cfgRx);对heg - sigb用户的% CRC如果〜所有(failCRC)fprintf中('HE-SIG-B(用户字段)CRC通\ n \ n');NUMUSERS = numel(cfgUsers);elseif所有(failCRC)%丢弃该数据包,如果所有用户都失败了CRC错误('** HE-SIG-B的CRC失败的所有用户**');其他fprintf中('** HE-SIG-B CRC失败的至少一个用户\ n **');%只能处理有效CRC用户NUMUSERS = numel(cfgUsers);结束其他% HE-SU, HE-EXT-SUcfgUsers = {cfgRx};NUMUSERS位= 1;结束
解码HE-SIG-B……译码heg - sigb共域…heg - sigb(公共字段)CRC通过解码heg - sigb用户字段…heg - sigb(用户字段)CRC通道

数据解码

更新wlanHERecoveryConfig然后,可以使用每个用户的对象来恢复每个用户在HE-Data字段中的PSDU位。

fprintf中(“解码数据。\ n”);对于IU = 1:NUMUSERS为每个用户%获取恢复配置对象用户= cfgUsers {IU};如果比较字符串(pktFormat'HE-MU')fprintf中('解码用户:%d, STAID:%d, RUSize:%d\n'、iu user.STAID user.RUSize);其他fprintf中(的译码RUSize:%d \ n',user.RUSize);结束% HE-LTF解调和信道估计rxHELTF = RX(pktOffset +(ind.HELTF(1):ind.HELTF(2)),:);heltfDemod = wlanHEDemodulate(rxHELTF,'HE-LTF'chanBW user.GuardInterval,user.HELTFType,[user.RUSize user.RUIndex]);[CHANEST,pilotEst] = heLTFChannelEstimate(heltfDemod,用户);%HE-数据解调RXDATA = RX(pktOffset +(ind.HEData(1):ind.HEData(2)),:);demodSym = wlanHEDemodulate(RXDATA,'HE-数据'chanBW user.GuardInterval,[user.RUSize user.RUIndex]);%试验相位跟踪。平均单流导频估计超过%符号(第二尺寸)pilotEstTrack =意味着(飞行员,2);demodSym = heCommonPhaseErrorTracking (demodSym、pilotEstTrack、用户);估计田野中的噪音功率heInfo = wlanHEOFDMInfo('HE-数据',user.GuardInterval chanBW[用户。RUSize user.RUIndex]);demodPilotSym = demodSym (heInfo.PilotIndices,:,);据nvar = heNoiseEstimate (demodPilotSym、飞行员、用户);%平衡[eqSym, csi] = heEqualizeCombine (demodSym,成龙、据nvar、用户);丢弃引导副载波eqSymUser = eqSym(heInfo.DataIndices,:,:);csiData = CSI(heInfo.DataIndices,:);%解映射和解码位rxPSDU = wlanHEDataBitRecover(eqSymUser,nVarEst,csiData,用户“LDPCDecodingMethod”'分层-BP');%解聚的A-MPDU[mpduList,〜,状态] = wlanAMPDUDeaggregate(rxPSDU,wlanHESUConfig);如果比较字符串(状态,'成功')fprintf中(“A-MPDU解聚集成功\n”);其他fprintf中('A-MPDU解聚集不成功\ N');结束%解码的MPDU的列表,并检查每个MPDU的FCS对于I = 1:numel(mpduList)[〜,〜,状态] = wlanMPDUDecode(mpduList {I},wlanHESUConfig,“DataFormat”“八位字节”);如果比较字符串(状态,'成功')fprintf中(' FCS pass for MPDU:%d\n',一世);其他fprintf中('FCS失败MPDU:%d \ n',一世);结束结束%剧情均衡星座的回收用于所有HE数据符号%每个用户的空间流hePlotEQConstellation (eqSymUser、用户、ConstellationDiagram iu, numUsers);测量HE-Data符号的EVM释放(维生素);EVM.ReferenceConstellation = wlanReferenceSymbols(user); rmsEVM = EVM(eqSymUser(:)); fprintf('HE-数据EVM:%2.2fdB \ n \ n',20 *日志10(rmsEVM / 100));%绘制恢复后的数据符号的每个符号的EVMhePlotEVMPerSymbol(eqSymUser,用户,EVMPerSymbol,IU,NUMUSERS位);%绘制每个恢复后的HE数据符号子载波的EVMhePlotEVMPerSubcarrier(eqSymUser,用户,EVMPerSubcarrier,IU,NUMUSERS位);结束
解码HE-数据...解码用户:1,STAID:1,RUSize:52 A-MPDU解聚集成功FCS通作MPDU:1 HE-数据EVM:-28.86dB解码用户:2,STAID:2,RUSize:52A-MPDU解聚集成功FCS通作MPDU:1 HE-数据EVM:-39.68dB解码用户:3,STAID:3,RUSize:106 A-MPDU解聚集成功FCS通作MPDU:1 HE-数据EVM:-28.22dB解码用户:4,STAID:4,RUSize:106 A-MPDU解聚集成功FCS通作MPDU:1 HE-数据EVM:-31.69dB

最后一个用户的每个符号的EVM和数据符号的子载波如下所示。

附录

此示例使用以下辅助功能:

选择的参考书目

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

  2. IEEE标准802.11™-2016 IEEE信息技术标准 - 本地和城域网 - - 具体要求 - 第11部分系统间远程通信和信息交换:无线局域网媒体访问控制(MAC)和物理层(PHY)规格。