主要内容

802.11AX压缩波束成形分组错误速率仿真

此示例显示了如何测量波束形成的IEEE®802.11AX™高效单用户(HE SU)格式链路的数据包错误率,具有不同的波束形成反馈量化级别。

介绍

传输波束成形将能量聚焦到接收器以改善链路的SNR。在该方案中,发送器称为波束形成器,接收器称为波束形成器。波束形成器使用转向矩阵以将能量引导到波束上。使用通过信道测量获得的信道状态信息来计算转向矩阵。通过发出波束形成器和波束形成器之间的信道来获得这些测量。要发出声道,波束形成器将空数据包(NDP)发送到波束格式。波束形式在响声期间测量频道信息以计算反馈矩阵。该矩阵以量化角度(PHI和PSI)的形式被压缩,并反馈回波束形成器。然后,波束形成器可以从量化的角度计算反馈矩阵,以将转向矩阵和波束形成传输产生给波束形成器。形成转向矩阵的过程802.11交流传输波束形成

在该示例中,在发射器和接收器之间考虑4x2 MIMO配置,用于每个数据分组传输的两个时空流。端到端模拟用于确定802.11AX的数据包错误率(每个)[1单用户(SU)格式链接压缩波束形成反馈量化针对不同的量化水平和信噪比点的选择。生成的图显示了每个量化分辨率的PER与SNR曲线。本例不考虑子载波分组(见[1])。

波形的配置

HE-SU包是对单个用户的全频带传输。HE-SU格式的传输参数使用wlanhauconfig对象。对象的属性包含配置。本例中,该对象配置为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。一个PEPLength = 1e3;%有效负载长度,以字节为单位cfgHEBase。ExtendedRange = false;%不要使用扩展范围格式cfgHEBase。Upper106ToneRU = false;%不要使用高于106音RUcfgHEBase。PreHESpatialMapping = false;% pre-HE字段空间映射cfgHEBase。GuardInterval = 0.8;保护间隔时间cfgHEBase。HELTFType = 4;% HE-LTF压缩模式cfgHEBase。ChannelCoding =“方法”%信道编码cfghebase.mcs = 3;%调制和编码方案cfgHEBase。SpatialMapping =“自定义”%自定义波束形成

null数据包(NDP)配置

配置NDP传输的数据长度为0。由于NDP是用来获取信道状态信息的,所以空时流的数量等于发射天线的数量。这将导致每个时空流直接映射到发射天线。

cfgNDP = cfgHEBase;cfgNDP。一个PEPLength = 0;% NDP没有数据cfgNDP。NumSpaceTimeStreams = NumTxAnts;%用于反馈矩阵计算cfgndp.spatialMapping =.“直接”%每个Txant携带STS

通道配置

在本例中,使用TGax NLOS室内信道模型和延迟轮廓模型b。当发射机和接收机之间的距离大于或等于5米时,b型剖面被认为是NLOS。这将在后面进一步描述wlanTGaxChannel.本例模拟了一个4x2 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 ='没有任何';tgaxchannel.normalizechanneloutpuls = false;FS = WLANSAMPLEDE(CFGHEBASE);tgaxchannel.samplere = fs;

仿真参数

本实例比较了压缩量化和不压缩量化两种不同分辨率下的波束形成性能。万博 尤文图斯对于每个量化分辨率,运行不同信噪比值的端到端仿真来确定包错误率。草案4.1仅为单用户波束形成指定了两组量化分辨率(表9-31a1])。的价值codeBookSize确定用于在该模拟中量化波束形成反馈角(PHI和PSI)的比特数。什么时候codeBookSize是INF,没有进行压缩。选择的量化级别codeBookSize如下表所示:

codeBookSize压缩配置  -------------------------------------------------------- 0 NumBitsphi = 4;NumBitspsi = 2 1 NumBitspsi = 1;NumBitspsi = 4正不压缩  --------------------------------------------------------
codebooksize = [0 1 inf];

生成多个包,通过一个通道并解调,以确定每个压缩配置在每个信噪比(dB)值下的包错误率信噪比向量。

信噪比= 10:2:18;

在每个信噪比点上测试的包数被限制为amaxNumErrorsmaxNumPackets

  1. maxNumErrors为每个信噪比点模拟的最大包错误数。当包错误数达到该限制时,此信噪比点的仿真就完成了。

  2. maxNumPackets是在每个SNR点处模拟的最大数据包数,并限制模拟的长度如果未达到数据包错误限制。

在这个例子中选择的数字将导致一个非常短的模拟。对于统计上有意义的结果,我们建议增加这些数字。

maxNumErrors = 10;%一个信噪比点的最大包错误数maxNumPackets = 100;%一个信噪比点的最大包数

处理信噪比点

对每个信噪比点测试多个包,计算包错误率。802.11ax的前置HE前导与802.11ac™向后兼容,因此在本例中,VHT波形的前端同步组件用于同步接收机的HE波形。对于每个包,将执行以下处理步骤。

波束形成器通过发送NDP得到转向矩阵,NDP经过波束形成器处理后生成反馈矩阵:

  1. NDP波形通过室内TGax信道模型传输。为不同的数据包建模不同的通道实现。

  2. 在OFDM解调后,将AWGN加入到接收波形中,以产生所需的每有源子载波的平均信噪比。

  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. 波形通过与NDP传输相同的室内TGax信道实现。

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

  5. 和NDP一样,进行了同步和HE信道估计。

  6. 数据字段从同步接收波形和OFDM解调中提取。

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

  8. 噪声估计使用解调数据场导频和导频子载波的单流信道估计。

  9. 相位校正的OFDM符号用信道估计均衡。

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

一个parfor环路可用于并行处理信噪比点。为了使用并行计算来提高速度,请将下面的'for'语句注释掉,并取消对'parfor'语句的注释。

nimitant = numel(码本大小);numsnr = numel(snr);数量的SNR点数packeterrorrate = zeros(nimquant,numsnr);%获取已占用子载波指标和OFDM参数ofdmInfo = wlanHEOFDMInfo (“数据”, cfgHEBase);%从PPDU中提取字段的索引印第安纳州= wlanFieldIndices (cfgHEBase);indSound = wlanFieldIndices (cfgNDP);IBF = 1:NimQuant开关码本(IBF)%见P802.11ax/D4.1章节9.4.1.64案件0 NumBitsPsi = 2;PSI的百分比数量NumBitsPhi = 4;%的比特数DISP(压缩波束形成量化的端到端仿真);disp (['phi ='的比特数num2str (NumBitsPhi)...' and Number of Bits for psi = 'num2str (NumBitsPsi)]);案件1 NumBitsPsi = 4;PSI的百分比数量numbitsphi = 6;%的比特数DISP(压缩波束形成量化的端到端仿真);disp (['phi ='的比特数num2str (NumBitsPhi)...' and Number of Bits for psi = 'num2str (NumBitsPsi)]);除此以外DISP(“非压缩波束形成的端到端仿真”);结束%partsnr = 1:numsnr%使用'par for'加速模拟isnr = 1: numSNR%迭代设置随机子流索引,以确保每个%迭代使用一组可重复的随机数流= RandStream (“combRecursive”“种子”, 100);流。Substream = isnr;RandStream.setGlobalStream(流);%考虑噪声能量为零,因此信噪比定义为%活跃副载波packetSNR =信噪比(isnr) -10 * log10 (ofdmInfo.FFTLength / ofdmInfo.NumTones);%为每个SNR点创建一个HE配置对象实例%的模拟。这将允许使用parforcfgHE = cfgHEBase;% Loop模拟多个数据包numPacketErrors = 0;numPkt = 1;传输的数据包%索引numPacketErrors < = maxNumErrors & & numPkt < = maxNumPackets%空数据包传输tx = wlanWaveformGenerator ([], cfgNDP);添加尾随零以允许通道延迟txPad = [tx;0 (50, cfgNDP.NumTransmitAntennas)];%通过衰落的室内TGax信道重置(tgaxChannel);为不同的实现重置通道rx = tgaxChannel (txPad);%通过AWGN通道传递波形rx = awgn (rx, packetSNR);在波束形成时计算转向矩阵V = heUserBeamformingFeedback (rx, cfgNDP,真);如果isempty(v)%用户反馈失败,数据包错误numpacketerrors = numpacketerrors + 1;numPkt = numPkt + 1;继续%进入下一个循环迭代结束如果~ isinf (codeBookSize (ibf))%找到波束形成反馈矩阵的量化角度angidx = bfCompressQuantize (V (: 1: NumSTS,:), NumBitsPhi, NumBitsPsi);%从量化角度计算转向矩阵% beamformer:%假设发射量化角的延迟为零从波束形成器到波束形成器,转向矩阵为%由量化角度计算并用于%波束形成器数据传输。[〜,nc,nr] =大小(v(1,1:numsts,:));v = bfdecpress(angidx,nr,nc,numbitsphi,numbitspsi);结束steeringmat = v(:,1:numsts,:);%波束形成的数据传输psdulength = getpsdulength(cfghe);% PSDU长度,以字节为单位txPSDU = randi([0 1],psduLength*8,1);%生成随机PSDUcfgHE。SpatialMappingMatrix = steeringMat;tx = wlanWaveformGenerator (txPSDU cfgHE);添加尾随零以允许通道延迟txPad = [tx;零(50,cfghe.numtransmitantannas)];%通过衰落的室内TGax信道rx = tgaxChannel (txPad);%通过AWGN通道传递波形rx = awgn (rx, packetSNR);包检测并确定粗包偏移量chanBW coarsePktOffset = wlanPacketDetect (rx);如果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);(陈,飞行员)= heLTFChannelEstimate (heltfDemod cfgHE);%数据解调rxData = rx (pktOffset + (ind.HEData (1): ind.HEData (2)),:);demodSym = wlanHEDemodulate (rxData,“数据”, cfgHE);导频相位跟踪%符号上的单流试验估计平均值(2维)pilotEstTrack =意味着(飞行员,2);demodSym = heCommonPhaseErrorTracking (demodSym pilotEstTrack cfgHE);估算HE领域的噪声功率nvarest = henoiseestimate(remodsym(Ofdminfo.pilotindices,::),pilotesttrack,cfghe);从解调符号和信道中提取数据子载波%的估计demodDataSym = demodSym (ofdmInfo.DataIndices,:,);chanEstData =成龙(ofdmInfo.DataIndices,:,);%均衡和STBC组合[eqDataSym, csi] = heEqualizeCombine (demodDataSym chanEstData,据nvar, cfgHE);%恢复数据据nvar rxPSDU = wlanHEDataBitRecover (eqDataSym, csi, cfgHE,“LDPCDecodingMethod”“layered-bp”);%确定是否有任何位错误,即数据包错误Packeterror =〜Isequal(TXPSDU,RXPSDU);numpacketerrors = numpacketerrors + packeterror;numPkt = numPkt + 1;结束%计算SNR点的数据包错误率(每个)packetErrorRate (ibf isnr) = numPacketErrors / (numPkt-1);disp ([“主持人”num2str (cfgHE.MCS)”、“...“信噪比”num2str(信噪比(isnr))...“完成后”num2str (numPkt-1)“包”,...“每:”num2str(packeterrorrate(IBF,ISNR))]);结束disp(换行符);结束
端到端模拟与压缩波束形成量化位数为φ= 4和ψ= 2 MCS 3位数,信噪比后10完成13个包,每个:0.84615 MCS 3,信噪比12完成54个数据包后,每:0.2037 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,信噪比12 59包完成后,每:0.18644 MCS 3,信噪比14 100包完成后,每:0.06 MCS 3,信噪比16 100包完成后,PER:0 MCS 3,信噪比18完成后100包,PER:0

标绘包错误率与信噪比

图;线型= [“k-o”“台球”“r - *”];semilogy(信噪比、packetErrorRate(1:),线型(1));持有;网格;Xlabel('snr(db)');ylabel (“每”);ibf = 2:numQuant semilogy(snr,packetErrorRate(ibf,:),lineTypes(ibf));结束dataStr = [string (['压缩的波束形成,'新队...' NumBitsPsi = 4, NumBitsPsi = 2'换行符)...字符串(['压缩的波束形成,'新队...' NumBitsPsi = 6, NumBitsPsi = 4'换行符)...“没有波束形成”];传奇(dataStr);标题(sprintf ('802.11ax波束成形每个用于频道%s,%s,%s', cfgHEBase.ChannelBandwidth tgaxChannel.DelayProfile cfgHEBase.ChannelCoding));

每个信噪比点测试的包数由两个参数控制:maxNumErrorsmaxNumPackets.对于有意义的结果,这些值应大于此示例中所呈现的值。例如,下面的图是通过运行更长的仿真来创建的maxNumErrors: 1 e3和maxNumPackets: 1 e4。

附录

这个例子使用了以下帮助函数:

选定的参考书目

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