主要内容

802.11ax报文的恢复过程

这个例子展示了如何在接收到的IEEE®802.11ax™波形中检测数据包并解码有效载荷位。接收端从前置字段中恢复报文格式参数,对数据字段和MAC帧进行解码。

介绍

在一个802.11ax包中,传输参数使用L-SIG、HE-SIG-A和HE-SIG-B前导字段向接收器发出信号[1]:

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

  • HE-SIG-A字段包含HE-MU用户的公共传输参数以及HE-SU和HE-EXT-SU数据包的所有传输参数。

  • L-SIG字段中的长度信息的组合,调制类型以及HE-SIG-A字段中的OFDM符号的数量确定了他的数据包格式。

  • HE-SIG-B字段包含资源单元(RU)分配信息和HE-MU数据包中用户的传输参数。

在这个例子中,我们检测和解码一个HE-MU包内产生的波形。本示例还可以恢复HE-SU和HE-EXT-SU包。除了信道带宽之外,所有的传输参数都假定是未知的,因此从解码的L-SIG、HE-SIG-A和HE-SIG-B前导字段中检索。恢复的传输参数用于解码HE-Data字段。此外,还进行了以下分析:

  • 恢复并显示检测到的数据包的波形。

  • 检测到的分组的频谱被恢复并显示。

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

  • 测量每个字段的误差矢量幅度(EVM)。

  • 检测到一个A-MPDU,并对恢复的MAC帧确定帧检查序列(FCS)。

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

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

波形传输

在本例中,一个802.11ax HE-MU波形被合成,但您可以使用捕获的波形。您可以使用MATLAB®从仪器控制工具箱™和软件定义的无线电平台广泛的仪器获取I/Q数据。

合成的波形由2x2 Tgax室内衰落通道,添加白色高斯噪声和载波频率偏移损害。要生成HE-MU波形,我们配置HE-MU格式配置对象Wlanhemuconfig.请注意,Wlanhemuconfig配置对象仅在发射器侧使用。接收方将制定他恢复配置对象wlanherecoveryconfig.对L-SIG、HE- sig - a、HE- sig - b字段的信息位进行解码后设置HE恢复配置对象的未知属性。辅助函数heSigRecGenerateWaveform产生受损的波形。处理步骤如下:

  • 为MAC帧创建一个MSDUs的随机负载,该负载被编码到HE-MU包中。

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

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

为HE-MU包定义了混合OFDMA和MU-MIMO配置。%分配索引17定义了两个52音的RUs,每个RUs中有一个用户%毛,和一个106音毛。106音RU在MU-MIMO中有两个用户%的配置。cfgMU = wlanHEMUConfig (17);cfgMU。NumTransmitAntennas = 2;%配置RU 1和用户1cfgMU.RU{1}。SpatialMapping =“直接”;cfgMU.User{1}。稳重的= 1;cfgMU.User{1}。一个PEPLength = 1e3; cfgMU.User{1}.MCS = 5; cfgMU.User{1}.NumSpaceTimeStreams = 2; cfgMU.User{1}.ChannelCoding ='ldpc'%配置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}。稳重的= 3;cfgMU.User{3}。一个PEPLength = 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 ='ldpc'%指定传播信道numRx = 2;%接收天线数delayProfile =“模型”% TGax通道延迟配置文件%指定障碍noisePower = -40;%噪音功率适用于dBW首席财务官= 62年e3;%载频偏移Hz%生成波形rx = heSigRecGenerateWaveform (cfgMU numRx、delayProfile noisePower, cfo);

包复苏

要处理的信号存储在变量中处方.恢复报文的处理步骤如下:

  • 他恢复配置对象,wlanherecoveryconfig被创建。对象属性会随着序言字段的解码而更新。

  • 报文被检测并同步。

  • 提取L-LTF并解调。解调的L-LTF符号不包括每个20 MHz段的音调旋转,如[221.3.7.5],部分。

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

  • 时域信号包含的采样相当于紧跟着L-LTF的四个OFDM符号,用来确定HE包格式。报文格式更新wlanherecoveryconfig对象。

  • L-LTF被解调。解调的L-LTF符号包括每个20 MHz段的音调旋转,如[221.3.7.5],部分。L-LTF信道估计(带音调旋转)被用来解码pre-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-SIG-B公共场,然后解码HE-SIG-B用户场。对于压缩的SIGB波形,只有HE-SIG-B用户域被解码。

  • 对于没有SIGB压缩的HE-MU格式,从HE-SIG-B字段中恢复了RU分配和用户传输参数。对于压缩的SIGB波形,从HE-SIG-A字段推断出RU分配信息,并且用户传输参数由HE-SIG-B用户字段比特确定。

  • wlanherecoveryconfig对象使用HE-SIG-B解码后为每个用户恢复的传输参数创建。

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

  • 提取HE-DATA字段,使用PSDU位使用wlanherecoveryconfig对象为每个用户。

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

设置波形恢复参数

在这个例子中,除了信道带宽之外的所有传输参数都假定是未知的,并将被恢复。恢复配置对象,wlanherecoveryconfig,创建以将恢复的信息存储在L-SIG,HE-SIG-A和HE-SIG-B前导字段中。传输属性wlanherecoveryconfig在对前导字段进行后续解码后更新。下面的代码配置对象和变量以进行处理。

chanBW = cfgMU.ChannelBandwidth;%假设信道带宽是已知的sr = wlanSampleRate (cfgMU);%采样率%指定用于恢复数据字段的导频跟踪方法。这可以是:% 'Joint' -使用联合的共同相位误差和采样率偏移跟踪% 'CPE' -只使用常见的相位误差跟踪%在恢复26音RUs时,仅使用CPE跟踪作为关节%跟踪算法易受噪声的影响。pilottracking ='联合的'%创建HE恢复配置对象并设置通道带宽cfgRx = wlanHERecoveryConfig;cfgRx。ChannelBandwidth = chanBW;%恢复配置对象用于获取开始和结束pre-HE-SIG-B字段的%索引。印第安纳州= wlanFieldIndices (cfgRx);举例的%设置图(简介、timeScope ConstellationDiagram、EVMPerSubcarrier EVMPerSymbol] = heSigRecSetupPlots (sr);%最小数据包长度为10个OFDM符号lstfLength =双(ind.LSTF (2));minPktLen = lstfLength * 5;% L-STF样本数rxwavelen =尺寸(rx,1);

前端处理

前端处理包括包检测、粗载波频偏校正、定时同步和细载波频偏校正。一个循环用于检测和同步接收波形内的分组。样品偏移searchOffset用于索引到处方检测报文。里面的第一个包处方被检测和处理。如果检测到的报文同步失败,则采样索引偏移searchOffset递增以超越已处理的数据包处方.这将一直重复,直到成功检测到数据包并同步。

searchOffset = 0;样品中波形开始的偏移量(SearchOffset + minpktlen)<= rxwavelen%包检测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 Hz\n\n”, cfoCorrection);打破%前端处理完成,停止搜索数据包结束基于L-STF功率的波形缩放(AGC)获得= 1. /(√(平均(rxLSTF。*连词(rxLSTF))));rx = rx。*增益;
在索引404检测到的数据包估计CFO: 61942.9 Hz

数据包格式检测

当等于L-LTF之后的四个OFDM符号的时域样本用于确定HE分组格式[1图27 - 63]。提取L-LTF并解调。对于格式检测,解调的L-LTF符号必须不包括每个20 MHz段的音调旋转,如[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;印第安纳州= wlanFieldIndices (cfgRx);
检测数据包格式...检测到HE-MU数据包

L-LTF信道估计

解调L-LTF并进行信道估计。解调的L-LTF符号包括每个20 MHz段的音调旋转,如[221.3.7.5],部分。L-LTF信道估计(具有音调旋转)用于均衡和解码预先预见的原点。

lltfDemod = wlanHEDemodulate (rxLLTF,“L-LTF”, chanBW);lltfchanest = wlanlltfchannelestimate(lltfdemod,chanbw);

L-SIG和RL-SIG解码

L-SIG字段用于确定数据包的接收时间或Rxtime。使用L-SIG有效载荷的长度位来计算RXTIME。恢复L-SIG和RL-SIG字段以执行L-SIG和RL-SIG字段中的额外子载波的信道估计。这lltfChanEst信道估计更新,包括在L-SIG和RL-SIG领域的额外子载波的信道估计。L-SIG有效载荷使用从L-LTF场获得的信道和噪声功率的估计进行解码。L-SIG长度属性wlanherecoveryconfig在L-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 =前熟(Helsigdemod,Lltfchanest,Preheinfo.numsubChannels);均值之前平均L-SIG和RL-SIGHelsigdemod =卑鄙(Helsigdemod,2);%均衡数据携带子载波,合并20 MHz子信道[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.Normalization =.'平均星座力量';维生素。ReferenceConstellation = wlanReferenceSymbols (“BPSK”);rmsevm = EVM(eqlsigsym);fprintf(' L-SIG EVM: %2.2fdB\n\n', 20 * log10 (rmsEVM / 100));%计算接收时间和对应的样本数量%数据包RXTime = cell ((lsigLength + 3)/3) * 4 + 20;微秒内%numrxsamples = round(rxtime * 1e-6 * sr);百分比样本数量fprintf(“RXTIME: % du \ n”,Rxtime);fprintf('包中的样本数量:%d\n\n', numRxSamples);
解码L-SIG ... L-SIG CHECK PASS L-SIG EVM:-36.91DB RXTIME:536US在包中的样本数量:10720

在检测到的数据包内的波形和频谱处方给出计算出的RXTIME和相应的样本数量。

SampleOffset = MAX(( -  lstflength + pktoffset),1);%绘制的第一个索引samplespan = numrxsamples + 2 * lstflength;%数量样本要绘制尽可能多地标记包装(和额外的样品)plotIdx = sampleOffset:min(sampleOffset + sampleespan,rxWaveLen);%配置Timescope以显示数据包timeScope。时间间隔= sampleSpan / sr;timeScope。TimeDisplayOffset = sampleOffset / sr;timeScope。YLimits = [0 max(abs(rx(:))]; / / rx(:)timeScope (abs (rx (plotIdx,:)));释放(timeScope);%显示检测到的数据包的频谱简介(rx (pktOffset + (1: numRxSamples):));释放(简介);

HE-SIG-A解码

HE- sig - a字段表示HE报文的传输配置。为了解码HE-SIG-A场,需要估计从L-LTF获得的信道和噪声功率。

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 MHz子信道Preheinfo = wlanheofdminfo(“HE-SIG-A”, chanBW);[eqSIGASym, csi] = preHESymbolEqualize (hesigaDemod (preheInfo.DataIndices,:,)...预先掌精(Preheinfo.dataindices,::),...noiseVar preheInfo.NumSubchannels);%恢复HE-SIG-A位[sigabits,failecrc] = wlanhigabitrocover(eqsigasym,noisevar,csi);%对HE-SIG-A位进行CRC校验如果FAILCRC DISP('** he-sig-a crc失败**');其他的disp (“HE-SIG-A CRC pass”);结束%测量HE-SIG-A符号的EVM释放(维生素);如果Strcmp(PKTFormat,“HE-EXT-SU”HE-ST-SU数据包的HE-SIG-A字段的第二个符号是% QBPSK。维生素。ReferenceConstellation = wlanReferenceSymbols (“BPSK”,[0 pi / 2 0 0]);对于HE-EXT-SU数据包的L-LTF缩放的%帐户RMSEVM = EVM(EQSIGASYM * SQRT(2));其他的维生素。ReferenceConstellation = wlanReferenceSymbols (“BPSK”);RMSEVM = EVM(EQSIGASYM);结束fprintf(' HE-SIG-A EVM: %2.2fdB\n\n',20 * log10(平均值(rmsevm)/ 100));
解码He-sig-a ...他-sig-a crc通过he-sig-a EVM:-35.17db

解释恢复的HE-SIG-A位

wlanherecoveryconfig在解释恢复的HE-SIG-A位后更新对象。

cfgRx = interpretHESIGABits (cfgRx sigaBits);印第安纳州= wlanFieldIndices (cfgRx);%更新字段索引

显示HE-MU报文从HE-SIG-A字段获取的通用传输配置。-1表示的属性是未知或未定义的。成功解码HE-SIG-B字段后,更新未知的用户相关属性。

DISP(CFGRX)
wlanHERecoveryConfig属性:PacketFormat:“HE-MU”ChannelBandwidth:“CBW20”LSIGLength: 383 SIGBCompression: 0 SIGBMCS: 0 SIGBDCM: 0 NumSIGBSymbolsSignaled: 5方式: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: 'Unknown'波束形成:-1 NumSpaceTimeStreams: -1 SpaceTimeStreamStartingIndex: -1

He-Sig-B解码

对于HE-MU数据包,HE-SIG-B字段包含:

  • 非压缩SIGB波形的RU分配信息是从HE-SIG-B公共域推断出来的[1表。27-23]。对于压缩的SIGB波形,RU分配信息是从恢复的HE-SIG-A位推断出来的。

  • 对于一个非压缩的SIGB波形,HE-SIG-B符号的数量在wlanherecoveryconfig对象。只有当HE-SIG-A字段中指定的HE-SIG-B符号数为15且所有内容通道通过CRC校验时,才会更新这些符号。如果任何HE-SIG-B内容通道未通过CRC校验,则HE-SIG-A字段中HE-SIG-B符号数不更新。

  • 从HE-SIG-B用户字段推导出SIGB压缩和非压缩波形的用户传输参数[1表,27-25 27 - 26]。

需要从L-LTF获得的信道和噪声功率来解码HE-SIG-B字段。

如果Strcmp(PKTFormat,'he-mu')流(“解码HE-SIG-B…\ n”);如果〜cfgrx.sigbcompression fprintf('解码HE-SIG-B共域…\n');s = getSIGBLength (cfgRx);%获取常用字段符号。HE-SIG-B领域的开始是已知的rxSym = rx (pktOffset + (ind.HESIGA (2) + (1: s.NumSIGBCommonFieldSamples)),:);%解码he-sig-b公共领域(地位、cfgRx) = heSIGBCommonFieldDecode (rxSym、preHEChanEst noiseVar, cfgRx);HE-SIG-B内容通道% CRC如果Strcmp(状态,“成功”)流(' HE-SIG-B (common field) CRC pass\n');eleesif.Strcmp(状态,“ContentChannel1CRCFail”)流('** HE-SIG-B CRC对内容频道-1 \ n **'失败);eleesif.Strcmp(状态,“ContentChannel2CRCFail”)流('** HE-SIG-B CRC对内容频道-2 \ n **'失败);eleesif.任何(strcmp(stract,{'Unknownnumuserscontentchannel1'“UnknownNumUsersContentChannel2”})) 错误(' **未知包长度,丢弃包\n **');其他的如果所有HE-SIG-B内容通道失败,%丢弃数据包错误(' ** HE-SIG-B CRC失败**');结束%按照HE-SIG-B符号的数量更新字段索引%更新印第安纳州= wlanFieldIndices (cfgRx);结束获得完整的HE-SIG-B现场样品rxsigb = rx(pktoffset +(ind.hahaigb(1):Ind.HOSIGB(2)),:);fprintf(“解码HE-SIG-B用户域……\ n”);%解码he-sig-b用户字段[eftercrc,cfgusers] = hesigbuserfielddecode(rxsigb,preheche,noisevar,cfgrx);HE-SIG-B用户的百分比CRC如果〜所有(FAILCRC)FPRINTF('he-sig-b(用户字段)crc pass \ n');numUsers =元素个数(cfgUsers);eleesif.全部(FAILCRC)如果所有用户失败CRC,%将丢弃数据包错误(' **所有用户HE-SIG-B CRC失败**');其他的fprintf(' ** HE-SIG-B CRC失败,至少一个用户\n **');%仅处理具有有效CRC的用户numUsers =元素个数(cfgUsers);结束其他的He-su%he-sucfgUsers = {cfgRx};numUsers = 1;结束
解码He-Sig-B ...解码He-Sig-B公共场... He-Sig-B(公共场)CRC通过解码He-Sig-B用户字段...... He-Sig-B(用户字段)CRC通过

数据解码

更新后的wlanherecoveryconfig对象用于在HE-Data字段中恢复每个用户的PSDU位。

cfgdatarec = trackingrecoveryconfig;cfgdatarec.pilottracking = pilottracking;fprintf(“解码数据。\ n”);国际单位= 1:numUsers为每个用户获取恢复配置对象用户= cfgUsers {iu};如果Strcmp(PKTFormat,'he-mu')流('解码用户:%d,staid:%d,rusize:%d \ n',iu,user.staid,user.rusize);其他的fprintf(“解码RUSize: % d \ n”, user.RUSize);结束heInfo = wlanHEOFDMInfo (“数据”, user.GuardInterval chanBW[用户。RUSize user.RUIndex]);HE-LTF解调和信道估计rxheltf = rx(pktoffset +(ind.heltf(1):Ind.heltf(2)),:);heltfdemod = wlanhedemodulate(rxheltf,“HE-LTF”、chanBW用户。GuardInterval,...user.HELTFType[用户。RUSize user.RUIndex]);(陈,飞行员)= heLTFChannelEstimate (heltfDemod、用户);%期望数据OFDM符号数symlen = heinfo.fftlength + heinfo.cplength;numofdmsym =(ind.hedata(2)-ind.hedata(1)+1)/ symlen;% he数据解调与导频相位和时序跟踪从数据包中提取数据字段时,%帐户%为采样率偏移跟踪。可能需要额外的样品,如果接收时钟明显快于发送时钟。maxSRO = 120;百万分之一不=装天花板(e-6 numRxSamples * maxSRO * 1);%额外样本数量Ne = min (Ne、rxWaveLen-numRxSamples);%限于波形长度numRxSamplesProcess = numRxSamples +东北;rxData = rx (pktOffset + (ind.HEData (1): numRxSamplesProcess),:);如果user.rusize == 26.仅作为算法易感算法,%力CPE仅跟踪26色调ru%到噪音cfgdatarec.pilottracking =.'CPE'其他的cfgdatarec.pilottracking = pilottracking;结束[emodsym,cpe,peg] = hetrackingofdmdemodulate(rxdata,chanest,numofdmsym,用户,cfgdatarec);估计他领域的估计噪音力量demodPilotSym = demodSym (heInfo.PilotIndices,:,);据nvar = heNoiseEstimate (demodPilotSym、飞行员、用户);%均衡[eqSym, csi] = heEqualizeCombine (demodSym,成龙、据nvar、用户);%丢弃试点子载波eqSymUser = eqSym (heInfo.DataIndices,:,);csiData = csi (heInfo.DataIndices:);% Demap和解码位据nvar rxPSDU = wlanHEDataBitRecover (eqSymUser, csiData,用户,“LDPCDecodingMethod”'分层BP');%deagregge a-mpdu[mpduList、~、状态]= wlanAMPDUDeaggregate (rxPSDU wlanHESUConfig);如果Strcmp(状态,“成功”)流(' A-MPDU解聚成功\n');其他的fprintf('a-mpdu deaggregation不成功\ n');结束%解码MPDU列表并检查每个MPDU的FCSi = 1:numel(mpdulist)[〜,〜,status] = wlanmpdudecode(mpdulist {i},wlanhauconfig,“DataFormat”“八位位组”);如果Strcmp(状态,“成功”)流('FCS用于MPDU:%d \ n',我);其他的fprintf(' FCS failed for MPDU:%d\n',我);结束结束%绘制所有恢复的HE数据符号的均衡星座图每个用户的%空间流hePlotEQConstellation (eqSymUser、用户、ConstellationDiagram iu, numUsers);%测量HE-DATA符号的EVM释放(维生素);维生素。ReferenceConstellation = wlanReferenceSymbols(用户);rmsEVM =维生素(eqSymUser (:));fprintf(挣值管理的数据都:% 2.2身上\ n \ n”, 20 * log10 (rmsEVM / 100));%绘制每个恢复的他的数据符号的EVMhePlotEVMPerSymbol (eqSymUser、用户、EVMPerSymbol iu, numUsers);%绘制恢复的HE数据符号的每个子载波的EVMheplotevmpersubcarrier(eqsymuser,用户,evmpersubcarier,iu,numusers);结束
解码数据……解码用户:1,STAID:1, RUSize:52 A-MPDU deaggregation successful FCS pass for MPDU:1 HE-Data EVM:-28.61dBSTAID:4, RUSize:106 A-MPDU deaggregation successful FCS pass for MPDU:1 HE-Data EVM:-31.44dB

附录

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

选定的参考书目

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

  2. IEEE Std 802.11™-2016信息技术IEEE标准。系统间电信和信息交换。局域网和城域网。特殊要求。第11部分:无线局域网介质访问控制(MAC)和物理层(PHY)规范。