主要内容

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

这个例子展示了如何测量具有不同波束形成反馈量化级别的波束形成IEEE®802.11ax™高效单用户(HE SU)格式链路的包错误率。

介绍

发射波束形成将能量集中到接收器上,以提高链路的信噪比。在这种方案中,发送端称为波束形成器,接收端称为波束形成器。波束形成器使用一个转向矩阵来将能量导向波束形成器。利用信道测量得到的信道状态信息计算转向矩阵。这些测量是通过探测波束形成器和波束形成器之间的通道获得的。为了对信道发出声音,波束形成器向波束形成器发送一个空数据包(NDP)。波束在探测过程中测量信道信息,计算反馈矩阵。这个矩阵被压缩成量子化角(phi和psi)的形式并反馈给波束形成器。然后波束形成器可以从量化的角度计算反馈矩阵,以创建一个转向矩阵和波束形成传输到波束形成器。成形转向矩阵的过程如图所示802.11ac传输波束形成

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

波形配置

HE-SU数据包是对单个用户的全频段传输。HE-SU格式的传输参数使用wlanHESUConfig对象。对象的属性包含配置。本例中,该对象配置为20mhz信道带宽、4个发送天线、2个空时流、16-QAM速率-1/2 (MCS 3)。

numtxants = 4;%发送天线数numsts = 2;%空间流的数量numnrxants = 2;%接收天线数cfghebase = wlanhauconfig;cfghebase.channelbandwidth =“CBW20”%信道带宽cfgHEBase。NumSpaceTimeStreams = NumSTS;%空间流的数量cfghebase.numtransmitantennas = numtxants;%发送天线数cfgHEBase.APEPLength=1e3;%有效负载长度,以字节为单位cfgHEBase。ExtendedRange = false;%不使用扩展范围格式cfgHEBase。Upper106ToneRU = false;%不要使用upper 106 tone rucfgHEBase.PreHESpatialMapping=false;% pre-HE字段空间映射cfgHEBase.GuardInterval=0.8;%保护间隔持续时间cfghebase.heltftype = 4;% HE-LTF压缩模式cfgHEBase.ChannelCoding='ldpc'%信道编码cfgHEBase。MCS = 3;%调制和编码方案cfghebase.spatialMapping =.“自定义”%自定义波束形成

NDP (Null Data Packet)配置

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

cfgNDP = cfgHEBase;cfgNDP。A.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。NormalizeChannelOutputs = false;fs = wlanSampleRate (cfgHEBase);tgaxChannel。SampleRate = f;

仿真参数

此示例比较了在两种不同压缩量化分辨率和无压缩情况下波束形成的性能。对于每个量化分辨率,使用不同SNR值运行端到端模拟以确定分组错误率。802.11a金宝搏官方网站x草案4.1仅为单个用户指定了两组量化分辨率波束形成(表9-31a)[1.])。的价值码本大小确定在此仿真中用于量化波束形成反馈角(phi和psi)的比特数。当码本大小则不执行压缩。所选择的量子化能级码本大小如下表所示:

Codebooksize压缩配置----------------------------------------------- 0 numbitsphi = 4;numbitspsi = 2 1 numbitsphi = 6;numbitspsi = 4 inf没有压缩-------------------------------------------------------------------
codeBookSize = [0 1 Inf];

生成多个数据包,通过通道并解调以确定每个SNR(DB)值下的每个压缩配置的分组错误率信噪比向量。

信噪比=10:2:18;

在每个信噪比点上测试的包数被限制为amaxNumErrors或者maxnumpackets.:

  1. maxNumErrors是在每个SNR点模拟的最大数据包错误数。当数据包错误数达到这个极限时,在这个SNR点的模拟就完成了。

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

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

maxnumerrors = 10;%SNR点的最大分组错误数maxNumPackets = 100;%SNR点的最大数据包数

处理信噪比点

对于每个SNR点,测试多个数据包并计算数据包错误率。802.11ax的前序与802.11ac向后兼容™, 因此,在本示例中,VHT波形的前端同步组件用于同步接收器处的HE波形。对于每个数据包,发生以下处理步骤。

波束形成器通过传输由波束形式处理的NDP来获得转向矩阵以创建反馈矩阵:

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

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

  3. 该数据包在beamformee处被检测到。

  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。

A.帕弗循环可用于并行化SNR点的处理。要使并行计算的使用增加速度评论出“for”声明,并取消注释下面的“栏杆”声明。

numQuant =元素个数(codeBookSize);numSNR =元素个数(信噪比);数量的SNR点数packetErrorRate = 0 (numQuant numSNR);%获取占用子载波指数和OFDM参数ofdmInfo = wlanHEOFDMInfo (“数据”,cfgHEBase);%索引从PPDU中提取字段ind=WLANFIELDICES(cfgHEBase);indSound=WLANFIELDICES(cfgNDP);对于IBF = 1:NimQuant转变codeBookSize (ibf)%见P802.11AX / D4.1第9.4.1.64节情况下0磅/平方英寸=2;PSI的百分比数量NumBitsPhi = 4;%phi的位数disp ('使用压缩波束形成量化的端到端模拟');disp(['phi ='的比特数num2str (NumBitsPhi)......'PSI ='的比特数num2str(NumBitsPsi)];情况下1 numbitspsi = 4;PSI的百分比数量NumBitsPhi = 6;%phi的位数disp ('使用压缩波束形成量化的端到端模拟');disp(['phi ='的比特数num2str (NumBitsPhi)......'PSI ='的比特数num2str(NumBitsPsi)];否则disp (“非压缩波束形成的端到端仿真”);终止%parfor isnr = 1:numSNR %使用“parfor”加速模拟对于isnr=1:numSNR%每次迭代设置随机子流索引,以确保每个%迭代使用可重复的随机数Stream = RANDSTREAM(“组合递归”,“种子”, 100);流。Substream = isnr;RandStream.setGlobalStream(流);%ocket用于空中的噪声能量,因此每次定义SNR%有源副载波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;零(50,cfgndp.numtransmitantennas)]];%通过衰落的室内TGax信道重置(tgaxChannel);用于不同实现的%重置通道rx=tgaxChannel(txPad);%将波形通过AWGN通道rx=awgn(rx,packetSNR);在波束形成时计算转向矩阵v = heuserbeamformingfeedback(rx,cfgndp,true);如果isempty (V)%用户反馈失败,数据包错误numPacketErrors = numPacketErrors + 1;numPkt = numPkt + 1;继续%转到下一个循环迭代终止如果~isinf(代码本大小(ibf))求波束形成反馈矩阵的量子化角度angidx=bfCompressQuantize(V(:,1:NumSTS,:),NumBitsPhi,NumBitsPsi);从点的量子化角度计算转向矩阵% beamformer:%假设传输量化角度的延迟为零从波束形成器到波束形成器的%,转向矩阵是%由量子化角度计算,用于%波束形成器的数据传输。[~,数控,Nr] =大小(V (1,1: NumSTS:));V = bfDecompress (angidx、Nr、数控、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);%数据包检测并确定粗分组偏移量粗糙度PKTOFFSET=WLANPACKETDERTECT(rx,chanBW);如果isempty(粗pktoffset)%如果为空没有检测到L-STF;包错误numPacketErrors = numPacketErrors + 1;numPkt = numPkt + 1;继续%转到下一个循环迭代终止%提取L-STF并执行粗略频率偏移校正lstf = rx(coarsepktoffset +(ind.lstf(1):Ind.lstf(2)),:);coarsfreqoff = wlancoarsecfoestimate(lstf,chanbw);rx = helperfrequencyOffset(RX,FS,-CoarseFreqoff);%提取非ht字段并确定精细数据包偏移量nonhtfields = rx(coarsepktoffset +(ind.lstf(1):Ind.lsig(2)),:);finepktoffset = WlanyMboltimingEstime(非Hantfields,Chanbw);确定最后的数据包偏移量pktOffset = coarsePktOffset + finePktOffset;%如果数据包检测到从预期延迟范围介绍%信道建模;分组错误如果pktOffset>50 numPacketErrors = numPacketErrors+1;numPkt = numPkt + 1;继续%转到下一个循环迭代终止%提取L-LTF并执行细频偏移校正rxLLTF=rx(pktofset+(ind.LLTF(1):ind.LLTF(2)),:;fineFreqOff=wlanFineCFOEstimate(rxLLTF,chanBW);rx=helperfrequencycoffset(rx,fs,-fineFreqOff);%HE-LTF解调和信道估计rxHELTF=rx(pktofset+(ind.HELTF(1):ind.HELTF(2)),:);heltfdem=wlanHEDemodulate(rxHELTF,“HE-LTF”, cfgHE);(陈,飞行员)= heLTFChannelEstimate (heltfDemod cfgHE);%数据解调rxData = rx (pktOffset + (ind.HEData (1): ind.HEData (2)),:);demodSym = wlanHEDemodulate (rxData,“数据”, cfgHE);%导频相位跟踪%符号上的单流试验估计平均值(2维)pilotEstTrack=平均值(pilotEst,2);DemoSym=共相位误差跟踪(DemoSym,pilotEstTrack,cfgHE);估计他领域的估计噪音力量据nvar = heNoiseEstimate (demodSym (ofdmInfo.PilotIndices,:,:), pilotEstTrack, cfgHE);从解调符号和信道中提取数据子载波%估计demodatasym=demodSym(ofdmInfo.dataindex,:,:);chanEstData=chanEst(ofdmInfo.dataindex,:,:);%均衡和STBC组合[eqdatasym,csi] = heequalizeCombine(Demoddatasym,Chanestdata,Nvarest,Cfghe);%恢复数据rxPSDU=wlanHEDataBitRecover(eqDataSym、nVarEst、csi、cfgHE、,'ldpcdecodingmethod',“分层bp”);%确定是否有任何位出错,即数据包错误packetError = ~ isequal (txPSDU rxPSDU);numPacketErrors = numPacketErrors + packetError;numPkt = numPkt + 1;终止%计算信噪比点的包错误率包装错误率(ibf,isnr)=numPacketErrors/(numPkt-1);disp([“MCS”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”“b-s”“r - *”];semilogy(信噪比、packetErrorRate(1:),线型(1));持有;网格;Xlabel(“信噪比(dB)”);ylabel(“每”);对于ibf = 2:numQuant semilogy(snr,packetErrorRate(ibf,:),lineTypes(ibf));终止dataStr=[string([压缩的波束形成,换行符......‘NumBitsPhi=4,NumBitsPsi=2’新队])......字符串([压缩的波束形成,换行符......‘NumBitsPhi=6,NumBitsPsi=4’新队])......“非压缩波束形成”];传奇(数据组);标题(Sprintf('802.11ax波束形成PER for Channel %s, %s, %s',tgaxchannel.delayprofile,cfghebase.channelbandwidth,cfghebase.channelcoding));

在每个SNR点测试的数据包数由两个参数控制:maxNumErrorsmaxnumpackets..对于有意义的结果,这些值应该大于本例中所示的值。作为一个例子,下面的图是通过使用maxNumErrors: 1 e3和maxnumpackets.:1e4。

附录

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

选定的参考书目

  1. IEEE P802.11AX™/ D4.1信息技术标准草案 - 系统之间的电信和信息交流 - 本地和大都市区域网络 - 特定要求 - 第11部分:无线LAN介质访问控制(MAC)和物理层(PHY)规格 -修正案6:高效WLAN的增强。