主要内容

802.11ac包错误率模拟的8x8 TGac信道

此示例显示了如何使用具有衰落TGAC通道模型和添加白色高斯噪声的端到端模拟来测量IEE​​E®802.11ac™VHT链路的数据包错误率。

介绍

在这个例子中,端到端仿真被用来确定一个802.11ac的包错误率[1] VHT链接在选择SNR点的褪色通道。在每个SNR点,多个数据包通过频道发送,解调和PSDU恢复。将PSDU与发送的PSDU进行比较,以确定分组错误的数量,因此分组错误率。分组检测,定时同步,载波频率偏移校正和相位跟踪由接收器执行。每个数据包的处理总结如下

这个例子还演示了parfor可以使用Loop来代替在模拟每个信噪比点时进行循环,以加速模拟。的parfor函数,作为并行计算工具箱™的一部分,并行执行每个信噪比的处理,以减少总的模拟时间。

波形的配置

本例模拟802.11ac VHT传输。VHT格式配置对象,wlanvhtconfig,包含传输的特定格式配置。对象的属性包含配置。本例中,配置对象为80mhz信道带宽、8个发送天线、8个空时流、无空时分组编码、256-QAM速率-5/6 (MCS 9)。

%为8x8 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信道模型与延迟配置文件model - 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.生成多个数据包,通过信道并解调以确定分组错误率。

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 = WLANFIELDINDIDICES(CFGVHT);

处理SNR点

对每个信噪比点测试多个包并计算包错误率。

对于每个包,将执行以下处理步骤:

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

  2. 波形通过TGAC通道模型的不同实现。

  3. AWGN被添加到接收的波形中以在OFDM解调之后创建每个子载波的所需平均SNR。的comm.AWGNChannel对象配置为提供正确的信噪比。该配置考虑了信道内接收天线数量的归一化,以及在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对象。若要使用并行计算来提高速度,请注释掉声明和取消注释parfor以下声明。

S =元素个数(信噪比);packetErrorRate = 0(年代,1);%parcel i = 1:s%使用'parcom'加速模拟i = 1: S%使用'for'来调试模拟%每次迭代设置随机子流索引,以确保每个%迭代使用一组可重复的随机数流= RandStream ('幸福父母'“种子”,0);stream.substream = i;randstream.setglobalstream(Stream);%创建一个AWGN信道实例每个SNR点模拟awgnChannel = comm.AWGNChannel;awgnChannel。NoiseMethod =“信噪比”%正常化AWGNCHANNEL.SIGNALPOWER = 1 / TGACCHANNEL.NUMRECEIVEANNAS;%占NULL中的能量awgnChannel。信噪比=信噪比(i) -10 * log10 (ofdmInfo.FFTLength / ofdmInfo.NumTones);% Loop模拟多个数据包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.numtransmitantannas)]];%#OK %通过衰落通道模型传递波形重置(TGACHANNEL);为不同的实现重置通道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样本,解调并执行%信道估计vhtltf = rx (pktOffset + (ind.VHTLTF (1): ind.VHTLTF (2)),:);vhtltfDemod = wlanVHTLTFDemodulate (vhtltf 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;结尾%计算SNR点的数据包错误率(每个)Packeterrorrate(i)= numpacketerrors /(numpkt-1);DISP([“信噪比”num2str(信噪比(i))“完成后”...num2str (numPkt-1)'包,每:'...num2str (packetErrorRate (i))));结尾
SNR 40在11个数据包之后完成,每次:1 SNR 45完成15包后,每次:0.73333 SNR 50完成100包后,每:0.04

绘图数据包错误率与SNR结果

图semilogy(信噪比、packetErrorRate“ob”);网格;Xlabel('snr(db)');ylabel ('每');标题('802.11ac 80MHz, MCS9, Direct Mapping, 8x8 Channel Model D-NLOS');

进一步的探索

每个信噪比点测试的包数由两个参数控制;maxnumerrors.maxNumPackets.有意义的结果,建议这些值应该大于此示例中所呈现的值。增加模拟的数据包数允许按照不同的情况下进行比较。尝试更改传输和接收配置并比较数据包错误率。例如,下面的图是通过运行示例来创建的maxnumerrors.: 1000,maxNumPackets:10000。

附录

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

选定的书目

  1. 信息技术IEEE标准。系统间电信和信息交换。局域网和城域网。特殊要求。第11部分:无线局域网介质访问控制(MAC)和物理层(PHY)规范。修改件4:在6ghz以下的频段内实现高吞吐量的增强。