802.11ax压缩波束形成包错误率仿真

本例演示了如何测量具有不同波束形成反馈量化级别的ieee802.11 ax™高效单用户(HE-SU)格式链接的数据包错误率。

介绍

传输波束成形集中精力向以提高接收机链路的SNR。在这个方案中,所述发送器被称为波束形成器和接收器被称为波束成形。引导矩阵所使用的波束形成器的能量引导到波束成型。转向矩阵使用通过信道测量获得的信道状态信息来计算。这些测量是通过探测波束形成器和波束成形之间的信道获得的。声音信道,波束形成器发送一个NDP(空数据分组)的波束成形。在波束成形的探测,以计算反馈矩阵中测量信道的信息。此矩阵在量化角(PHI和PSI)和反馈到波束形成器的形式压缩。然后,波束形成器可以从量化的角度计算反馈矩阵以创建引导矩阵和波束形成传输发送到波束成形。形成引导矩阵的过程中显示802.11交流传输波束形成

在本例中,在发射机和接收机之间考虑一个4x2 MIMO配置,每个数据包传输使用两个时空流。使用端到端的模拟来确定802.11ax的分组错误率(PER) [1]单用户(SU)具有用于不同的量化水平压缩波束成形反馈量化和选择的SNR点格式的链接。的曲线来生成表示PER VS为每个量化分辨率SNR曲线。这个例子没有考虑子载波(见的分组第9.4.1.65 [1])。

波形配置

的HE-SU分组是全频带传输给单个用户。用于HE-SU格式的发送参数是使用一个配置wlanHESUConfig宾语。该对象的属性包含所述配置。在该示例中,对象被配置用于20MHz信道带宽,4个发射天线,2空间 - 时间流和16-QAM速率-1/2(MCS 3)。

NumTxAnts = 4;%发射天线数量NumSTS = 2;时空流的数量NumRxAnts = 2;%的接收天线的数目cfgHEBase = wlanHESUConfig;cfgHEBase。ChannelBandwidth ='CBW20';% 信道带宽cfgHEBase。NumSpaceTimeStreams = NumSTS;时空流的数量cfgHEBase。NumTransmitAntennas = NumTxAnts;%发射天线数量cfgHEBase.APEPLength = 1E3;%以字节有效载荷长度cfgHEBase.ExtendedRange = FALSE;不要使用扩展范围格式cfgHEBase.Upper106ToneRU = FALSE;%不要使用上端106调RUcfgHEBase.PreHESpatialMapping = FALSE;的%空间映射预HE字段cfgHEBase.GuardInterval = 0.8;%保护间隔持续时间cfgHEBase。HELTFType = 4;%HE-LTF压缩模式cfgHEBase.ChannelCoding =“方法”;%信道编码cfgHEBase。MCS = 3;%调制和编码方案cfgHEBase.SpatialMapping =“自定义”;%自定义的波束赋形

空数据包(NDP)配置

在NDP传输被配置成具有零数据长度。由于NDP用于获得所述信道状态信息,空间时间流的数量等于发射天线的数目。这导致每个空时流的直接映射到发射天线。

cfgNDP = cfgHEBase;cfgNDP.APEPLength = 0;NDP%没有数据cfgNDP。NumSpaceTimeStreams = NumTxAnts;%有关反馈矩阵计算cfgNDP。SpatialMapping ='直接';每个文件携带一个STS

通道配置

在这个例子中,一个TGax NLOS室内信道模型使用具有延迟分布模型-B。示范-B轮廓被认为是NLOS当发射机与接收机之间的距离大于或等于5米。这在进一步描述wlanTGaxChannel。4×2的MIMO信道是模拟在这个例子。

创建并配置TGax通道chanBW = cfgHEBase.ChannelBandwidth;tgaxChannel = wlanTGaxChannel;tgaxChannel.DelayProfile ='型号-B';tgaxChannel.NumTransmitAntennas = NumTxAnts;tgaxChannel.NumReceiveAntennas = NumRxAnts;tgaxChannel.TransmitReceiveDistance = 5;NLOS的距离(米)%tgaxChannel.ChannelBandwidth = chanBW;tgaxChannel.LargeScaleFadingEffect =“没有”;fs = wlanSampleRate (cfgHEBase);tgaxChannel。SampleRate = f;

仿真参数

本实施例中与压缩量化的两种不同分辨率波束形成的性能进行比较,而不进行压缩。万博 尤文图斯对于每个量化分辨率,端到端模拟与各种SNR值被运行以确定所述分组错误率。802.11ax草案4.1指定只有两套量化分辨率的对于单用户波束成形(表9-31a在[1])。的价值codeBookSize确定用于量化波束形成反馈角(phi和psi)的比特数。当codeBookSize是Inf,不进行压缩。所选择的量化级别codeBookSize如下表所示:

codeBookSize压缩配置- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 NumBitsphi = 4;NumBitspsi = 2 1 NumBitsphi = 6;NumBitspsi = 4正没有压缩- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
codeBookSize = [0 1 Inf];

方法中的每个信噪比(dB)值,生成大量数据包,通过信道进行解调,以确定每个压缩配置的数据包错误率SNR向量。

SNR = 10:2:18;

在每个SNR点测试数据包的数量被限制为一个maxNumErrorsmaxNumPackets

  1. maxNumErrors是在每个SNR点模拟数据包错误的最大数目。当数据包错误的数量达到此限制,模拟在这个SNR点是完整的。

  2. maxNumPackets是在每个信噪比点上模拟的最大分组数,如果没有达到分组错误限制,则限制模拟的长度。

本例中选择的数字会导致在很短的模拟。对于统计学上有意义的结果,我们建议增加这些数字。

maxNumErrors = 10;在信噪比点的最大数据包错误数maxNumPackets = 100;在信噪比点的最大数据包数

处理SNR点

对于每个SNR点,分组的数目进行了测试,包错误率计算。的802.11ax预HE前导码是具有的802.11ac™向后兼容的,因此,在该示例波形用于同步一个VHT前端同步组件HE波形在接收机。对于每个分组,将发生以下的处理步骤。

波束形成器通过发送一个NDP获得转向矩阵,该NDP由波束形成器处理,生成反馈矩阵:

  1. 的NDP波形通过一个室内TGax信道模型被发送。不同的信道实现被建模为不同的数据包。

  2. 在OFDM解调后,AWGN被添加到接收的波形中,以创建每个子载波所需的平均信噪比。的comm.AWGNChannel配置为提供正确的信噪比。在OFDM解调过程中,根据接收天线的数目和未使用的子载波的噪声能量,对信道进行归一化处理。

  3. 所述分组在所述波束成形被检测到。

  4. 对粗载波频偏进行了估计和校正。

  5. 细定时同步被建立。设置在L-STF,L-LTF和L-SIG样品细定时,以允许在L-STF的开始或结束包的检测。

  6. 对精细载波频偏进行了估计和校正。

  7. 该HE-LTF从同步接收的波形中提取。该HE-LTF是OFDM解调,并进行信道估计。

  8. 奇异值分解所估计的信道和所述的波束成形反馈矩阵上执行,V进行计算。

  9. 如果没有压缩,该反馈矩阵,V将被用作通过波束形成器的导引矩阵。

  10. 如果使用压缩,反馈矩阵,V将被压缩和量化如在标准中指定,以创建一组角度。

波束形成器使用恢复的控制矩阵来传输数据包,而波束形成器对波束形成的数据传输进行解码以恢复PSDU:

  1. 由于电流示例假定在得到从波束成形的波束成形反馈零延迟,量化的角度被转换回波束成形反馈矩阵,V.

  2. 甲PSDU被创建并编码以创建与转向矩阵集到的波束成形反馈矩阵的单个分组波形,V.

  3. 波形通过同一室内TGax信道实现作为NDP传输通过。

  4. AWGN被添加到接收波形。

  5. 与NDP一样,同步和信道估计也要进行。

  6. 数据场从同步接收的波形中提取,并进行OFDM解调。

  7. 共相误差导频跟踪用于跟踪任何剩余载波频率偏移。

  8. 噪声估计是使用解调的数据字段飞行员和单流的信道估计在导频子载波执行。

  9. 相位校正的OFDM符号与信道估计相等。

  10. 对均衡后的符号进行解调和译码以恢复PSDU。

一个PARFOR循环可以用来并行处理信噪比点。要启用并行计算来提高速度,请注释掉“for”语句并取消下面的“parfor”语句的注释。

numQuant =元素个数(codeBookSize);numSNR =元素个数(信噪比);%的信噪比点数packetErrorRate = 0 (numQuant numSNR);%得到所占副载波指数和OFDM参数ofdmInfo = wlanHEOFDMInfo('HE-数据',cfgHEBase);从PPDU中提取字段的%索引IND = wlanFieldIndices(cfgHEBase);indSound = wlanFieldIndices(cfgNDP);对于ibf = 1: numQuant开关codeBookSize (ibf)%见P802.11ax/D4.1节9.4.1.64情况下0 NumBitsPsi = 2;为psi的比特数NumBitsPhi = 4;位%号披disp (“端至端仿真与压缩波束成形量化与”);DISP(['的位元数= 'num2str(NumBitsPhi)...'和= '的位元数num2str(NumBitsPsi)]);情况下1 NumBitsPsi = 4;为psi的比特数NumBitsPhi = 6;位%号披disp (“端至端仿真与压缩波束成形量化与”);DISP(['的位元数= 'num2str(NumBitsPhi)...'和= '的位元数num2str(NumBitsPsi)]);否则disp (“端至端仿真与非压缩波束成形”);结束%parfor isnr = 1:numSNR %使用“parfor”来加速模拟对于ISNR = 1:numSNR在每次迭代中设置随机的子流索引,以确保每个迭代使用一组可重复的随机数流= RandStream ('combRecursive''种子',100);stream.Substream = ISNR;RandStream.setGlobalStream(流);为每个模拟的信噪比点创建一个AWGN通道实例awgnChannel = comm.AWGNChannel;awgnChannel.NoiseMethod =“信噪比”;awgnChannel。SignalPower = 1 / tgaxChannel.NumReceiveAntennas;%说明噪声能量在零,所以信噪比是定义每%的有效子载波awgnChannel。信噪比=信噪比(isnr) -10 * log10 (ofdmInfo.FFTLength / ofdmInfo.NumTones);为每个SNR点创建一个配置对象实例%模拟。这将使使用PARFORcfgHE = cfgHEBase;%循环来模拟多个包numPacketErrors = 0;numPkt = 1;数据包传输的索引%numPacketErrors < = maxNumErrors & & numPkt < = maxNumPackets%空数据分组传输TX = wlanWaveformGenerator([],cfgNDP);%添加尾随零,以允许信道延迟txPad = [tx;0 (50,cfgNDP.NumTransmitAntennas)];通过衰落室内TGax通道%通行证复位(tgaxChannel);%复位通道,实现方式不同RX = tgaxChannel(txPad);%将波形通过AWGN通道RX = awgnChannel(RX);%计算在波束成形的导引矩阵V = heUserBeamformingFeedback (rx, cfgNDP,真);如果isempty (V)%用户反馈失败,数据包错误numPacketErrors = numPacketErrors + 1;numPkt = numPkt + 1;继续;%进入下一个循环迭代结束如果〜isinf(codeBookSize(IBF))找出波束形成反馈矩阵的量子化角度angidx = bfCompressQuantize(V(:,1:NumSTS,:),NumBitsPhi,NumBitsPsi);%从量子化角度计算转向矩阵%波束形成器:%假定在发送量化的角度零延迟%从beamformee到beamformer,转向矩阵为从量子化角度计算得到的,在%波束形成器的数据传输。[~,数控,Nr] =大小(V (1,1: NumSTS:));V = bfDecompress (angidx、Nr、数控、NumBitsPhi NumBitsPsi);结束steeringMat = V (: 1: NumSTS:);%波束形成数据传输psduLength = getPSDULength (cfgHE);%以字节为单位的长度PSDUtxPSDU =兰迪([0 1],psduLength * 8,1);%生成随机PSDUcfgHE.SpatialMappingMatrix = steeringMat;TX = wlanWaveformGenerator(txPSDU,cfgHE);%添加尾随零,以允许信道延迟txPad = [tx;0 (50,cfgHE.NumTransmitAntennas)];通过衰落室内TGax通道%通行证RX = tgaxChannel(txPad);%将波形通过AWGN通道RX = awgnChannel(RX);%的分组检测和确定粗分组偏移coarsePktOffset = wlanPacketDetect(RX,chanBW);如果的isEmpty(coarsePktOffset)%如果为空,未检测到L-STF;包错误numPacketErrors = numPacketErrors + 1;numPkt = numPkt + 1;继续;%进入下一个循环迭代结束提取L-STF并进行粗频偏校正lstf = rx (coarsePktOffset + (ind.LSTF (1): ind.LSTF (2)),:);coarseFreqOff = wlanCoarseCFOEstimate (lstf chanBW);rx = helperFrequencyOffset (rx, fs -coarseFreqOff);%提取非HT字段和确定细包偏移nonhtfields = rx (coarsePktOffset + (ind.LSTF (1): ind.LSIG (2)),:);finePktOffset = wlanSymbolTimingEstimate (nonhtfields chanBW);%确定最终分组偏移pktOffset = coarsePktOffset + finePktOffset;%如果包检测到与预期的延迟范围从%的信道建模;包错误如果pktOffset> 50个numPacketErrors = numPacketErrors + 1;numPkt = numPkt + 1;继续;%进入下一个循环迭代结束提取L-LTF并进行频率偏移校正rxLLTF = RX(pktOffset +(ind.LLTF(1):ind.LLTF(2)),:);fineFreqOff = wlanFineCFOEstimate(rxLLTF,chanBW);RX = helperFrequencyOffset(RX,FS,-fineFreqOff);% HE-LTF解调和信道估计rxHELTF = RX(pktOffset +(ind.HELTF(1):ind.HELTF(2)),:);heltfDemod = wlanHEDemodulate(rxHELTF,'HE-LTF',cfgHE);[CHANEST,pilotEst] = heLTFChannelEstimate(heltfDemod,cfgHE);%数据解调RXDATA = RX(pktOffset +(ind.HEData(1):ind.HEData(2)),:);demodSym = wlanHEDemodulate(RXDATA,'HE-数据',cfgHE);%试验阶段跟踪%平均单流导频估计超过码元(第二尺寸)pilotEstTrack =平均(pilotEst,2);demodSym = heCommonPhaseErrorTracking(demodSym,pilotEstTrack,cfgHE);估计噪声功率据nvar = heNoiseEstimate (demodSym (ofdmInfo.PilotIndices,:,:), pilotEstTrack, cfgHE);从解调的符号和信道%提取数据子载波%估算demodDataSym = demodSym(ofdmInfo.DataIndices,:,:);chanEstData = CHANEST(ofdmInfo.DataIndices,:,:);%均衡和STBC联合[eqDataSym, csi] = heEqualizeCombine (demodDataSym chanEstData,据nvar, cfgHE);%恢复数据rxPSDU = wlanHEDataBitRecover(eqDataSym,nVarEst,CSI cfgHE,“LDPCDecodingMethod”'分层-BP');%确定是否有任何位是错误的,即一个数据包错误packetError = ~ isequal (txPSDU rxPSDU);numPacketErrors = numPacketErrors + packetError;numPkt = numPkt + 1;结束在信噪比点计算数据包误码率(PER)packetErrorRate(IBF,ISNR)= numPacketErrors /(numPkt-1);DISP(['MCS'num2str(cfgHE.MCS)''...'SNR'num2str(SNR(ISNR))...“之后完成”num2str (numPkt-1)“包”...'PER:'num2str (packetErrorRate (ibf, isnr))));结束DISP(换行);结束
端到端模拟与压缩波束形成量化位数为φ= 4和ψ= 2 MCS 3位数,信噪比后10完成13个包,每个:0.84615 MCS 3,信噪比12完成53个数据包后,每:0.20755 MCS 3,信噪比14 100包完成后,每:0.07 MCS 3,信噪比16 100包完成后,每:0 MCS 3,信噪比18 100包完成后,每:0的端到端模拟与压缩波束形成量化位数φ= 6和ψ= 4 MCS 3位数,信噪比后10完成13包,每:0.84615 MCS 3,信噪比12完成54个数据包后,每:0.2037 MCS 3,信噪比14 100包完成后,每:0.06 MCS 3,信噪比16 100包完成后,每:0 MCS 3,信噪比18 100包完成后,每:0与未压缩的端到端模拟波束形成MCS 3,信噪比后10完成13个包,每:0.84615 MCS 3, SNR 12完成后59个包,每:0.18644 MCS 3, SNR 14完成后100个包,每:0.07 MCS 3, SNR 16完成后100个包,每:0 MCS 3, SNR 18完成后100个包,每:0

图包错误率与信噪比

数字;线型= [“k o”“B-S”“R *”];semilogy(SNR,packetErrorRate(1,:),线型(1));保持;网格;包含(“信噪比(dB)”);ylabel ('每');对于IBF = 2:numQuant semilogy(SNR,packetErrorRate(IBF,:),线型(IBF));结束dataStr = [字符串([压缩的波束形成,换行符...'NumBitsPhi = 4,NumBitsPsi = 2'换行符)...串([压缩的波束形成,换行符...'NumBitsPhi = 6,NumBitsPsi = 4'换行符)...“非压缩的波束成形”];传奇(dataStr);标题(sprintf ('802.11ax波束形成PER为通道%s, %s, %s',cfgHEBase.ChannelBandwidth tgaxChannel.DelayProfile cfgHEBase.ChannelCoding));

在每个信噪比点测试的数据包数量由两个参数控制:maxNumErrorsmaxNumPackets。对于有意义的结果,这些值应该大于本例中的值。作为一个例子,下面的图是通过运行一个更长的模拟来创建的maxNumErrors:1E3和maxNumPackets:1E4。

附录

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

选择的参考书目

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