主要内容

2x2 TGn信道的802.11n包错误率模拟

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

介绍

在本例中,端到端模拟用于确定802.11n HT的包错误率[1]在选择SNR点时与衰落通道的链接。在每个SNR点,多个数据包通过频道发送,解调和PSDU恢复。将PSDU与发送的PSDU进行比较,以确定分组错误的数量,因此分组错误率。分组检测,定时同步,载波频率偏移校正和相位跟踪由接收器执行。每个分组的处理总结在下图中。

这个例子还展示了如何议案循环可以用来代替为了循环在模拟每个SNR点以加速模拟时。这议案函数,作为并行计算工具箱™的一部分,并行对每个SNR执行处理,以减少总仿真时间。

波形配置

在此示例中模拟了802.11n的HT传输。HT格式配置对象,wlanhtconfig,包含传输的特定格式配置。对象的属性包含配置。在本例中,对象配置为20mhz信道带宽、2个发射天线、2个空时流和没有空时块编码。

%为2×2 HT传输创建格式配置对象cfght = wlanhtconfig;cfght.channelbandwidth ='CBW20';%20 MHz通道带宽cfght.numtransmitantennas = 2;%2发射天线cfght.numspacetimestreams = 2;%2时空流cfght.psdulength = 1000;% PSDU长度(字节)cfgHT。MCS = 15;%2空间流,64-QAM速率-5 / 6cfght.channelcoding ='贝卡';%BCC信道编码

通道配置

在本例中,TGn - los信道模型与延迟剖面模型- b一起使用。对于模型b,当发射机与接收机的距离大于等于5米时,模型为NLOS。这将在后面进行描述Wlantgnchannel.

%创建并配置通道tgnchannel = wlantgnchannel;tgnchannel.delayprofile =.'model-b';tgnchannel.numtransmitantennas = cfght.numtransmitantannas;tgnchannel.numreceiveannas = 2;tgnchannel.transmitreceiveistance = 10;对于nlos的百分米距离tgnChannel。LargeScaleFadingEffect =“没有”;

仿真参数

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

信噪比= 25:10:45;

在每个SNR点测试的数据包数由两个参数控制:

  1. maxNumPEs是每个SNR点模拟的最大分组错误数。当数据包错误的数量达到此限制时,此SNR点处的仿真完成。

  2. maxnumpackets.是在每个SNR点处模拟的最大数据包数,并限制模拟的长度如果未达到数据包错误限制。

在此示例中选择的数字将导致仿真非常短。有意义的结果,我们建议增加数字。

maxNumPEs = 10;%SNR点的最大分组错误数maxnumpackets = 100;SNR点处的最大数据包数

设置模拟的剩余变量。

%获得基带采样率fs = wlanSampleRate (cfgHT);%获取OFDM信息ofdmInfo = wlanHTOFDMInfo ('ht-data',cfght);%设置通道的采样率tgnchannel.samplere = fs;%索引用于访问时域数据包中的每个字段IND = WLANFIELDINDIDICES(CFGHT);

处理信噪比点

对于每个SNR点,测试了许多数据包,并计算数据包错误率。

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

  1. 一个PSDU被创建和编码来创建一个单一的包波形。

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

  3. 在OFDM解调后,将AWGN添加到接收波形中,以创建每个子载波所需的平均信噪比。这comm.awgnchannel.对象配置为提供正确的SNR。该配置通过在OFDM解调期间除去的未使用子载波中的接收天线数和未使用的子载波中的噪声能量来进行归一化。

  4. 检测到报文。

  5. 估计和校正粗载波频率偏移。

  6. 确定精细的时序同步。提供L-STF,L-LTF和L-SIG样本用于精细定时,以允许在L-STF的开始或结尾处进行分组检测。

  7. 估计和校正细载波频率偏移。

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

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

一种议案循环可用于并行处理的信噪比点,因此为每个信噪比点创建一个AWGN通道,并配置comm.awgnchannel.目的。要使并行计算的使用增加速度评论出“for”声明,并取消注释下面的“栏杆”声明。

s = numel(SNR);packeterrorrate =零(s,1);%parfor i = 1:S %使用'parfor'加速模拟为了我= 1:s%使用“for”调试模拟%迭代设置随机子流索引,以确保每个%迭代使用可重复的随机数Stream = RANDSTREAM(“combRecursive”'种子', 0);流。Substream =我;RandStream.setGlobalStream(流);%模拟了每个SNR点创建AWGN通道的实例Awgnchannel = comm.awgnchannel;awgnchannel.noisemethod ='信噪比(SNR)';%归一化AWGNCHANNEL.SIGNALPOWER = 1 / TGNCHANNEL.NUMRECEIVEANNAS;%以空值表示能量awgnchannel.snr = snr(i)-10 * log10(Ofdminfo.fftlength / ofdminfo.numtones);%循环以模拟多个数据包numpacketerrors = 0;n = 1;传输的数据包%索引尽管numpacketerrors <= maxnumpes && n <= maxnumpackets%生成数据包波形txPSDU = randi([0 1],cfgHT.PSDULength*8,1);% PSDULength,单位为字节tx = wlanWaveformGenerator (txPSDU cfgHT);%添加尾随零以允许通道滤波器延迟tx = [tx;cfgHT.NumTransmitAntennas 0(15日)];% #好< AGROW >%通过TGN通道模型传递波形重置(tgnChannel);用于不同实现的%重置通道rx = tgnchannel(tx);%添加噪声rx = awgnchannel(rx);%数据包检测并确定粗分组偏移量cfgHT.ChannelBandwidth coarsePktOffset = wlanPacketDetect (rx);如果isempty (coarsePktOffset)%如果为空,没有检测到L-STF;包错误numPacketErrors = numPacketErrors + 1;n = n + 1;继续;%转到下一个循环迭代结束%提取L-STF并执行粗略频率偏移校正lstf = rx(coarsepktoffset +(ind.lstf(1):Ind.lstf(2)),:);coarsefreqoff = wlancoarsecfoeStimate(LSTF,CFGHT.ChannelBandWidth);rx = helperfrequencyOffset(RX,FS,-CoarseFreqoff);%提取非ht字段并确定细包偏移量nonhtfields = rx (coarsePktOffset + (ind.LSTF (1): ind.LSIG (2)),:);finePktOffset = wlanSymbolTimingEstimate (nonhtfields,......cfght.channelbandwidth);%确定最终数据包偏移量pktOffset = coarsePktOffset + finePktOffset;%如果数据包检测到否则预期延迟范围%信道建模;包错误如果pktoffset> 15 numpacketerrors = numpacketerrors + 1;n = n + 1;继续;%转到下一个循环迭代结束%提取L-LTF并执行细频偏移校正lltf = rx(pktoffset +(ind.lltf(1):Ind.lltf(2)),:);finefreqoff = wlanfinecfoestimate(lltf,cfght.channelbandwidth);rx = helperfrequencyOffset(Rx,FS,-Finefreqoff);%从波形中提取HT-LTF样本,解调并执行%信道估计数htltf = rx(pktoffset +(ind.htltf(1):Ind.htltf(2)),:);htltfdemod = wlanhtltfdemodulate(htltf,cfght);chanest = wlanhtltfchannelestimate(htltfdemod,cfght);%从波形中提取HT数据样本htdata = rx(pktoffset +(ind.htdata(1):ind.htdata(2)),:);%估计HT数据字段中的噪声功率nvarht = htnoiseestimate(htdata,chanest,cfght);%在HT数据中恢复传输的PSDUrxPSDU = wlanHTDataRecover (htdata,成龙、nVarHT cfgHT);%确定是否有错误,即数据包错误packetError =任何(biterr (txPSDU rxPSDU));numPacketErrors = numPacketErrors + packetError;n = n + 1;结束%计算信噪比点的包错误率packeterrorrate(i)= numpacketerrors /(n-1);DISP(['snr'num2str(信噪比(i))......'完成后'num2str (n - 1)“包”,......“每:”num2str(packeterrorrate(i))]);结束
11包完成SNR 25, PER: 45包完成SNR 35, PER: 0.24444, 100包完成SNR 45, PER: 0.01

图包错误率vs信噪比结果

数字;半径(SNR,Packeterrorrate,'-ob');网格;包含(“信噪比(dB)”);ylabel(“每”);标题('802.11n 20MHz,MCS15,直接映射,2x2通道模型B-NLOS');

进一步的探索

在每个SNR点测试的数据包数由两个参数控制;maxNumPEsmaxnumpackets.。对于有意义的结果,建议这些值应该大于本例中给出的值。通过增加模拟数据包的数量,可以比较不同场景下的PER值。尝试将发送编码方案改为LDPC,并比较包错误率。作为一个例子,下面的图是通过运行maxNumPEs:200和maxnumpackets.:10000,具有四种不同的配置;1x1和2x2带BCC和LDPC编码。

附录

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

选定的参考书目

  1. IEEE STD 802.11™-2012 IEEE信息技术标准 - 系统之间的电信和信息交流 - 本地和大都市区域网络 - 特定要求 - 第11部分:无线LAN介质访问控制(MAC)和物理层(PHY)规格。