主要内容

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 (Frame Check Sequence)。

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

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

波形传播

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

合成的波形受到2x2 TGax室内衰落信道、加性高斯白噪声和载频偏移的影响。为了生成HE-MU波形,我们配置了HE-MU格式配置对象wlanHEMUConfig.注意wlanHEMUConfig配置对象仅用于发送端。接收方将制定一个HE恢复配置对象wlanHERecoveryConfig.HE恢复配置对象的未知属性是对L-SIG、HE- sig - a和HE- sig - b字段中的信息位进行解码后设置的。辅助函数heSigRecGenerateWaveform生成受损波形。处理步骤如下:

  • 为MAC帧创建一个随机的msdu负载,并将其编码到HE-MU包中。

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

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

为HE-MU数据包定义了OFDMA和MU-MIMO混合配置。分配索引17定义了两个52音的ru,每个ru中有一个用户%俄服,一个106调俄服。106音RU在MU-MIMO中有两个用户%的配置。cfgMU = wlanHEMUConfig(17);cfgMU。numtransmitantenna = 2;配置RU 1和用户1cfgMU.RU{1}。SpatialMapping =“直接”;cfgMU.User{1}。Staid = 1;cfgMU.User{1}。一个PEPLength = 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}。一个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}。一个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}。一个PEPLength = 500; cfgMU.User{4}.MCS = 3; cfgMU.User{4}.NumSpaceTimeStreams = 1; cfgMU.User{4}.ChannelCoding =“方法”指定传播通道numRx = 2;%接收天线个数delayProfile =“模型”% TGax通道延迟配置文件指定减值noisePower = -40;%噪声功率适用于dBWCfo = 62e3;载频偏移Hz生成波形rx = hesigrecgenerate波形(cfgMU,numRx,delayProfile,noisePower,cfo);

包复苏

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

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

  • 检测并同步报文。

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

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

  • 在L-LTF后面包含相当于四个OFDM符号的时域信号被用来确定HE包格式。更新报文格式wlanHERecoveryConfig对象。

  • L-LTF被解调。解调的L-LTF符号包括每个20 MHz段的音调旋转,如[2],第21.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格式,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);%抽样率指定用于恢复数据字段的导频跟踪方法。这可以是:'关节' -使用关节共同相位误差和采样率偏移跟踪% 'CPE' -只使用常见相位错误跟踪%当恢复26音RUs时,仅使用CPE跟踪作为关节%跟踪算法易受噪声影响。pilotTracking =“联合”创建HE恢复配置对象并设置通道带宽cfgRx = wlanherrecoveryconfig;cfgRx。ChannelBandwidth = chanBW;恢复配置对象用于获取开始和结束pre-HE-SIG-B字段的%索引。ind = wlanFieldIndices(cfgRx);为示例设置绘图[spectromanalyzer,timeScope,星座图,EVMPerSubcarrier,EVMPerSymbol] = heSigRecSetupPlots(sr);最小包长度为10个OFDM符号lstfLength = double(ind.LSTF(2));minPktLen = lstflengen *5;% L-STF中的样本数rxwaven = size(rx,1);

前端处理

前端处理包括报文检测、粗载波频偏校正、定时同步和细载波频偏校正。一个循环用于检测和同步接收波形中的数据包。样本偏移量searchOffset是用来索引的处方检测报文。第一个包处方进行检测和处理。如果检测到的数据包同步失败,则采样索引偏移searchOffset是递增到超出处理的数据包处方.重复此过程,直到成功检测并同步数据包。

searchOffset = 0;%样本中波形开始的偏移量(searchOffset + minPktLen) <= rxwaven包检测pktOffset = wlanPacketDetect(rx,chanBW,searchOffset);调整数据包偏移量pktOffset = searchOffset + pktOffset;如果isempty(pktOffset) || (pktOffset + ind.LSIG(2) > rxwaven) error('**未检测到数据包**');结束使用L-STF进行粗频偏估计和校正rxLSTF = rx (pktOffset + (ind.LSTF (1): ind.LSTF (2)),:);coarseFreqOffset = wlanCoarseCFOEstimate(rxLSTF,chanBW);rx = helperFrequencyOffset(rx,sr,-粗频偏移);符号定时同步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 =粗freqoffset +细frereqoffset;CFO总数流('估计CFO: %5.1f Hz\n\n', cfoCorrection);打破前端处理完成,停止查找报文结束基于L-STF功率(AGC)缩放波形增益= 1./(√(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 = lltltfchannelestimate (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 = wlanFieldIndices(cfgRx);
检测数据包格式…检测到HE-MU报文

L-LTF信道估计

解调L-LTF并进行信道估计。解调的L-LTF符号包括每个20 MHz段的音调旋转,如[2],第21.3.7.5节。L-LTF信道估计(带音调旋转)用于平衡和解码pre-HE-LTF字段。

lltfDemod = wlanHEDemodulate(rxLLTF,“L-LTF”, chanBW);lltfChanEst = lltltfchannelestimate (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长度属性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-SIGhelsigDemod = mean(helsigDemod,2);平衡数据携带子载波,合并20 MHz子信道[eqLSIGSym,csi] = preHESymbolEqualize(helsigDemod(preheInfo.DataIndices,:,:),...preHEChanEst (preheInfo.DataIndices::), noiseVar, preheInfo.NumSubchannels);Decode L-SIG字段[~,failCheck,lsigInfo] = wlanLSIGBitRecover(eqLSIGSym,noiseVar,csi);如果failCheck disp (' ** L-SIG检查失败**');其他的disp (“L-SIG检查通过”);结束从恢复的L-SIG位中获取长度信息,并更新恢复配置对象的L-SIG length属性lsigLength = lsigInfo.Length;cfgRx。LSIGLength = LSIGLength;测量L-SIG符号的EVMEVM = com .EVM;维生素。ReferenceSignalSource =“从参考星座估计”;维生素。归一化=“平均星座功率”;维生素。ReferenceConstellation = wlanreferencesymbles (“BPSK”);rmsEVM = EVM(eqLSIGSym);流(' L-SIG EVM: %2.2fdB\n\n', 20 * log10 (rmsEVM / 100));计算接收时间和相应的样本数量%包RXTime = 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

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

sampleOffset = max((-lstfLength + pktOffset),1);绘制的第一个索引sampleSpan = numRxSamples + 2* lstflengan;为绘制的样本编号绘制尽可能多的包(和额外的样本)plotIdx = sampleOffset:min(sampleOffset + sampleSpan, rxwaven);%配置timeScope显示报文timeScope。TimeSpan = sampleSpan/sr;timeScope。TimeDisplayOffset = sampleOffset/sr;timeScope。YLimits = [0 max(abs(rx(:)))];timeScope (abs (rx (plotIdx,:)));释放(timeScope);显示检测到的报文的频谱频谱分析仪(rx(pktOffset + (1:numRxSamples),:));释放(简介);

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 MHz子信道preheInfo = wlanHEOFDMInfo(“HE-SIG-A”, chanBW);[eqSIGASym,csi] = preHESymbolEqualize(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通行证”);结束测量HE-SIG-A符号的EVM释放(维生素);如果比较字符串(pktFormat“HE-EXT-SU”HE-EXT-SU报文中HE-SIG-A字段的第二个符号为% QBPSK。维生素。ReferenceConstellation = wlanreferencesymbles (“BPSK”,[0 pi/2 0 0]);HE-EXT-SU报文的L-LTF扩展rmsEVM = EVM(eqSIGASym*sqrt(2));其他的维生素。ReferenceConstellation = wlanreferencesymbles (“BPSK”);rmsEVM = EVM(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);ind = 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的: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符号的数量不会更新。

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

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

如果比较字符串(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.m numsigbcommonfieldsamples)),:);解码HE-SIG-B通用字段[status,cfgRx] = heSIGBCommonFieldDecode(rxSym,preHEChanEst,noiseVar,cfgRx);HE-SIG-B内容频道的% CRC如果比较字符串(状态,“成功”)流(' HE-SIG-B(公共字段)CRC通道\n');elseif比较字符串(状态,“ContentChannel1CRCFail”)流(' ** HE-SIG-B CRC失败的内容通道1\n **');elseif比较字符串(状态,“ContentChannel2CRCFail”)流(' ** HE-SIG-B内容通道2 CRC失败\n **');elseif任何(strcmp(地位,{“UnknownNumUsersContentChannel1”“UnknownNumUsersContentChannel2”}))错误(' **未知数据包长度,丢弃数据包\n **');其他的如果所有HE-SIG-B内容通道都失败,则丢弃报文错误(' ** HE-SIG-B CRC失败**');结束更新字段索引为HE-SIG-B符号的数目%更新ind = 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 pass\n\n');numUsers = numel(cfgUsers);elseif所有(failCRC)%如果所有用户CRC校验失败,丢弃报文错误(' **所有用户HE-SIG-B CRC失败**');其他的流(' ** HE-SIG-B CRC失败,至少一个用户\n **');只处理有有效CRC的用户numUsers = numel(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”);iu = 1:numUsers获取每个用户的恢复配置对象user = cfgUsers{iu};如果比较字符串(pktFormat“HE-MU”)流('解码用户:%d, STAID:%d, RUSize:%d\n'、iu user.STAID user.RUSize);其他的流('解码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]);[chanEst,pilotEst] = heLTFChannelEstimate(heltfDemod,user);%期望的数据OFDM符号数symLen = heInfo.FFTLength+heInfo.CPLength;nummofdmsym = (ind.HEData(2)-ind.HEData(1)+1)/symLen;he -数据解调与导频相位和定时跟踪%从数据包中提取数据字段时考虑额外的样本%用于采样率偏移跟踪。可能需要额外的样品,如果%接收机时钟明显快于发射机。maxSRO = 120;%百万分率Ne = cell (numRxSamples*maxSRO*1e-6);%额外样本数Ne = min(Ne, rxwaven - numrxsamples);%受限于波形长度numRxSamplesProcess = numRxSamples+Ne;rxData = rx(pktOffset+(ind.HEData(1):numRxSamplesProcess),:);如果用户。RUSize = = 26%强制CPE仅跟踪26色调RU作为算法敏感噪声比cfgDataRec。PilotTracking =“CPE”其他的cfgDataRec。PilotTracking = PilotTracking;结束[demodSym,cpe,peg] = heTrackingOFDMDemodulate(rxData,chanEst, nummofdmsym,user,cfgDataRec);估计HE场的噪声功率demodPilotSym = demodSym(heInfo.PilotIndices,:,:);nVarEst = heNoiseEstimate(demodPilotSym,pilotEst,user);%平衡[eqSym,csi] = heEqualizeCombine(demodSym,chanEst,nVarEst,user);丢弃先导子载波eqSymUser = eqSym(heInfo.DataIndices,:,:);csiData = csi(heInfo.DataIndices,:);去映射和解码位rxPSDU = wlanHEDataBitRecover(eqSymUser,nVarEst,csiData,user,“LDPCDecodingMethod”“layered-bp”);解聚A-MPDU[mpduList,~,status] = wlanAMPDUDeaggregate(rxPSDU,wlanHESUConfig);如果比较字符串(状态,“成功”)流(“A-MPDU分解成功\n”);其他的流(' A-MPDU分解不成功\n');结束解码MPDU列表,检查每个MPDU的FCSi = 1: nummel (mpduList) [~,~,status] = wlanMPDUDecode(mpduList{i},wlanHESUConfig, wlanHESUConfig)“DataFormat”“八位位组”);如果比较字符串(状态,“成功”)流(MPDU的FCS pass:%d\n,我);其他的流(MPDU的FCS失败:%d\n,我);结束结束为所有恢复的HE数据符号绘制均衡星座每用户空间流的百分比hePlotEQConstellation (eqSymUser、用户、ConstellationDiagram iu, numUsers);测量HE-Data符号的EVM释放(维生素);维生素。ReferenceConstellation = wlanReferenceSymbols(用户);rmsEVM = EVM(eqSymUser(:));流(' HE-Data 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.61dB解码用户:2,STAID:2, RUSize:52 A-MPDU deaggregation successful FCS pass for MPDU:1 HE-Data EVM:-39.94dB解码用户:3,STAID:3, RUSize:106 A-MPDU deaggregation successful FCS pass for MPDU:1 HE-Data EVM:-28.22dB解码用户:4,STAID:4, RUSize:106 A-MPDU deaggregation successful FCS pass for MPDU:1 HE-Data EVM:-31.44dB

附录

本例使用了以下helper函数:

选定的参考书目

  1. IEEE P802.11ax™/D4.1信息技术标准草案。系统间的电信和信息交换。局域网和城域网。特殊要求。第11部分:无线局域网介质访问控制(MAC)和物理层(PHY)规范。修改件6:高效WLAN的增强。

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