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

这个例子展示了如何使用的端至端仿真与衰落TGAC信道模型并加性高斯白噪声测量的IEEE®的802.11ac™VHT链路的分组错误率。

介绍

在本例中,使用端到端的模拟来确定802.11ac的分组错误率[1与选择的SNR点的衰落信道] VHT链路。在每个SNR点的多个分组通过一个信道传输,解调和PSDUs回收。的PSDUs进行比较,那些发送给确定分组错误的数目并且因此分组错误率。分组检测,定时同步,载波频率偏移校正和相位跟踪由接收器来执行。每个数据包的处理总结于下

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

波形配置

在本例中模拟了一个802.11ac VHT传输。VHT格式配置对象包含传输的特定格式配置。对象是使用wlanVHTConfig函数。对象的属性包含配置。在本例中,对象配置为80 MHz通道带宽、8个传输天线、8个空时流、无空时块编码和256-QAM rate-5/6 (MCS 9)。

创建一个8×8 VHT传输的格式配置对象cfgVHT = wlanVHTConfig;cfgVHT。ChannelBandwidth ='CBW80';% 80兆赫通道带宽cfgVHT。NumTransmitAntennas = 8;% 8发射天线cfgVHT。NumSpaceTimeStreams = 8;%8空间时间流cfgVHT。一个PEPLength = 3000;APEP长度(以字节为单位)cfgVHT。MCS = 9;%256-QAM速率-5/6

通道配置

在本例中,TGac N-LOS信道模型与延迟剖面模型- d一起使用。对于模型- d,当发射机和接收机之间的距离大于或等于10米时,模型为NLOS。这在后面有描述wlanTGacChannel。一个8x8 MIMO信道是模拟在该示例中,因此被指定天线8接收。

%创建和配置信道tgacChannel = wlanTGacChannel;tgacChannel。DelayProfile =“模型”;tgacChannel。NumReceiveAntennas = 8;tgacChannel。TransmitReceiveDistance = 10;NLOS的距离(米)%tgacChannel。ChannelBandwidth = cfgVHT.ChannelBandwidth;tgacChannel。NumTransmitAntennas = cfgVHT.NumTransmitAntennas;tgacChannel。LargeScaleFadingEffect ='没有';

仿真参数

对于向量中的每个SNR点信噪比生成多个数据包时,通过一个信道传递和解调,以确定该分组错误率。

SNR = 40:5:50;

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

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

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

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

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

为模拟设置其余变量。

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

处理SNR点

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

每一个数据包的处理步骤如下:

  1. 甲PSDU被创建并编码以创建单个分组波形。

  2. 波形是通过一个不同的实现TGAC信道模型的传递。

  3. 在OFDM解调后,AWGN被添加到接收的波形中,以创建每个子载波所需的平均信噪比。comm.AWGNChannel被配置为提供正确的SNR。配置占由接收天线的数目,并且在未使用的副载波的噪声能量被OFDM解调过程中除去所述通道内正常化。

  4. 数据包被检测到。

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

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

  7. 对精细载波频偏进行了估计和校正。

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

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

一个parfor环路可用于并行化SNR点的处理,因此对于每个SNR点AWGN信道被创建并与被配置comm.AWGNChannel。要启用并行计算来提高速度,请注释掉“for”语句并取消下面的“parfor”语句的注释。

S =元素个数(信噪比);packetErrorRate = 0(年代,1);%PARFOR I = 1:S%使用 'PARFOR' 来加速仿真对于i = 1: S%用途“为”调试仿真在每次迭代中设置随机的子流索引,以确保每个迭代使用一组可重复的随机数流= RandStream ('combRecursive',“种子”,0);stream.Substream = I;RandStream.setGlobalStream(流);为每个模拟的信噪比点创建一个AWGN通道实例awgnChannel = comm.AWGNChannel;awgnChannel.NoiseMethod =“信噪比”;%正常化awgnChannel.SignalPower = 1 / tgacChannel.NumReceiveAntennas;在空能量%的账户awgnChannel。信噪比=信噪比(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;零(50,cfgVHT.NumTransmitAntennas)];%#确定%是通过衰落信道模型通过波形复位(tgacChannel);%复位通道,实现方式不同rx = tgacChannel (tx);%添加杂色rx = awgnChannel (rx);数据包检测并确定粗数据包偏移量cfgVHT.ChannelBandwidth 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 cfgVHT.ChannelBandwidth);rx = helperFrequencyOffset (rx, fs -coarseFreqOff);提取非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 = helperFrequencyOffset (rx, fs -fineFreqOff);%从波形中提取VHT-LTF样品,解调并执行%的信道估计VHT-LTF = RX(pktOffset +(ind.VHTLTF(1):ind.VHTLTF(2)),:);vhtltfDemod = wlanVHTLTFDemodulate(VHT-LTF,cfgVHT);%获取单个流的信道估计chanEstSSPilots = vhtSingleStreamChannelEstimate (vhtltfDemod cfgVHT);%的信道估计陈= wlanVHTLTFChannelEstimate (vhtltfDemod cfgVHT);%从波形中提取VHT数据样本vhtdata = rx (pktOffset + (ind.VHTData (1): ind.VHTData (2)),:);估计VHT数据场的噪声功率nVarVHT = vhtNoiseEstimate (vhtdata chanEstSSPilots cfgVHT);%恢复在VHT数据发送的PSDUrxPSDU = wlanVHTDataRecover (vhtdata,成龙、nVarVHT cfgVHT);%确定是否有位出错,即数据包出错packetError =任何(biterr (txPSDU rxPSDU));numPacketErrors = numPacketErrors + packetError;numPkt = numPkt + 1;结束%计算的分组错误率(PER)在SNR点packetErrorRate(1)= numPacketErrors /(numPkt-1);DISP([“信噪比”num2str(信噪比(i))“完成后”...num2str (numPkt-1)'数据包,PER:'...num2str (packetErrorRate (i))));结束
SNR 40后11个包完成,PER:1 SNR 45后15个分组完成,PER:0.73333 SNR 50 100个数据包之后完成,PER:0.04

绘制包错误率与SNR结果

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

进一步的探索

在每个信噪比点测试的数据包数量由两个参数控制;maxNumErrorsmaxNumPackets。对于有意义的结果是建议这些数值应该比那些在这个例子中呈现更大。增加模拟数据包的数量可以在不同情况下的PER进行比较。试着改变发送和接收的配置和比较数据包错误率。作为一个实例,下图是由运行示例中创建maxNumErrors:1000,maxNumPackets:10000。

附录

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

选择的参考书目

  1. IEEE Std 802.11 ac™-2013 IEEE标准信息技术——之间的通信和信息交换系统-本地和市区网络特定需求-第11部分:无线局域网介质访问控制(MAC)和物理层(体育)规范-第四修正案:增强对高吞吐量在乐队低于6 GHz。