主要内容

8x8 TGac信道802.11ac分组错误率仿真

这个例子展示了如何使用衰落TGac信道模型和加性高斯白噪声的端到端模拟来测量IEEE®802.11ac™VHT链路的分组错误率。

简介

在本例中,使用端到端模拟来确定802.11ac的包错误率[1VHT在选择的信噪比点上与衰落信道连接。在每个信噪比点,多个包通过一个通道传输,解调和psdu恢复。将psdu与传输的psdu进行比较,以确定数据包错误的数量,从而确定数据包错误率。接收端执行包检测、定时同步、载波频偏校正和相位跟踪。下面总结了每个数据包的处理过程

本例还演示了如何使用parfor循环可以用来代替循环时,模拟每个信噪比点,以加快模拟。的parfor函数,作为并行计算工具箱™的一部分,对每个信噪比并行执行处理,以减少总仿真时间。

波形的配置

本例模拟802.11ac VHT传输。VHT格式配置对象,wlanVHTConfig,包含传输的特定格式配置。对象的属性包含配置。在本例中,对象配置为80 MHz信道带宽、8个发射天线、8个空时流、无空时块编码、256-QAM速率-5/6 (MCS 9)和二进制卷积编码(BCC)。

为8x8 VHT传输创建一个格式配置对象cfgVHT = wlanVHTConfig;cfgVHT。ChannelBandwidth =“CBW80”80兆赫的信道带宽cfgVHT。numtransmitantenna = 8;% 8发射天线cfgVHT。NumSpaceTimeStreams = 8;% 8时空流cfgVHT。一个PEPLength = 3000;% APEP长度,单位为字节cfgVHT。MCS = 9;% 256-QAM速率-5/6cfgVHT。ChannelCoding =“* *”二进制卷积编码

通道配置

在本例中,使用TGac N-LOS信道模型和延迟配置文件model - d。对于d模型,当发射机与接收机之间的距离大于或等于10米时,模型为NLOS。这将在中进一步描述wlanTGacChannel.本例模拟8x8 MIMO信道,因此指定8个接收天线。

创建并配置通道tgacChannel = wlanTGacChannel;tgacChannel。DelayProfile =“模型”;tgacChannel。numreceiveantenna = 8;tgacChannel。TransmitReceiveDistance = 10;%距离(以米为单位)tgacChannel。ChannelBandwidth = cfgVHT.ChannelBandwidth;tgacChannel。numtransmitantenna = cfgvht . numtransmitantenna;tgacChannel。LargeScaleFadingEffect =“没有”;tgacChannel。NormalizeChannelOutputs = false;

仿真参数

对于矢量中的每个信噪比点信噪比生成若干包,通过通道并解调以确定包错误率。

信噪比= 40:5:50;

在每个信噪比点上测试的包数由两个参数控制:

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

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

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

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

设置模拟的其余变量。

获取基带采样率fs = wlanSampleRate(cfgVHT);获取OFDM信息ofdmInfo = wlanVHTOFDMInfo(“VHT-Data”, cfgVHT);%设置通道的采样率tgacChannel。SampleRate = fs;用于访问时域数据包中每个字段的索引ind = wlanFieldIndices(cfgVHT);

处理信噪比点

对于每个信噪比点,将测试若干数据包,并计算数据包错误率。

对于每个包,会发生以下处理步骤:

  1. PSDU被创建和编码以创建单个数据包波形。

  2. 波形通过TGac信道模型的不同实现传递。

  3. 将AWGN添加到接收的波形中,以在OFDM解调后创建每个有源子载波所需的平均信噪比。

  4. 检测到报文。

  5. 对粗载波频偏进行了估计和校正。

  6. 建立了良好的定时同步。提供了L-STF、L-LTF和L-SIG样本,以便在L-STF的开始或结束时进行包检测。

  7. 估计并校正了较细的载波频偏。

  8. VHT-LTF是从同步接收波形中提取的。对VHT-LTF进行OFDM解调,并进行信道估计。

  9. VHT数据字段是从同步接收的波形中提取的。利用提取的场和信道估计恢复PSDU。

一个parfor环路可用于并行化处理信噪比点。启用并行计算,以提高注释输出的速度声明并取消注释parfor下面的语句。

S =数字(信噪比);packetErrorRate = 0 (S,1);%parfor i = 1:S %使用'parfor'加速模拟i = 1:S使用'for'来调试模拟每次迭代设置随机子流索引,以确保每个子流的索引迭代使用一组可重复的随机数流= RandStream(“combRecursive”“种子”, 0);流。Substream = i;RandStream.setGlobalStream(流);%考虑噪声能量为空,因此信噪比定义为有源子载波百分比packetSNR = snr(i)-10*log10(ofdmInfo.FFTLength/ofdmInfo.NumTones);%循环模拟多个数据包numPacketErrors = 0;numPkt = 1;%发送的报文索引numPacketErrors<=maxNumErrors && numPkt<=maxNumPackets生成报文波形txPSDU = randi([0 1],cfgVHT.PSDULength*8,1);% PSDULength(以字节为单位)tx = wlanWaveformGenerator(txPSDU,cfgVHT);添加尾随零以允许信道延迟Tx = [Tx;0 (50, cfgVHT.NumTransmitAntennas)];% #好< AGROW >通过衰落信道模型传递波形重置(tgacChannel);为不同的实现重置通道rx = tgacChannel(tx);%添加噪音rx = awgn(rx,packetSNR);包检测和确定粗包偏移coarsePktOffset = wlanPacketDetect(rx,cfgVHT.ChannelBandwidth);如果isempty (coarsePktOffset)%如果为空,未检测到L-STF;包错误numPacketErrors = numPacketErrors+1;numPkt = numPkt+1;继续%转到下一次循环迭代结束提取L-STF并进行粗频偏校正lstf = rx(coarsePktOffset+(ind.LSTF(1):ind.LSTF(2)),:);coarseFreqOff = wlanCoarseCFOEstimate(lstf,cfgVHT.ChannelBandwidth);rx = frequencyOffset(rx,fs,-粗freqoff);提取非ht字段并确定细包偏移量nonhtfields = rx(coarsePktOffset+(ind.LSTF(1):ind.LSIG(2)),:);finePktOffset = wlanSymbolTimingEstimate(nonhtfields,...cfgVHT.ChannelBandwidth);确定最终数据包偏移量pktOffset = coarsePktOffset+finePktOffset;如果检测到的数据包超出预期延迟范围%通道建模;包错误如果pktOffset>50 numPacketErrors = numPacketErrors+1;numPkt = numPkt+1;继续%转到下一次循环迭代结束提取L-LTF并执行精细的频偏校正lltf = rx (pktOffset + (ind.LLTF (1): ind.LLTF (2)),:);fineFreqOff = wlanFineCFOEstimate(lltf,cfgVHT.ChannelBandwidth);rx = frequencyOffset(rx,fs,-fineFreqOff);从波形中提取VHT-LTF样本,解调并执行%信道估计vhtltf = rx(pktOffset+(ind.VHTLTF(1):ind.VHTLTF(2)),:);vhtltfDemod = wlanVHTLTFDemodulate(vhtltf,cfgVHT);获得单个流通道估计chanEstSSPilots = vhtSingleStreamChannelEstimate(vhtltfDemod,cfgVHT);%渠道估计chanEst = whtltfchannelestimate (vhtltfDemod,cfgVHT);从波形中提取VHT数据样本vhtdata = rx(pktOffset+(ind.VHTData(1):ind.VHTData(2)),:);估计VHT数据场的噪声功率nVarVHT = vhtNoiseEstimate(vhtdata,chanEstSSPilots,cfgVHT);恢复VHT数据中传输的PSDUrxPSDU = wlanVHTDataRecover(vhtdata,chanEst,nVarVHT,cfgVHT,...“LDPCDecodingMethod”“norm-min-sum”);确定是否有任何位错误,即数据包错误。packetError = any(biterr(txPSDU,rxPSDU));numPacketErrors = numPacketErrors+packetError;numPkt = numPkt+1;结束计算信噪比点的包错误率(PER)packetErrorRate(i) = numPacketErrors/(numPkt-1);disp ([“信噪比”num2str(信噪比(i))“完成后”...num2str (numPkt-1)' packets, PER: '...num2str (packetErrorRate (i))));结束
信噪比40完成11包后,PER: 1信噪比45完成15包后,PER: 0.73333信噪比50完成100包后,PER: 0.04

图包错误率与信噪比结果

图semilogy(信噪比、packetErrorRate“ob”);网格;包含(“信噪比(dB)”);ylabel (“每”);标题('802.11ac 80MHz, MCS9, BCC,直接映射,8x8通道型号D-NLOS');

进一步的探索

在每个信噪比点上测试的数据包数量由两个参数控制;maxNumErrors而且maxNumPackets.对于有意义的结果,建议这些值应该大于本例中给出的值。通过增加模拟的数据包数量,可以比较不同场景下的PER。尝试改变传输和接收配置,并比较数据包错误率。作为示例,下面的图是通过运行的示例创建的maxNumErrors: 1000和maxNumPackets: 10000。

附录

本例使用了以下helper函数:

选定的参考书目

  1. IEEE Std 802.11™-2020。IEEE信息技术标准。系统间的电信和信息交换。局域网和城域网。特殊要求。第11部分:无线局域网介质访问控制(MAC)和物理层(PHY)规范。