主要内容

802.11ax压缩波束形成包错误率模拟

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

简介

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

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

波形的配置

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

NumTxAnts = 4;%发射天线个数NumSTS = 2;%时空流个数NumRxAnts = 2;%接收天线个数cfgHEBase = wlanHESUConfig;cfgHEBase。ChannelBandwidth =“CBW20”通道带宽%cfgHEBase。NumSpaceTimeStreams = NumSTS;%时空流个数cfgHEBase。numtransmitantenna = NumTxAnts;%发射天线个数cfgHEBase。一个PEPLength = 1e3;负载长度(以字节为单位)cfgHEBase。ExtendedRange = false;不要使用扩展范围格式cfgHEBase。Upper106ToneRU = false;不使用106调以上的俄服cfgHEBase。PreHESpatialMapping = false;pre-HE字段的空间映射cfgHEBase。GuardInterval = 0.8;防护间隔时间%cfgHEBase。HELTFType = 4;HE-LTF压缩模式cfgHEBase。ChannelCoding =“方法”%信道编码cfgHEBase。MCS = 3;调制和编码方案cfgHEBase。SpatialMapping =“自定义”%自定义波束形成

NDP (Null Data Packet)配置

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。numtransmitantenna = NumTxAnts;tgaxChannel。numreceiveantenna = NumRxAnts;tgaxChannel。TransmitReceiveDistance = 5;%距离(以米为单位)tgaxChannel。ChannelBandwidth = chanBW;tgaxChannel。LargeScaleFadingEffect =“没有”;tgaxChannel。NormalizeChannelOutputs = false;fs = wlanSampleRate(cfgHEBase);tgaxChannel。SampleRate = fs;

仿真参数

本例比较了两种不同压缩量化分辨率和不压缩时波束形成的性能。金宝搏官方网站对于每个量化分辨率,运行具有不同信噪比值的端到端模拟以确定包错误率。802.11ax Draft 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)值下的每个压缩配置的包错误率信噪比向量。

信噪比= 10:2:18;

在每个信噪比点上测试的数据包数量限制为maxNumErrorsmaxNumPackets

  1. maxNumErrors为每个信噪比点模拟的最大包错误数。当报文错误数达到该限制值时,该信噪比点的模拟结束。

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

本例中选择的数字将导致一个非常短的模拟。为了获得统计上有意义的结果,我们建议增加这些数字。

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

处理信噪比点

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

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

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

  2. 将AWGN添加到接收的波形中,以在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. 波形通过与NDP传输相同的室内TGax信道实现。

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

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

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

  7. 执行公共相位误差导频跟踪以跟踪任何剩余载波频率偏移。

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

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

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

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

numQuant = numel(codeBookSize);numSNR = numel(snr);信噪比百分比packetErrorRate = 0 (numQuant,numSNR);获取占用子载波指数和OFDM参数ofdmInfo = wlanHEOFDMInfo(“数据”, 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)...'和psi = '的位数num2str (NumBitsPsi)]);情况下1 NumBitsPsi = 4;% psi的位数NumBitsPhi = 6;的比特数disp (带压缩波束形成量化的端到端模拟);disp ([=的比特数num2str (NumBitsPhi)...'和psi = '的位数num2str (NumBitsPsi)]);否则disp (采用非压缩波束形成的端到端模拟);结束%parfor isnr = 1:numSNR %使用'parfor'加快模拟速度isnr = 1:numSNR每次迭代设置随机子流索引,以确保每个子流的索引迭代使用一组可重复的随机数流= RandStream(“combRecursive”“种子”, 100);流。Substream = isnr;RandStream.setGlobalStream(流);%考虑噪声能量为空,因此信噪比定义为有源子载波百分比packetSNR = snr(isnr)-10*log10(ofdmInfo.FFTLength/ofdmInfo.NumTones);为每个信噪比点创建一个HE配置对象实例%的模拟。这将允许使用parforcfgHE = cfgHEBase;%循环模拟多个数据包numPacketErrors = 0;numPkt = 1;%发送的报文索引numPacketErrors<=maxNumErrors && numPkt<=maxNumPackets%空数据包传输tx = wlanWaveformGenerator([],cfgNDP);添加尾随零以允许信道延迟txPad = [tx;0 (50, cfgNDP.NumTransmitAntennas)];通过一个衰落的室内TGax通道重置(tgaxChannel);为不同的实现重置通道rx = txxchannel (txPad);通过AWGN通道传递波形rx = awgn(rx,packetSNR);计算波束范围内的转向矩阵V = heUserBeamformingFeedback(rx,cfgNDP,true);如果isempty (V)%用户反馈失败,数据包错误numPacketErrors = numPacketErrors+1;numPkt = numPkt+1;继续%转到下一次循环迭代结束如果~ isinf (codeBookSize (ibf))求波束形成反馈矩阵的量子化角度angidx = bfCompressQuantize(V(:,1:NumSTS,:),NumBitsPhi,NumBitsPsi);从的量子化角度计算转向矩阵% beamformer:%假设传输量子化角度的延迟为零%从波束发生器到波束形成器,转向矩阵为%由量子化角度计算,用于%波束形成器的数据传输。[~,Nc,Nr] = size(V(1,1:NumSTS,:));V = bfDecompress(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;0 (50, cfgHE.NumTransmitAntennas)];通过一个衰落的室内TGax通道rx = txxchannel (txPad);通过AWGN通道传递波形rx = awgn(rx,packetSNR);包检测和确定粗包偏移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)),:);粗freqoff = wlan粗secfoestimate (lstf,chanBW);rx = helperFrequencyOffset(rx,fs,-粗freqoff);提取非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,“数据”, cfgHE);导频相位跟踪对符号的平均单流导频估计(第2维)pilotEstTrack = mean(pilotEst,2);demodSym = heCommonPhaseErrorTracking(demodSym,pilotEstTrack,cfgHE);估计HE场的噪声功率nVarEst = heNoiseEstimate(demodSym(ofdmInfo.PilotIndices,:,:),pilotEstTrack,cfgHE);从解调的符号和信道中提取数据子载波%的估计demodDataSym = demodSym(ofdinfo . dataindices,:,:);chanEstData = chanEst(ofdinfo . dataindices,:,:);%平衡和STBC结合[eqDataSym,csi] = heEqualizeCombine(demodDataSym,chanEstData,nVarEst,cfgHE);%恢复数据rxPSDU = wlanHEDataBitRecover(eqDataSym,nVarEst,csi,cfgHE,“LDPCDecodingMethod”“layered-bp”);确定是否有任何位错误,即数据包错误。packetError = ~isequal(txPSDU,rxPSDU);numPacketErrors = numPacketErrors+packetError;numPkt = numPkt+1;结束计算信噪比点的包错误率(PER)packeterrors (ibf,isnr) = numPacketErrors/(numPkt-1);disp ([“主持人”num2str (cfgHE.MCS)','...“信噪比”num2str(信噪比(isnr))...“完成后”num2str (numPkt-1)“包”,...“每:”num2str (packetErrorRate (ibf, isnr))));结束disp(换行符);结束
端到端模拟压缩波束形成量化,比特数为phi = 4,比特数为psi = 2 MCS 3, 13包后完成信噪比10,PER:0.84615 MCS 3, 54包后完成信噪比12,PER:0.2037 MCS 3, 100包后完成信噪比14,PER:0.07 MCS 3, 100包后完成信噪比16,PER:0 MCS 3, 100包后完成信噪比18,每: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个包,PER:0.84615 MCS 3, 59包后完成信噪比12,PER:0.18644 MCS 3, 100包后完成信噪比14,PER:0.06 MCS 3, 100包后完成信噪比16,PER:0 MCS 3, 100包后完成信噪比18,PER:0

图包错误率与信噪比

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

在每个信噪比点上测试的包数由两个参数控制:maxNumErrors而且maxNumPackets.对于有意义的结果,这些值应该大于本例中显示的值。作为一个例子,下图是通过运行一个较长的模拟创建的maxNumErrors: 1 e3和maxNumPackets: 1 e4。

附录

本例使用了以下helper函数:

选定的参考书目

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