主要内容

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包的格式。

  • HE-SIG-B字段包含HE-MU包中用户的RU (Resource unit)分配信息和传输参数。

在该示例中,我们在生成的波形中检测和解码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配置对象仅用于发送端。接收方将制定一个HE恢复配置对象wlanherecoveryconfig.在解码L-SIG,HE-SIG-A和HE-SIG-B字段中的信息位之后设置HE恢复配置对象的未知属性。辅助功能HesigrecgenerateWaveForm.产生受损波形。执行以下处理步骤:

  • 为MAC帧创建MSDU的随机有效载荷,该MAC帧被编码为HE-MU数据包。

  • 波形通过TGAX室内衰落通道模型。

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

对于HE-MU数据包定义了混合OFDMA和MU-MIMO配置。%分配索引17定义了两个52色调RU,每个用户%ru,一个106- ru。106 tone ru在mu-mimo中有两个用户% 配置。cfgmu = wlanhemuconfig(17);cfgmu.numtransmitantennas = 2;%配置ru 1和用户1cfgmu.ru {1} .spatialmapping ='直接的';cfgmu.user {1} .staid = 1;cfgmu.user {1} .apeplthength = 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}。稳重的= 2;cfgMU.User{2}。一种PEPLength = 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} .staid = 4;cfgmu.user {4} .apeplength = 500;cfgmu.user {4} .mcs = 3;cfgmu.user {4} .numspacetimestreams = 1;cfgmu.user {4} .ChannelCoding ='LDPC'指定传播通道numrx = 2;%接收天线数量DelayProfile =.'Model-D'%TGAX通道延迟配置文件%指定损伤noispower = -40;在DBW中应用噪声功率cfo = 62e3;%载波频率偏移Hz%生成波形rx = hesigrecgeneratewaveform(cfgmu,numrx,delays delayprofile,noispower,cfo);

数据包恢复

处理的信号存储在变量中RX..恢复数据包的处理步骤是:

  • HE恢复配置对象,wlanherecoveryconfig被建造。object属性被更新,因为前导码字段被解码。

  • 数据包被检测并同步。

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

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

  • 使用当L-LTF之后的四个OFDM符号等于四个OFDM符号的时域信号用于确定HE分组格式。数据包格式更新wlanherecoveryconfig目的。

  • L-LTF被解调。解调的L-LTF符号包括每个20 MHz段的音调旋转,如[2],第21.3.7.5节。L-LTF信道估计(用音调旋转)用于解码预先预见。

  • 提取L-SIG和RL-SIG字段。信道估计在L-SIG和RL-SIG领域中每个子信道额外4个子载波。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格式,RU分配和用户传输参数从HE-SIG-B字段恢复。对于压缩的SIGB波形,RU分配信息是从HE-SIG-A字段推断出来的,用户传输参数是从HE-SIG-B用户字段位确定的。

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

  • 提取和解调HE-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 = WLANSAMPLEDE(CFGMU);% 采样率%指定用于恢复数据字段的导频跟踪方法。这可以是:%'关节' - 使用联合共同相位误差和采样率偏移跟踪%'CPE' - 仅使用常见的相位错误跟踪恢复26色调rus时的%仅使用CPE跟踪作为关节%跟踪算法易受噪声的影响。pilottracking =“联合”%创建HE恢复配置对象并设置通道带宽cfgrx = wlanherecoveryconfig;cfgrx.channelbandwidth = chanbw;%恢复配置对象用于获取开始和结束预先达到的人的%索引。IND = WLANFIELDINDIDICES(CFGRX);举例的%设置图[Spectrumanalyzer,Timescope,ConstellationDiagram,EVMpersubcarier,EVMPERSYMBOL] = HesigreCsetupplots(SR);%最小分组长度为10个OFDM符号lstflength = double(ind.lstf(2));minpktlen = lstflthength * 5;L-STF中的百分比样本数量rxwavelen =尺寸(rx,1);

前端处理

前端处理由分组检测,粗载波频率偏移校正,定时同步和细载波频率偏移校正组成。一种尽管环路用于在接收的波形内检测和同步数据包。示例抵消searchOffset.用于索引RX.检测数据包。内部的第一个数据包RX.被检测和处理。如果同步失败,检测到的数据包,则示例索引偏移量searchOffset.递增以超越已处理的数据包RX..重复这一点,直到已成功检测到数据包并同步。

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 + wlanymboltimingestimate(searchbufferlltf,chanbw);使用L-STF的%细频偏移估计和校正rxlltf = rx(pktoffset +(ind.lltf(1):Ind.lltf(2)),:);finefreqoffset = wlanfinecfoestimate(rxlltf,chanbw);rx = helperfrequencyoffset(rx,sr,-finefreqoffset);%定时同步完成:检测到数据包流('在索引%d \ n'下检测到的数据包,pktoffset + 1);%显示估计载波频率偏移量cfocorrection = coarsefreqoffset + finefreqoffset;%总首席财务官流('估计CFO:%5.1F Hz \ n',cfocorrection);休息%前端处理完成,停止搜索数据包结尾%缩放基于L-STF功率的波形(AGC)gain = 1./(sqrt(mean(rxlstf.*conj(rxlstf)))))))));rx = rx。*获得;
在索引中检测到的数据包404估计CFO:61942.9 Hz

数据包格式检测

当等于L-LTF之后的四个OFDM符号的时域样本用于确定HE分组格式[1数字。27-63]。提取L-LTF并解调。对于格式检测,解调的L-LTF符号不得包括每个20 MHz段的音调旋转,如[2],第21.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);流(“%s数据包检测到\ n \ n”,pktformat);%在恢复对象中设置数据包格式并更新现场索引cfgrx.packetFormat = pktformat;IND = WLANFIELDINDIDICES(CFGRX);
检测数据包格式...检测到HE-MU数据包

L-LTF信道估计

解调L-LTF并执行信道估计。解调的L-LTF符号包括每个20 MHz段的音调旋转,如[2],第21.3.7.5节。L-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-LTF场获得的信道和噪声功率进行解码L-SIG有效载荷。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 = preHEChannelEstimate (helsigDemod lltfChanEst preheInfo.NumSubchannels);均值之前平均L-SIG和RL-SIGhelsigDemod =意味着(helsigDemod, 2);%均衡数据携带子载波,合并20 MHz子信道[eqlsigsym,csi] = pholyymbolequalize(helsigdemod(preheinfo.dataindices,:,:),......预先掌握(Preheinfo.dataindices,:,:),Noisevar,Preheinfo.numsubChannels);%解码L-SIG字段[〜,failcheck,lsiginfo] = wlanlsigbitrocover(eqlsigsym,noisevar,csi);如果故障检查DISP('** l-sig检查失败**');别的DISP('l-sig check pass');结尾%从恢复的L-SIG位获取长度信息并更新恢复配置对象的%L-SIG长度属性lsiglength = lsiginfo.length;cfgrx.lsiglength = lsiglength;%测量L-SIG符号的EVMEVM = comm.evm;EVM.REFERCESSIGNALLOURCE =.'从参考星座估计';EVM.Normalization =.的平均星座力量”;evm.referenceConstellation = WlanReferencesymbols('BPSK');rmsEVM =维生素(eqLSIGSym);流('L-SIG EVM:%2.2FDB \ n \ n',20 * log10(rmsevm / 100));%计算接收时间和相应数量的样本%包Rxime = CEIL((LSIGLength + 3)/ 3)* 4 + 20;微秒内%numrxsamples = round(rxtime * 1e-6 * sr);%及时采样次数流('rxtime:%dus \ n',Rxtime);流('数据包中的样本数:%d \ n \ n',numrxsamples);
解码L-SIG ... L-SIG CHECK PASS L-SIG EVM:-36.91DB RXTIME:536US在包中的样本数量:10720

在检测到的数据包内的波形和频谱RX.显示计算的RxTime和相应数量的样本。

sampleOffset = max((- lstlength + pktOffset),1);%第一索引samplespan = numrxsamples + 2 * lstflength;%要绘制的样本数%绘制数据包(和额外的样本),我们可以plotidx = sampleOffset:min(SampleOffset + Samplespan,Rxwavelen);%配置Timescope以显示数据包timescope.timespan = samplespan / sr;timescope.timedisplayOffset = SampleOffset / SR;timescope.ylimits = [0 max(abs(rx(:)))];Timescope(ABS(rx(plotidx,:)));释放(Timescope);%显示检测到的数据包的频谱Spectrumanalyzer(rx(pktoffset +(1:numrxsamples),:));释放(Spectrumanalyzer);

他是一个解码

HE-SIG-A字段包含HE数据包的传输配置。需要估计从L-LTF获得的信道和噪声功率来解码HE-SIG-A字段。

DISP('解码He-sig-a ...')rxsiga = rx(pktoffset +(Ind.hahaIga(1):Ind.Hesiga(2)),:);sigademod = wlanhedemodulate(rxsiga,'他是他的, chanBW);HesigAdemod = PrehecommOnphaseErrortracking(SigadeMod,PrehecheSt,'他是他的, chanBW);%均衡数据携带子载波,合并20 MHz子信道preheInfo = wlanHEOFDMInfo ('他是他的, chanBW);[eqsigasym,csi] = preolaymbolequalize(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('他是一个crc pass');结尾%测量HE-SIG的EVM-A符号释放(EVM);如果Strcmp(PKTFormat,'他 -  ex-su'HE-ST-SU数据包的HE-SIG-A字段的第二个符号是%qbpsk。evm.referenceConstellation = WlanReferencesymbols('BPSK',[0 /2 0 0]);% HE-EXT-SU包的L-LTF缩放rmsEVM =维生素(eqSIGASym * sqrt (2));别的evm.referenceConstellation = WlanReferencesymbols('BPSK');rmsEVM =维生素(eqSIGASym);结尾流('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 = transethesigates(cfgrx,sigabits);IND = WLANFIELDINDIDICES(CFGRX);%更新字段索引

显示从HE-SIG-A字段获取的常用传输配置为HE-MU数据包。-1所示的属性未知或未确定。在成功解码HE-SIG-B字段后更新未知的用户相关的属性。

DISP(CFGRX)
wlanherecoveryconfig具有属性:packetformat:'he-mu'channelBandWidth:'CBW20'LsigLength:383 SigBCompression:0 SigBmcs:0 SigBDCM:0 NumSigBsymbolsSignaled:5 STBC:0 LdpcexTraSymbol:0 PrefecPaddingFort:4 Pedisampituity:0 Guardinterval:3.2000 HeltFtype:4 NumHeltFsymbols:2个上行链条:0 BSSColor:0 SpatialReuse:0 TXOpduration:127 Highdoppor:0 AllocationIndex:0 AllocationIndex:-1 NumUnersperContentChannel:-1 RutotalspacetImestreams:-1 rusize:-1 ruindex:-1 staid:-1 mcs:-1 dcm:-1 dcm:-1通道码:'未知'波束成形:-1 numspacetimestreams:-1 spacetimesteamstartingIndIndIn:-1

He-Sig-B解码

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

  • 从He-Sig-B公共字段推断出非压缩SIGB波形的ru分配信息[1桌子。27-23]。对于压缩的SIGB波形,RU分配信息从恢复的HE-SIG-A比特推断出RU分配信息。

  • 对于非压缩的SIGB波形,HE-SIG-B符号的数量更新wlanherecoveryconfig目的。只有在HE-SIG-A字段中指示的HE-SIG-B符号的数量设置为15,并且所有内容通道通过CRC,则符号仅更新。如果任何HE-SIG-B CONTER通道失败CRC,则不会更新HE-SIG-A字段中所示的HE-SIG-B符号的数量。

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

为了解码HE-SIG-B场,需要估计从L-LTF获得的信道和噪声功率。

如果Strcmp(PKTFormat,“HE-MU”)fprintf('解码he-sig-b ... \ n');如果〜cfgrx.sigbcompression fprintf('解码He-Sig-B共同领域...... \ n');s = getsigblength(cfgrx);%获得公共字段符号。He-Sig-B字段的开始是已知的rxsym = rx(pktoffset +(ind.hahauga(2)+(1:s.numsigbcommonfieldsamples),:);%解码he-sig-b公共领域[status,cfgrx] = hesigbcommonfielddecode(rxsym,preheherest,noisevar,cfgrx);HE-SIG-B内容频道的%CRC如果Strcmp(状态,'成功')fprintf('He-Sig-B(公共场)CRC通过\ n');eleesif.Strcmp(状态,'contentChannel1crcFeail')fprintf('** HE-SIG-B CRC对内容频道-1 \ n **'失败);eleesif.Strcmp(状态,'contentChannel2crcFail')fprintf(' ** HE-SIG-B CRC fail for content channel-2\n **');eleesif.任何(strcmp(地位,{“UnknownNumUsersContentChannel1”'Unknownnumuserscontentchannel2'})) 错误('**未知的数据包长度,丢弃数据包\ n **');别的% HE-SIG-B内容通道全部失败,丢弃该报文错误('** he-sig-b crc失败**');结尾随着HE-SIG-B符号的数量,%更新字段索引% 更新IND = WLANFIELDINDIDICES(CFGRX);结尾%得到完整的He-Sig-B字段样本rxsigb = rx(pktoffset +(ind.hahaigb(1):Ind.HOSIGB(2)),:);流('解码HE-SIG-B用户字段... \ n');%解码he-sig-b用户字段[failCRC, cfgUsers] = heSIGBUserFieldDecode (rxSIGB、preHEChanEst noiseVar, cfgRx);HE-SIG-B用户的%CRC如果~所有(failCRC)流(' HE-SIG-B(用户域)CRC通\n\n');numusers = numel(cfgusers);eleesif.所有(failCRC)如果所有用户失败CRC,%将丢弃数据包错误('** he-sig-b crc对所有用户失败**');别的流('** He-Sig-B CRC至少有一个用户\ n **');%仅处理具有有效CRC的用户numusers = numel(cfgusers);结尾别的He-su%he-sucfgusers = {cfgrx};麻木器= 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;流('解码他数据...... \ n');为了IU = 1:麻木器%获取每个用户的恢复配置对象用户= cfgusers {iu};如果Strcmp(PKTFormat,“HE-MU”)fprintf('解码用户:%d,staid:%d,rusize:%d \ n',iu,user.staid,user.rusize);别的流('解码肆无忌惮:%d \ n',user.rusize);结尾heinfo = wlanheofdminfo('他是数据',chanbw,user.guardinterval,[user.rusize user.ruindex];%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,用户);百分比符号的预期数据数量symlen = heinfo.fftlength + heinfo.cplength;numofdmsym =(ind.hedata(2)-ind.hedata(1)+1)/ symlen;使用导频阶段和定时跟踪的%HE-DATA解调%从数据包中提取数据字段时,考虑额外的样本对于采样率偏移跟踪的%。如果如果是,可能需要额外的样品%接收器时钟比发射机更快。maxsro = 120;百万分之一ne = ceil(numrxsamples * maxsro * 1e-6);%额外样品数量ne = min(ne,rxwavelen-numrxsamples);%限制为波形的长度numrxsamplesprocess = numrxsamples + ne;rxdata = rx(pktoffset +(ind.hedata(1):numrxsampleprocess),:);如果user.rusize == 26% Force CPE仅跟踪26音RU算法易受影响%到噪音cfgdatarec.pilottracking =“CPE”别的cfgdatarec.pilottracking = pilottracking;结尾[emodsym,cpe,peg] = hetrackingofdmdemodulate(rxdata,chanest,numofdmsym,用户,cfgdatarec);估计他领域的估计噪音力量demodpilototeym = demodsym(heinfo.pilotindices,:,:);nvarest = henoiseestimate(Demodpilototsym,Pilotest,User);%均衡[eqsym,csi] = heequalizeCombine(Demodsym,Chanest,Nvarest,User);%丢弃试点子载波eqsymuser = eqsym(heinfo.dataindices,:,:);csidata = csi(heinfo.dataindices,:);%码头和解码位rxpsdu = wlanhedatabitrocover(eqsymuser,nvarest,csidata,用户,'ldpcdecodingmethod'“layered-bp”);%分解A-MPDU[mpdulist,〜,status] = wlanampdudeaggregge(rxpsdu,wlanhaheuconfig);如果Strcmp(状态,'成功')fprintf('a-mpdu deaggregation成功\ n');别的流(' A-MPDU disaggregation failed \n');结尾%解码MPDU列表,检查每个MPDU的FCS为了i = 1:numel(mpduList) [~,~,status] = wlanMPDUDecode(mpduList{i},wlanHESUConfig,)'datomformat''八位字节');如果Strcmp(状态,'成功')fprintf('FCS用于MPDU:%d \ n',一世);别的流('FCS失败了MPDU:%d \ n',一世);结尾结尾%绘制恢复HE数据符号的均衡星座每个用户的%空间流Heploteqconstellation(eqsymuser,用户,constellationdiagram,Iu,numusers);%测量HE-DATA符号的EVM释放(EVM);evm.referenceConstellation = WlanReferencesymbols(用户);rmsevm = EVM(eqsymuser(:));流('他 - 数据EVM:%2.2FDB \ n \ n',20 * log10(rmsevm / 100));%绘制每个恢复的他的数据符号的EVMheplotevmpersymbol(eqsymuser,用户,evmpersymbol,iu,numusers);%plot evm每个恢复的他的数据符号的子载波heplotevmpersubcarrier(eqsymuser,用户,evmpersubcarier,iu,numusers);结尾
解码HE-DATA ...解码用户:1,STED:1,盗用:52 A-MPDU DEAGGREGATION成功FCS PASS用于MPDU:1 HE-DATA EVM:-28.61DB解码用户:2,STAID:2,盗用:52A-MPDU Deaggation成功FCS Pass for MPDU:1 HE-DATA EVM:-39.94DB解码用户:3,STEAD:3,盗用:106 A-MPDU Deaggregation成功FCS Pass for MPDU:1 HE-DATA EVM:-28.22dB解码用户:4,STEAD:4,肆虐:106 A-MPDU Deaggregation成功FCS Pass for MPDU:1 HE-DATA EVM:-31.44dB

附录

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

选定的书目

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

  2. IEEE STD 802.11™-2016信息技术的IEEE标准 - 系统之间的电信和信息交流 - 本地和大都市区域网络 - 特定要求 - 第11部分:无线LAN介质访问控制(MAC)和物理层(PHY)规格。