主要内容

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

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

介绍

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

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

波形配置

HE-SU数据包是单个用户的全频带传输。使用a配置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.prehepatialmapping = false;预先田地的%空间映射cfghebase.guardinterval = 0.8;%保护间隔持续时间cfgHEBase。HELTFType = 4;%HE-LTF压缩模式cfghebase.channelcoding =“方法”%信道编码cfgHEBase。MCS = 3;%调制和编码方案cfghebase.spatialMapping =.'风俗'百分比定制波束成形

NDP (Null Data Packet)配置

NDP传输被配置为具有零的数据长度。由于使用NDP来获得信道状态信息,因此时空流的数量等于发送天线的数量。这导致每个时空流直接映射到发射天线。

cfgNDP = cfgHEBase;cfgNDP。一种PEPLength = 0;%NDP没有数据cfgNDP。NumSpaceTimeStreams = NumTxAnts;反馈矩阵计算的%cfgNDP。SpatialMapping ='直接的'%每个TxAnt携带一个STS

频道配置

在该示例中,TGAX NLOS室内通道模型用于延迟配置文件Model-B。当发射器和接收器之间的距离大于或等于5米时,模型-B型材被认为是NLO。这进一步描述了wlanTGaxChannel.在此示例中模拟了4x2 MIMO通道。

%创建并配置TGax通道chanbw = cfghebase.channelbandwidth;tgaxchannel = wlantgaxchannel;tgaxchannel.delayprofile =.“b型”;tgaxchannel.numtransmitantennas = numtxants;tgaxchannel.numreceiveantennas = numnrxants;tgaxchannel.transmitreceivedistance = 5;% NLOS的距离以米为单位TGAXCHANNEL.CHANNELBANDWIDTH = CHANBW;tgaxchannel.largescalefadingeffect =“没有”;fs = wlanSampleRate (cfgHEBase);tgaxChannel。SampleRate = f;

仿真参数

该示例比较了波束成形的性能,其具有两种不同的压缩量化分辨率,而不会压缩。金宝搏官方网站对于每个量化分辨率,运行具有各种SNR值的结束到结束模拟以确定数据包错误率。802.11AX草案4.1仅针对单个用户波束成形仅指定两组量化分辨率([1])。的价值码本确定在此仿真中用于量化波束形成反馈角(phi和psi)的比特数。当码本则不执行压缩。所选择的量子化能级码本如下表所示:

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

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

SNR = 10:2:18;

在每个SNR点测试的数据包数量仅限于maxnumerrors.maxNumPackets

  1. maxnumerrors.是每个SNR点模拟的最大分组错误数。当数据包错误的数量达到此限制时,此SNR点处的仿真完成。

  2. maxNumPackets为每个信噪比点上模拟的最大报文数,并在未达到包错误限制时限制模拟的长度。

在此示例中选择的数字将导致仿真非常短。对于统计上有意义的结果,我们建议增加这些数字。

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

处理SNR点

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

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

  1. 通过室内TGAX通道模型传输NDP波形。不同的频道实现是针对不同数据包进行建模的。

  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. 在估计的信道中执行奇异值分解,并计算波束形成反馈矩阵。

  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。

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

numQuant =元素个数(codeBookSize);numSNR =元素个数(信噪比);%信噪比点数packetErrorRate = 0 (numQuant numSNR);%获取已占用子载波指标和OFDM参数Ofdminfo = wlanheofdminfo('他是数据',cfghebase);%从PPDU中提取字段的索引IND = WLANFIELDINDIDICES(CFGHEBASE);Indsound = WlanFieldIndices(CFGNDP);为了ibf = 1: numQuant开关codeBookSize (ibf)%见P802.11ax/D4.1章节9.4.1.64情况下0 numbitspsi = 2;% psi的位数NumBitsPhi = 4;PHI的百分比数量disp ('具有压缩波束成形量化的端到端模拟');DISP([' =的比特数'num2str(numbitsphi)...' and Number of Bits for psi = 'num2str(numbitspsi)]);情况下1 NumBitsPsi = 4;% psi的位数NumBitsPhi = 6;PHI的百分比数量disp ('具有压缩波束成形量化的端到端模拟');DISP([' =的比特数'num2str(numbitsphi)...' and Number of Bits for psi = 'num2str(numbitspsi)]);否则disp ('具有非压缩波束形成的端到端模拟');结尾%parfor isnr = 1:numSNR %使用“parfor”加速模拟为了ISNR = 1:NUMSNR%每次迭代设置随机子流索引,以确保每个%迭代使用一组可重复的随机数流= RandStream ('幸福父母''种子',100);Stream.substream = ISNR;randstream.setGlobalstream(Stream);%创建一个AWGN信道实例每个SNR点模拟Awgnchannel = comm.awgnchannel;awgnchannel.noisemethod =“信噪比”;awgnChannel。SignalPower = 1 / tgaxChannel.NumReceiveAntennas;%考虑噪声能量为零,因此信噪比定义为%活动子载波awgnChannel。信噪比=信噪比(isnr) -10 * log10 (ofdmInfo.FFTLength / ofdmInfo.NumTones);%为每个SNR点创建一个HE配置对象实例%模拟。这将启用可用cfghe = cfghebase;% Loop模拟多个数据包numPacketErrors = 0;numPkt = 1;%发送的数据包索引尽管numPacketErrors < = maxNumErrors & & numPkt < = maxNumPackets%null数据包传输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(码本(IBF))求波束形成反馈矩阵的量子化角度angidx = BfChageSquantize(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],PSDULENG * 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)),:);emodsym = wlanhedemodulate(rxdata,'他是数据',cfghe);%导频阶段跟踪%符号上的单流试验估计平均值(2维)pilotesttrack =卑鄙(Pilotest,2);Demodsym = HeCommOnphaseErrortracking(Demodsym,Pilotesttrack,Cfghe);估算HE领域的噪声功率据nvar = heNoiseEstimate (demodSym (ofdmInfo.PilotIndices,:,:), pilotEstTrack, cfgHE);从解调符号和信道中提取数据子载波% 估计emoddatasym = remodsym(Ofdminfo.dataindices,:,:);chanestdata = chanest(Ofdminfo.dataindices,:,:);%均衡和STBC合并[eqDataSym, csi] = heEqualizeCombine (demodDataSym chanEstData,据nvar, cfgHE);%恢复数据rxpsdu = wlanhedatabitrocover(eqdatasym,nvarest,csi,cfghe,“LDPCDecodingMethod”'分层BP');%确定是否有错误,即数据包错误packetError = ~ isequal (txPSDU rxPSDU);numPacketErrors = numPacketErrors + packetError;numpkt = numpkt + 1;结尾%计算信噪比点的包错误率Packeterrorrate(IBF,ISNR)= NumPacketerrors /(NumPKT-1);DISP(['MCS'num2str(cfghe.mcs)”、“...'snr'num2str(信噪比(isnr))...'完成后'num2str (numPkt-1)'包,'...'每:'num2str (packetErrorRate (ibf, isnr))));结尾DISP(甜点);结尾
具有压缩波束成形量化的端到端模拟,具有PHI = 4的比特数和PSI = 2 MCS的比特数,SNR 10在13个数据包之后完成,每:0.84615 MCS 3,SNR 12完成54包后,每个:0.2037 MCS 3,SNR 14完成100包后,每次:0.07 MCS 3,SNR 16完成100个数据包,每次:0 MCS 3,SNR 18完成100个数据包之后,每:0带压缩波束成形的端到端仿真用PHI = 6的比特数和PSI = 4 MCS的比特数,SNR 10在13个数据包之后完成,每次:0.84615 MCS 3,SNR 12完成54包后,每:0.2037 MCS 3,SNR 14完成后100个数据包,每次:0.06 MCS 3,SNR 16完成100包后,每次:0 MCS 3,SNR 18完成100个数据包后,每:0使用非压缩波束形成MCS 3,SNR 10完成后的端到端仿真13数据包,每次:0.84615 MCS 3,SNR 12完成59包后,每:0.18644 MCS 3,SNR 14完成100包后,每周:0.06 MCS 3,SNR 16互联在100个数据包之后,每周:0 MCS 3,SNR 18在100个数据包之后完成,每:0

标绘包错误率与信噪比

数字;linetypes = [“k o”“b-s”“r- *”];半径(SNR,Packeterrorrate(1,:),Lineetypes(1));抓住;网格;包含(“信噪比(dB)”);ylabel ('每');为了IBF = 2:Nimquant半径(SNR,Packeterrorrate(IBF,:),LineTypes(IBF));结尾data口= [string([压缩的波束形成,换行符...'numbitsphi = 4,numbitspsi = 2'换行符)...字符串([压缩的波束形成,换行符...'numbitsphi = 6,numbitspsi = 4'换行符)...“非压缩波束形成”];传奇(dataStr);标题(sprintf ('802.11ax波束形成PER for Channel %s, %s, %s', cfgHEBase.ChannelBandwidth tgaxChannel.DelayProfile cfgHEBase.ChannelCoding));

每个信噪比点测试的包数由两个参数控制:maxnumerrors.maxNumPackets.对于有意义的结果,这些值应该大于本例中所示的值。作为一个例子,下面的图是通过使用maxnumerrors.:1E3和maxNumPackets:1E4。

附录

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

选定的书目

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