主要内容

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

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

介绍

在这个例子中,端到端仿真被用来确定一个802.11ac的包错误率[1在选定的信噪比点上使用衰落信道的VHT链路。在每个信噪比点,多个包通过信道传输,解调和PSDUs恢复。将PSDUs与传输的PSDUs进行比较,以确定包错误率和包错误率。包检测、定时同步、载波频偏校正和相位跟踪由接收机完成。对每个包的处理总结如下

这个例子还演示了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 rate-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 =“没有”

仿真参数

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

信噪比= 40:5:50;

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

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

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

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

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

为模拟设置其余的变量。

%获取基带采样率fs = wlanSampleRate (cfgVHT);%获取OFDM信息ofdmInfo = wlanVHTOFDMInfo (“VHT-Data”, cfgVHT);%设置通道采样率tgacChannel。SampleRate = f;%访问时域包中各字段的索引印第安纳州= wlanFieldIndices (cfgVHT);

处理信噪比点

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

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

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

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

  3. 在OFDM解调后,将AWGN加入到接收波形中,以产生所需的每子载波平均信噪比。的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环路可用于并行处理信噪比点,因此对每个信噪比点创建一个AWGN信道并配置comm.AWGNChannel对象。若要使用并行计算来提高速度,请注释掉语句并取消注释parfor下面的语句。

S =元素个数(信噪比);packetErrorRate = 0(年代,1);%parfor i = 1:S %使用parfor加速模拟i = 1: S%使用“for”调试模拟%每次迭代设置随机子流索引,以确保每个%迭代使用一组可重复的随机数流= RandStream (“combRecursive”“种子”, 0);流。Substream =我;RandStream.setGlobalStream(流);%创建一个AWGN信道实例每个SNR点模拟awgnChannel = comm.AWGNChannel;awgnChannel。NoiseMethod =“信噪比”%正常化awgnChannel。SignalPower = 1 / tgacChannel.NumReceiveAntennas;%表示能量为零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;0 (50, cfgVHT.NumTransmitAntennas)];% #好< AGROW >将波形通过衰落信道模型重置(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样本,解调并执行%信道估计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;结束%计算信噪比点的包错误率packetErrorRate (i) = numPacketErrors / (numPkt-1);disp ([“信噪比”num2str(信噪比(i))“完成后”...num2str (numPkt-1)'包,PER: '...num2str (packetErrorRate (i))));结束
11包后完成SNR 40, PER: 1, 15包后完成SNR 45, PER: 0.73333, 100包后完成SNR 50, PER: 0.04

图包错误率与信噪比结果

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

进一步的探索

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

附录

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

选定的参考书目

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