主要内容

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

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

介绍

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

在本例中,在发射器和接收器之间考虑一个4x2 MIMO配置,每个数据包传输使用两个时空流。端到端仿真用于确定802.11ax的包错误率(PER) [1单用户(SU)格式链接压缩波束形成反馈量化针对不同的量化水平和信噪比点的选择。生成的图显示了每个量化分辨率的PER与SNR曲线。本例不考虑子载波分组(见[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。NumTransmitAntennas = NumTxAnts;%发送天线数cfgHEBase。一个PEPLength = 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 (Null Data Packet)配置

NDP传输配置为数据长度为零。由于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 =“没有”;fs = wlanSampleRate (cfgHEBase);tgaxChannel。SampleRate = f;

仿真参数

本实例比较了压缩量化和不压缩量化两种不同分辨率下的波束形成性能。金宝搏官方网站对于每个量化分辨率,运行不同信噪比值的端到端仿真来确定包错误率。草案4.1仅为单用户波束形成指定了两组量化分辨率(表9-31a1])。的价值codeBookSize确定在此仿真中用于量化波束形成反馈角(phi和psi)的比特数。当codeBookSize则不执行压缩。所选择的量子化能级codeBookSize如下表所示:

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

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

信噪比= 10:2:18;

在每个SNR点测试的数据包数量限制为最大数字错误maxNumPackets

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

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

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

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

处理信噪比点

对每个信噪比点测试多个包,计算包错误率。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. 波形通过与NDP传输相同的室内TGax信道实现。

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

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

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

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

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

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

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

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

numQuant =元素个数(codeBookSize);numSNR =元素个数(信噪比);%信噪比点数packetErrorRate = 0 (numQuant numSNR);%获取已占用子载波指标和OFDM参数ofdmInfo=wlanHEOFDMInfo(“他需要数据”, cfgHEBase);%从PPDU中提取字段的索引印第安纳州= 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)...' and Number of Bits for psi = 'num2str (NumBitsPsi)]);情况下1 NumBitsPsi = 4;% psi的位数NumBitsPhi = 6;%的比特数disp (压缩波束形成量化的端到端仿真);disp ([' =的比特数'num2str(NumBitsPhi)...' and Number of Bits for psi = 'num2str (NumBitsPsi)]);否则disp (“非压缩波束形成的端到端模拟”);结束%parfor isnr = 1:numSNR %使用“parfor”加速模拟isnr = 1: numSNR%每次迭代设置随机子流索引,以确保每个%迭代使用一组可重复的随机数流= RandStream (“combRecursive”“种子”,100); 子流=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配置对象实例%模拟。这将允许使用parforcfgHE = cfgHEBase;% Loop模拟多个数据包numPacketErrors = 0;numPkt = 1;%发送的数据包索引虽然numPacketErrors < = maxNumErrors & & numPkt < = maxNumPackets%空数据包传输tx = wlanWaveformGenerator ([], cfgNDP);添加尾随零以允许通道延迟txPad = [tx;0 (50, cfgNDP.NumTransmitAntennas)];%通过衰落的室内TGax信道复位(TGAX通道);为不同的实现重置通道rx = tgaxChannel (txPad);%将波形通过AWGN通道rx = awgnChannel (rx);%在beamformee处计算转向矩阵V = heUserBeamformingFeedback (rx, cfgNDP,真);如果isempty (V)%用户反馈失败,数据包错误numPacketErrors = numPacketErrors + 1;numPkt = numPkt + 1;继续%进入下一个循环迭代结束如果~ isinf (codeBookSize (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;0 (50, cfgHE.NumTransmitAntennas)];%通过衰落的室内TGax信道rx = tgaxChannel (txPad);%将波形通过AWGN通道rx = awgnChannel (rx);包检测并确定粗包偏移量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=粗pktOffset+精pktOffset;%如果数据包被检测出,且从%通道建模;包错误如果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(heltfdemm,cfgHE);%数据解调rxData=rx(pktofset+(ind.HEData(1):ind.HEData(2)),:;demosym=wlanHEDemodulate(rxData,“他需要数据”, cfgHE);导频相位跟踪%符号上的单流试验估计平均值(2维)pilotEstTrack=平均值(pilotEst,2);DemoSym=共相错误跟踪(DemoSym,PilotTestTrack,cfgHE);估算HE领域的噪声功率据nvar = heNoiseEstimate (demodSym (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;结束%计算信噪比点的包错误率packetErrorRate (ibf isnr) = numPacketErrors / (numPkt-1);disp ([“主持人”num2str (cfgHE.MCS)”、“...“信噪比”num2str(信噪比(isnr))...“完成后”num2str (numPkt-1)“包,”...“PER:”num2str (packetErrorRate (ibf, isnr))));结束disp(换行符);结束
端到端模拟,压缩波束形成量化,比特数为phi=4,比特数为psi=2 MCS 3,13个数据包后完成SNR 10,PER:0.84615 MCS 3,54个数据包后完成SNR 12,PER:0.2037 MCS 3,100个数据包后完成SNR 14,PER:0.07 MCS 3,100个数据包后完成SNR 16,PER:0 MCS 3,SNR 18在100个数据包后完成,每:0端到端模拟,压缩波束形成量化的位数为phi=6,位数为psi=4 MCS 3,13个数据包后完成SNR 10,每:0.84615 MCS 3,54个数据包后完成SNR 12,每:0.2037 MCS 3,100个数据包后完成SNR 14,每:0.06 MCS 3,100包后SNR 16完成,PER:0 MCS 3,100包后SNR 18完成,非压缩波束形成MCS 3的PER:0端到端模拟,13包后SNR 10完成,PER:0.84615 MCS 3,59包后SNR 12完成,PER:0.18644 MCS 3,100包后SNR 14完成,PER:0.06 MCS 3,100包后SNR 16完成,PER:0 MCS 3,在100个数据包后完成SNR 18,PER:0

标绘包错误率与信噪比

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

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

附录

此示例使用以下帮助器函数:

精选书目

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