主要内容

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音的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}。稳重的= 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}。稳重的= 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} .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 =“模型”% TGax通道延迟配置文件%指定损伤noisePower = -40;%噪音功率适用于dBW首席财务官= 62年e3;%载波频率偏移Hz%生成波形rx = heSigRecGenerateWaveform (cfgMU numRx、delayProfile noisePower, cfo);

数据包恢复

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

  • HE恢复配置对象,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领域中每个子信道额外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 = wlanSampleRate (cfgMU);%采样率%指定用于恢复数据字段的导频跟踪方法。这可以是:% 'Joint' -使用联合的共同相位误差和采样率偏移跟踪% 'CPE' -只使用常见的相位误差跟踪%在恢复26音RUs时,仅使用CPE跟踪作为关节%跟踪算法易受噪声影响。pilotTracking =“联合”%创建HE恢复配置对象并设置通道带宽cfgRx = wlanHERecoveryConfig;cfgRx。ChannelBandwidth = chanBW;%恢复配置对象用于获取开始和结束pre-HE-SIG-B字段的%索引。印第安纳州= wlanFieldIndices (cfgRx);% Setup图为示例[Spectrumanalyzer,Timescope,ConstellationDiagram,EVMpersubcarier,EVMPERSYMBOL] = HesigreCsetupplots(SR);%最小分组长度为10个OFDM符号lstfLength =双(ind.LSTF (2));minPktLen = lstfLength * 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 + wlanSymbolTimingEstimate (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\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);流(' %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信道估计(带音调旋转)用于均衡和解码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长度属性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和r - sig的平均值helsigDemod =意味着(helsigDemod, 2);%均衡数据承载子载波,合并20mhz子信道[eqlsigsym,csi] = pholyymbolequalize(赫尔西格姆德(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符号的EVMEVM = comm.evm;EVM.REFERCESSIGNALSOURCE =.“根据参考星座估算”;维生素。归一化=的平均星座力量”;evm.referenceConstellation = WlanReferencesymbols(“BPSK”);rmsEVM =维生素(eqLSIGSym);流('L-SIG EVM:%2.2FDB \ n \ n', 20 * log10 (rmsEVM / 100));%计算接收时间和对应的样本数量%包RXTime = cell ((lsigLength + 3)/3) * 4 + 20;%在微秒numRxSamples = round(RXTime * 1e-6 * sr);%及时采样次数流(“RXTIME: % du \ 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* lstlength;%要绘制的样本数尽可能多地标记包装(和额外的样品)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);%显示检测报文的频谱Spectrumanalyzer(rx(pktoffset +(1:numrxsamples),:));释放(Spectrumanalyzer);

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,预先掌握,“HE-SIG-A”, chanBW);%均衡数据承载子载波,合并20mhz子信道preheInfo = wlanHEOFDMInfo (“HE-SIG-A”, chanBW);[eqsigasym,csi] = preolaymbolequalize(Hesigademod(preheinfo.dataindices,::),......preHEChanEst (preheInfo.DataIndices,:,)......noiseVar preheInfo.NumSubchannels);%恢复HE-SIG-A位[sigaBits, failCRC] = wlanHESIGABitRecover (eqSIGASym noiseVar, csi);%对HE-SIG-A位进行CRC校验如果failCRC disp (' ** HE-SIG-A CRC失败**');其他的DISP(“HE-SIG-A CRC pass”);结束%测量HE-SIG的EVM-A符号释放(EVM);如果比较字符串(pktFormat“HE-EXT-SU”% HE-EXT-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……HE-SIG-A CRC通过HE-SIG-A EVM: -35.17dB

解释恢复的HE-SIG-A位

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

cfgRx = interpretHESIGABits (cfgRx sigaBits);印第安纳州= wlanFieldIndices (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方式: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]。

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

如果比较字符串(pktFormat“HE-MU”)流('解码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)),:);%解码HE-SIG-B公共域(地位、cfgRx) = heSIGBCommonFieldDecode (rxSym、preHEChanEst noiseVar, cfgRx);HE-SIG-B内容频道的%CRC如果比较字符串(状态,'成功')流(' HE-SIG-B (common field) CRC pass\n');elseif比较字符串(状态,“ContentChannel1CRCFail”)流(' ** HE-SIG-B CRC fail for content channel-1\n **');elseif比较字符串(状态,“ContentChannel2CRCFail”)流(' ** HE-SIG-B CRC fail for content channel-2\n **');elseif任何(strcmp(地位,{“UnknownNumUsersContentChannel1”“UnknownNumUsersContentChannel2”}))错误('**未知的数据包长度,丢弃数据包\ n **');其他的% HE-SIG-B内容通道全部失败,丢弃该报文错误(' ** HE-SIG-B CRC失败**');结束%按照HE-SIG-B符号的数量更新字段索引%更新印第安纳州= wlanFieldIndices (cfgRx);结束%得到完整的He-Sig-B字段样本rxSIGB = rx (pktOffset + (ind.HESIGB (1): ind.HESIGB (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 =元素个数(cfgUsers);elseif所有(failCRC)%如果所有用户都没有通过CRC校验,则丢弃该报文错误(' **所有用户HE-SIG-B CRC失败**');其他的流(' ** HE-SIG-B CRC失败,至少一个用户\n **');%仅处理具有有效CRC的用户numUsers =元素个数(cfgUsers);结束其他的% HE-SU, HE-EXT-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;流('解码他数据...... \ n');国际单位= 1:numUsers%获取每个用户的恢复配置对象用户= cfgUsers {iu};如果比较字符串(pktFormat“HE-MU”)流('解码用户:%d, STAID:%d, RUSize:%d\n'、iu user.STAID user.RUSize);其他的流(“解码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用户。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),:);如果用户。RUSize = = 26% Force CPE仅跟踪26音RU算法易受影响%噪音cfgDataRec。PilotTracking =“CPE”其他的cfgDataRec。PilotTracking = PilotTracking;结束[demodSym, cpe,盯住]= heTrackingOFDMDemodulate (rxData,成龙、numOFDMSym、用户、cfgDataRec);估算HE领域的噪声功率demodPilotSym = demodSym (heInfo.PilotIndices,:,);据nvar = heNoiseEstimate (demodPilotSym、飞行员、用户);%平衡[eqsym,csi] = heequalizeCombine(Demodsym,Chanest,Nvarest,User);放弃导频子载波eqSymUser = eqSym (heInfo.DataIndices,:,);csiData = csi (heInfo.DataIndices:);% Demap和解码位据nvar rxPSDU = wlanHEDataBitRecover (eqSymUser, csiData,用户,'ldpcdecodingmethod'“layered-bp”);%分解A-MPDU[mpduList、~、状态]= wlanAMPDUDeaggregate (rxPSDU wlanHESUConfig);如果比较字符串(状态,'成功')流('a-mpdu deaggregation成功\ n');其他的流(' A-MPDU disaggregation failed \n');结束%解码MPDU列表,检查每个MPDU的FCSi = 1:numel(mpduList) [~,~,status] = wlanMPDUDecode(mpduList{i},wlanHESUConfig,)“DataFormat”“八位位组”);如果比较字符串(状态,'成功')流(' FCS pass for MPDU:%d\n',我);其他的流(' FCS failed for 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));%绘制恢复的HE数据符号的每个符号的EVMhePlotEVMPerSymbol (eqSymUser、用户、EVMPerSymbol iu, numUsers);每个恢复的HE数据符号的每个子载波的%绘制EVMhePlotEVMPerSubcarrier (eqSymUser、用户、EVMPerSubcarrier 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部分:无线LAN介质访问控制(MAC)和物理层(PHY)规格 -修订6:高效WLAN的增强。

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