主要内容

802.11n分组错误速率模拟2x2 TGN通道

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

介绍

在此示例中,端到端仿真用于确定802.11n ht的数据包错误率[1]在选定的信噪比点处与衰落信道连接。在每个信噪比点,多个包通过信道传输,解调和PSDUs恢复。将PSDUs与传输的PSDUs进行比较,以确定包错误率和包错误率。包检测、定时同步、载波频偏校正和相位跟踪由接收机完成。下面的图表总结了每个包的处理过程。

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

波形的配置

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

%为2 × 2 HT传输创建格式配置对象cfgHT = wlanHTConfig;cfgHT。ChannelBandwidth =“CBW20”% 20兆赫信道带宽cfgHT。NumTransmitAntennas = 2;%2发射天线cfgHT。NumSpaceTimeStreams = 2;% 2时空流cfght.psdulength = 1000;%PSDU长度为字节cfght.mcs = 15;% 2空间流,64-QAM速率-5/6cfgHT。ChannelCoding =“* *”% BCC信道编码

频道配置

在该示例中,TGN N-LOS信道模型用于延迟配置文件模型-b。对于Model-B,当发射器和接收器之间的距离大于或等于5米时,模型是NLO。这进一步描述了wlanTGnChannel

%创建和配置频道tgnChannel = wlanTGnChannel;tgnChannel。DelayProfile =“b型”;tgnChannel。NumTransmitAntennas = cfgHT.NumTransmitAntennas;tgnChannel。NumReceiveAntennas = 2;tgnChannel。TransmitReceiveDistance = 10;% NLOS的距离以米为单位tgnchannel.largescalefadenffect ='没有任何'

仿真参数

对于向量中的每个SNR点SNR.生成多个数据包,通过信道并解调以确定分组错误率。

SNR = 25:10:45;

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

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

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

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

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

为模拟设置其余的变量。

%获得基带采样率FS = WLANSAMPLEDE(CFGHT);%获取OFDM信息Ofdminfo = wlanhtofdminfo(“HT-Data”, cfgHT);%设置通道的采样率tgnChannel。SampleRate = f;%索引用于访问时域数据包中的每个字段印第安纳州= wlanFieldIndices (cfgHT);

处理SNR点

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

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

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

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

  3. AWGN被添加到接收的波形中以在OFDM解调之后创建每个子载波的所需平均SNR。的comm.AWGNChannel对象配置为提供正确的信噪比。该配置考虑了信道内接收天线数量的归一化,以及在OFDM解调过程中去除的未使用子载波中的噪声能量。

  4. 检测到数据包。

  5. 估计并校正粗载波频偏。

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

  7. 对载波频偏进行了估计和修正。

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

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

一个parfor循环可用于并行化SNR点的处理,因此对于每个SNR点,创建AWGN通道并配置comm.AWGNChannel对象。为了使用并行计算来提高速度,请将下面的'for'语句注释掉,并取消对'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 / tgnChannel.NumReceiveAntennas;%占NULL中的能量awgnChannel。信噪比=信噪比(i) -10 * log10 (ofdmInfo.FFTLength / ofdmInfo.NumTones);% Loop模拟多个数据包numPacketErrors = 0;n = 1;%发送的数据包索引尽管numpacketerrors <= maxnumpes && n <= maxnumpackets%生成数据包波形txpsdu = randi([0 1],cfght.psdulength * 8,1);%psdulength以字节为单位Tx = WlanWaveFormGenerator(TXPSDU,CFGHT);%添加尾随零以允许通道滤波器延迟tx = [tx;零(15,cfght.numtransmitantannas)];%#OK %将波形通过TGn通道模型重置(TGnChannel);为不同的实现重置通道rx = tgnChannel (tx);%添加噪声rx = awgnChannel (rx);包检测并确定粗包偏移量coarsepktoffset = wlanpacketdetect(rx,cfght.channelbandwidth);如果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);陈= wlanHTLTFChannelEstimate (htltfDemod cfgHT);%从波形中提取HT数据样本htdata = rx (pktOffset + (ind.HTData (1): ind.HTData (2)),:);估算HT数据域中的噪声功率nVarHT = htNoiseEstimate (htdata,成龙,cfgHT);%恢复HT数据中传输的PSDUrxpsdu = wlanhtdatarecover(htdata,chanest,nvarht,cfght);%确定是否有任何位错误,即数据包错误Packeterror =任何(Biterr(TXPSDU,RXPSDU));numpacketerrors = numpacketerrors + packeterror;n = n + 1;结尾%计算SNR点的数据包错误率(每个)packeterrorrate(i)= numpacketerrors /(n-1);DISP([“信噪比”num2str(snr(i))...“完成后”num2str(n-1)'包,'...'每:'num2str (packetErrorRate (i))));结尾
SNR 25在11个数据包之后完成,每次:1 SNR 35完成45包后,每次:0.2444 SNR 45在100包后完成,每:0.01

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

图;packetErrorRate semilogy(信噪比,“ob”);网格;Xlabel('snr [db]');ylabel ('每');标题('802.11n 20MHz, MCS15, Direct Mapping, 2x2 Channel Model B-NLOS');

进一步的探索

每个信噪比点测试的包数由两个参数控制;Maxnumpes.maxNumPackets.出于有意义的结果,建议这些值应大于此示例中呈现的值。增加模拟的数据包数允许按照不同的情况下进行比较。尝试将发射编码方案更改为LDPC并比较分组错误率。例如,下面的图是通过运行示例来创建的Maxnumpes.: 200,maxNumPackets: 10000,四种不同配置;1x1和2x2采用BCC和LDPC编码。

附录

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

选定的书目

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