主要内容

恢复过程的802.11 ac分组

这个例子展示了如何检测数据包有效载荷和解码比特在收到IEEE®802.11 ac™VHT波形。接收机恢复从序言字段解码数据包格式参数数据。

介绍

在单用户802.11 ac数据包传输参数信号到接收机使用L-SIG和VHT-SIG-A序言字段(1]:

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

  • VHT-SIG-A字段包含传输参数包括调制和编码方案,时空流和信道编码的数量。

在这个例子中我们在生成的波形检测和解码包包含一个有效的MAC帧与帧校验序列(FCS)。所有传输参数除了通道带宽都假定未知,因此从解码L-SIG检索和VHT-SIG-A序言字段在每个数据包。检索传输配置用于解码VHT-SIG-B和VHT数据字段。另外以下执行分析:

  • 显示的波形检测包。

  • 显示的频谱检测包。

  • 使相等的星座符号/空间流数据显示。

  • 误差向量(维生素)的每个字段级测量。

波形传播

在这个示例802.11 ac VHT单用户本地波形生成但可以使用捕获的波形。MATLAB®可以用来获得I / Q数据从一个广泛的工具使用仪器控制工具箱™和软件定义的无线电平台。

在本地生成的波形由3 x3受损TGac衰落信道,加性高斯白噪声,载波频率偏移量。生成本地波形我们配置一个VHT数据包格式配置对象。注意,VHT包配置对象仅用于发射机的一面。接收者将动态地制定另一个包解码时VHT配置对象。辅助函数vhtSigRecGenerateWaveform在本地生成波形受损。helper函数内的处理步骤是:

  • 一个有效的MAC帧生成并编译成一个VHT波形。

  • 波形是通过TGac衰落信道模型。

  • 载波频率偏移量添加到波形。

  • 加性高斯白噪声是添加到波形。

% VHT链接参数cfgVHTTx = wlanVHTConfig (“ChannelBandwidth”,“CBW80”,“NumTransmitAntennas”3,“NumSpaceTimeStreams”2,“SpatialMapping”,“阿达玛”,“摘要”,真的,“主持人”5,“GuardInterval”,“长”,“APEPLength”,1052);%传播渠道numRx = 3;%的接收天线delayProfile =型号c的;% TGac通道延迟概要文件%障碍noisePower = -30;%适用于瓦分贝噪声能力首席财务官= 62年e3;%载波频率偏移(赫兹)%生成波形参数numTxPkt = 1;%传输的数据包数量idleTime = 20 e-6;%空闲时间之前和之后的每一个数据包%生成波形rx = vhtSigRecGenerateWaveform (cfgVHTTx numRx,delayProfile noisePower,首席财务官,numTxPkt idleTime);

包复苏

信号处理存储在变量中处方。恢复一个数据包的处理步骤:

  • 检测到包和同步。

  • 检测到的数据包的格式。

  • L-SIG字段提取及其信息比特恢复确定数据包的长度在微秒。

  • VHT-SIG-A字段提取及其信息比特恢复。

  • 数据包格式参数从解码L-SIG检索和VHT-SIG-A碎片。

  • 提取VHT-LTF字段执行解码VHT-SIG-B MIMO信道估计和VHT数据字段。

  • VHT-SIG-B字段提取及其信息比特恢复。

  • VHT-Data字段提取和PSDU VHT-SIG-B CRC位恢复使用检索到的数据包参数。

一些序言的开始和结束索引字段取决于信道带宽,但独立于所有其他传输参数。这些指标是计算使用缺省传输与已知的带宽配置对象。

cfgVHTRx = wlanVHTConfig (“ChannelBandwidth”,cfgVHTTx.ChannelBandwidth);idxLSTF = wlanFieldIndices (cfgVHTRx,“L-STF”);idxLLTF = wlanFieldIndices (cfgVHTRx,“L-LTF”);idxLSIG = wlanFieldIndices (cfgVHTRx,“L-SIG”);idxSIGA = wlanFieldIndices (cfgVHTRx,“VHT-SIG-A”);

下面的代码配置对象和变量进行处理。

chanBW = cfgVHTTx.ChannelBandwidth;sr = wlanSampleRate (cfgVHTTx);%设置情节为例(简介、timeScope constellationDiagram] = vhtSigRecSetupPlots (sr);%最低包长度是10 OFDM符号lstfLen =双(idxLSTF (2));% L-STF的样本数量minPktLen = lstfLen * 5;rxWaveLen =大小(rx, 1);

前端处理

前端处理由数据包检测、粗载波频率偏移校正,定时同步和载波频率偏移校正。一个内循环用于检测和同步数据包接收到的波形。示例抵消searchOffset用于数组中的索引元素处方检测数据包。第一个包内处方检测和处理。如果检测数据包的同步失败,样本指数抵消searchOffset增加超越处理数据包在吗处方。重复此过程,直到数据包已经成功地检测并同步。

searchOffset = 0;%抵消从开始的波形样本(searchOffset + minPktLen) < = rxWaveLen%包检测pktOffset = wlanPacketDetect (rx chanBW searchOffset);%调整包抵消pktOffset = searchOffset + pktOffset;如果isempty (pktOffset) | | (pktOffset + idxLSIG (2) > rxWaveLen)错误(“* *没有包发现* *”);结束使用L-STF %粗频率偏移估计LSTF = rx (pktOffset + (idxLSTF (1): idxLSTF (2)),:);coarseFreqOffset = wlanCoarseCFOEstimate (LSTF chanBW);%粗频率偏移补偿rx = frequencyOffset (rx、sr、-coarseFreqOffset);%符号定时同步LLTFSearchBuffer = rx (pktOffset + (idxLSTF (1): idxLSIG (2)),:);pktOffset = pktOffset + wlanSymbolTimingEstimate (LLTFSearchBuffer chanBW);如果(pktOffset + minPktLen) > rxWaveLen流(“* *不够样品恢复包* * \ n \ n”);打破;结束%的时间同步完成:包检测流(“包发现指数% d \ n \ n ',pktOffset + 1);使用L-LTF %精细频率偏移估计LLTF = rx (pktOffset + (idxLLTF (1): idxLLTF (2)),:);fineFreqOffset = wlanFineCFOEstimate (LLTF chanBW);%精细频率偏移补偿rx = frequencyOffset (rx、sr、-fineFreqOffset);%显示估计载波频率偏移量cfoCorrection = coarseFreqOffset + fineFreqOffset;%总首席财务官流('估计首席财务官:% 5.1 f赫兹\ n \ n”,cfoCorrection);打破;%的前端处理完成,停止寻找一个数据包结束
包检测1600指数估计首席财务官:61954.3赫兹

格式检测

检测到的数据包的格式使用三个OFDM符号后立即L-LTF。估计的信道和噪声功率从L-LTF获得是必需的。

%使用L-LTF信道估计LLTF = rx (pktOffset + (idxLLTF (1): idxLLTF (2)),:);demodLLTF = wlanLLTFDemodulate (LLTF chanBW);chanEstLLTF = wlanLLTFChannelEstimate (demodLLTF chanBW);%在non-HT领域估计噪声功率noiseVarNonHT = helperNoiseEstimate (demodLLTF);%检测数据包的格式fmt = wlanFormatDetect (rx (pktOffset + (idxLSIG (1): idxSIGA (2)),:),chanEstLLTF、noiseVarNonHT chanBW);disp ([fmt“格式检测”]);如果~ strcmp (fmt,“VHT”)错误(“* *格式除了VHT已经检测到* *的);结束
VHT格式检测

L-SIG解码

VHT传输L-SIG字段是用来确定接收时间,或RXTIME,包的。RXTIME计算使用的字段位L-SIG负载(1情商,22 - 105]。样品内含有包的数量处方可以计算。L-SIG负载使用估计的信道解码和噪音从L-LTF获得力量。

%恢复L-SIG字段位disp (“解码L-SIG…”);[rxLSIGBits, failCheck eqLSIGSym] = wlanLSIGRecover (rx (pktOffset + (idxLSIG (1): idxLSIG (2)),:),chanEstLLTF、noiseVarNonHT chanBW);如果failCheck%跳过L-STF样品的长度并继续搜索disp (“* * L-SIG检查失败* *”);其他的disp (L-SIG检查通过的);结束%的挣值管理措施都L-SIG象征维生素与= comm.EVM;维生素。ReferenceSignalSource =“估计从参考星座”;维生素。ReferenceConstellation = wlanReferenceSymbols (“BPSK”);rmsEVM =维生素(eqLSIGSym);流(“L-SIG维生素:% 2.2 f % % RMS \ n”,rmsEVM);%计算接收时间和对应的样本数量%包lengthBits = rxLSIGBits (17)。”;RXTime =装天花板((bi2de(双(lengthBits)) + 3) / 3) * 4 + 20;%的美国老numRxSamples = RXTime * 1 e-6 *;%接收时间的样本数量流(“RXTIME: % du \ n”,RXTime);流(包的样品数量:% d \ n \ n ',numRxSamples);
解码L-SIG……L-SIG检查通过L-SIG维生素:1.83% RMS RXTIME: 84我们包的样品数量:6720

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

sampleOffset = max ((-lstfLen + pktOffset), 1);%的第一个索引图sampleSpan = numRxSamples + 2 * lstfLen;%的样本数量%的阴谋的包(和额外的样品)plotIdx = sampleOffset: min (sampleOffset + sampleSpan rxWaveLen);%配置timeScope显示数据包timeScope。时间间隔= sampleSpan / sr;timeScope。TimeDisplayOffset = sampleOffset / sr;timeScope。YLimits =[0马克斯(abs (rx (:))));timeScope (abs (rx (plotIdx,:)));%显示的频谱检测包简介(rx (pktOffset + (1: numRxSamples):));

VHT-SIG-A解码

VHT-SIG-A字段包含传输包的配置。VHT-SIG-A位恢复使用信道和噪声功率估计从L-LTF获得。

%恢复VHT-SIG-A字段位disp (“解码VHT-SIG-A…”);[rxSIGABits, failCRC eqSIGASym] = wlanVHTSIGARecover (rx (pktOffset + (idxSIGA (1): idxSIGA (2)),:),chanEstLLTF、noiseVarNonHT chanBW);如果failCRC disp (“* * VHT-SIG-A CRC失败* *”);其他的disp (“VHT-SIG-A CRC传递”);结束% VHT-SIG-A符号的挣值管理措施都对BPSK和QBPSK调制方案释放(维生素);维生素。ReferenceConstellation = wlanReferenceSymbols (“BPSK”);rmsEVMSym1 =维生素(eqSIGASym (: 1));释放(维生素);维生素。ReferenceConstellation = wlanReferenceSymbols (“QBPSK”);rmsEVMSym2 =维生素(eqSIGASym (:, 2));流(“VHT-SIG-A维生素:% 2.2 f % % RMS \ n”,意味着([rmsEVMSym1 rmsEVMSym2]));
解码VHT-SIG-A……RMS VHT-SIG-A CRC通过VHT-SIG-A维生素:2.06%

辅助函数helperVHTConfigRecover返回一个VHT格式配置对象,cfgVHTRx基于恢复VHT-SIG-A和L-SIG碎片。属性不需要解码的波形都被设置成默认值wlanVHTConfig对象,因此可能不同于价值cfgVHTTx。这些属性包括的例子NumTransmitAntennasSpatialMapping

%通过检索包创建一个VHT格式配置对象参数%从解码L-SIG VHT-SIG-A碎片cfgVHTRx = helperVHTConfigRecover (rxLSIGBits rxSIGABits);%显示传输配置从VHT-SIG-A获得vhtSigRecDisplaySIGAInfo (cfgVHTRx);
解码VHT-SIG-A内容:ChannelBandwidth:“CBW80”NumSpaceTimeStreams: 2方式:1 MCS: 5 ChannelCoding: {BCC的}GuardInterval:多头GroupID: 63 PartialAID: 275波束形成:0 PSDULength: 1167

VHT-SIG-A提供的信息允许后续的位置在接收到的波形计算字段。

%获得VHT-LTF开始和结束指数和VHT-Data字段%使用检索包参数idxVHTLTF = wlanFieldIndices (cfgVHTRx,“VHT-LTF”);idxVHTSIGB = wlanFieldIndices (cfgVHTRx,“VHT-SIG-B”);idxVHTData = wlanFieldIndices (cfgVHTRx,“VHT-Data”);%警告如果波形不包含整个包如果(pktOffset +双(idxVHTData (2))) > rxWaveLen流(“* *不够样品恢复整个包* * \ n \ n”);结束

VHT-SIG-B解码

信号的主要使用VHT-SIG-B用户信息在一个多用户包。在单用户数据包VHT-SIG-B携带包的长度也可以计算使用L-SIG和VHT-SIG-A(显示在上面的部分)。尽管不需要解码一个单用户数据包,VHT-SIG-B如下恢复和解释。VHT-SIG-B符号解调使用从VHT-LTF获得MIMO信道估计。注意的CRC VHT-SIG-B VHT数据字段中进行。

%估计MIMO信道使用VHT-LTF和检索包参数demodVHTLTF = wlanVHTLTFDemodulate (rx (pktOffset + (idxVHTLTF (1): idxVHTLTF (2)),:), cfgVHTRx);chanEstVHTLTF = wlanVHTLTFChannelEstimate (demodVHTLTF cfgVHTRx);%在VHT-SIG-B领域估计噪声功率noiseVarVHT = helperNoiseEstimate (demodLLTF chanBW cfgVHTRx.NumSpaceTimeStreams);% VHT-SIG-B恢复disp (“解码VHT-SIG-B…”);[rxSIGBBits, eqSIGBSym] = wlanVHTSIGBRecover (rx (pktOffset + (idxVHTSIGB (1): idxVHTSIGB (2)),:),chanEstVHTLTF、noiseVarVHT chanBW);%的挣值管理措施都VHT-SIG-B象征释放(维生素);维生素。ReferenceConstellation = wlanReferenceSymbols (“BPSK”);rmsEVM =维生素(eqSIGBSym);流(“VHT-SIG-B维生素:% 2.2 f % % RMS \ n”,rmsEVM);%解释VHT-SIG-B比特恢复APEP长度(围捕% 4个字节的倍数)并生成参考CRC位[refSIGBCRC, sigbAPEPLength] = helperInterpretSIGB (rxSIGBBits chanBW,真的);disp (“解码VHT-SIG-B内容:”);流(“APEP长度(围捕4字节多个):% d字节\ n \ n ',sigbAPEPLength);
解码VHT-SIG-B……VHT-SIG-B维生素:5.21% RMS解码VHT-SIG-B内容:APEP长度(围捕4字节多个):1052字节

VHT数据解码

重建VHT配置对象可以用来恢复VHT数据字段。这包括VHT-SIG-B CRC位和PSDU。

恢复VHT数据符号可以根据需要进行分析。在这个例子中恢复的平衡的星座VHT显示每个空间流数据符号。

%得到单一河道的估计chanEstSSPilots = vhtSingleStreamChannelEstimate (demodVHTLTF cfgVHTRx);%从波形中提取VHT数据样本vhtdata = rx (pktOffset + (idxVHTData (1): idxVHTData (2)),:);%的噪声功率估计VHT数据字段noiseVarVHT = vhtNoiseEstimate (vhtdata chanEstSSPilots cfgVHTRx);%恢复PSDU位使用检索包参数和通道%的估计VHT-LTFdisp (“解码VHT数据字段…”);[rxPSDU, rxSIGBCRC eqDataSym] = wlanVHTDataRecover (vhtdata、chanEstVHTLTF noiseVarVHT, cfgVHTRx);%的情节为每个空间流平衡的星座refConst = wlanReferenceSymbols (cfgVHTRx);(Nsd Nsym, Nss) = (eqDataSym)大小;eqDataSymPerSS =重塑(Nsd * Nsym eqDataSym, Nss);iss = 1: Nss constellationDiagram{空间站}。ReferenceConstellation = refConst;constellationDiagram{空间站}(eqDataSymPerSS (:, iss));结束%的挣值管理措施都VHT-Data符号释放(维生素);维生素。ReferenceConstellation = refConst;rmsEVM =维生素(eqDataSym (:));流(“VHT-Data维生素:% 2.2 f % % RMS \ n”,rmsEVM);
解码VHT数据字段…RMS VHT-Data维生素:4.68%

VHT-SIG-B恢复的CRC位VHT数据相比,然后在本地生成参考确定VHT-SIG-B和VHT数据服务已经恢复成功。

%测试VHT-SIG-B CRC位VHT内数据与服务%计算参考VHT-SIG-B比特如果~ isequal (refSIGBCRC rxSIGBCRC) disp (“* * VHT-SIG-B CRC失败* *”);其他的disp (“VHT-SIG-B CRC传递”);结束
VHT-SIG-B CRC通过

FCS的MAC帧可以验证使用wlanMPDUDecode。VHT格式框架是恢复,PSDU包含一个A-MPDU。MPDUs从A-MPDU中提取使用wlanAMPDUDeaggregate

mpduList = wlanAMPDUDeaggregate (rxPSDU cfgVHTRx);流(“A-MPDU MPDUs礼物的数量:% d \ n '元素个数(mpduList));
A-MPDU MPDUs礼物的数量:1

mpduList包含完全整合MPDUs列表。列表中的每个MPDU传递wlanMPDUDecode这验证了MPDU FCS和解码。

i = 1:元素个数(mpduList) [macCfg、有效载荷、decodeStatus] = wlanMPDUDecode (mpduList {}, cfgVHTRx,“DataFormat”,“八位位组”);如果比较字符串(decodeStatus“FCSFailed”)流(“* * FCS MPDU失败——% d * * \ n ',我);其他的流(的FCS了MPDU——% d \ n”,我);结束结束
FCS的MPDU-1

附录

这个示例使用以下辅助函数:

选定的参考书目

  1. -2020年IEEE Std 802.11™。IEEE标准信息技术——之间的通信和信息交换系统-本地和市区网络特定需求-第11部分:无线局域网介质访问控制(MAC)和物理层规范(体育)。