主要内容

2x2 TGn信道的802.11n包错误率仿真

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

介绍

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

这个例子还演示了parfor可以用Loop代替在模拟每个信噪比点时进行循环,以加速模拟。的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一起使用。对于型号b,当发射机与接收机距离大于等于5米时,型号为NLOS。这将在后面进一步描述wlanTGnChannel

%创建并配置通道tgnChannel = wlanTGnChannel;tgnChannel。DelayProfile =“b型”;tgnChannel。NumTransmitAntennas = cfgHT.NumTransmitAntennas;tgnChannel。NumReceiveAntennas = 2;tgnChannel。TransmitReceiveDistance = 10;% NLOS的距离以米为单位tgnChannel。LargeScaleFadingEffect =“没有”;tgnChannel。NormalizeChannelOutputs = false;

仿真参数

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

信噪比= 25:10:45;

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

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

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

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

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

为模拟设置其余的变量。

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

处理信噪比点

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

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

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

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

  3. 在OFDM解调后,将AWGN加入到接收波形中,以产生所需的每有源子载波的平均信噪比。

  4. 检测到报文。

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

  6. 建立了精细定时同步。L-STF, L-LTF和L-SIG样本被提供用于精确定时,允许在L-STF的开始或结束时进行包检测。

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

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

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

一个parfor环路可用于并行处理信噪比点。为了使用并行计算来提高速度,请将下面的'for'语句注释掉,并取消对'parfor'语句的注释。

S =元素个数(信噪比);packetErrorRate = 0(年代,1);%parfor i = 1:S %使用parfor加速模拟i = 1: S%使用“for”调试模拟%每次迭代设置随机子流索引,以确保每个%迭代使用一组可重复的随机数流= RandStream (“combRecursive”“种子”, 0);流。Substream =我;RandStream.setGlobalStream(流);%考虑噪声能量为零,因此信噪比定义为%活跃副载波packetSNR =信噪比(i) -10 * log10 (ofdmInfo.FFTLength / ofdmInfo.NumTones);% Loop模拟多个数据包numPacketErrors = 0;n = 1;%发送的数据包索引numPacketErrors < = n < = maxNumPackets maxNumPEs & &%生成报文波形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 = awgn (rx, packetSNR);包检测并确定粗包偏移量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);陈= wlanHTLTFChannelEstimate (htltfDemod cfgHT);%从波形中提取HT数据样本htdata = rx (pktOffset + (ind.HTData (1): ind.HTData (2)),:);估算HT数据域中的噪声功率nVarHT = htNoiseEstimate (htdata,成龙,cfgHT);%恢复HT数据中传输的PSDUrxPSDU = wlanHTDataRecover (htdata,成龙、nVarHT cfgHT);%确定是否有任何位错误,即数据包错误packetError =任何(biterr (txPSDU rxPSDU));numPacketErrors = numPacketErrors + packetError;n = n + 1;结束%计算信噪比点的包错误率packetErrorRate (i) = numPacketErrors / (n - 1);disp ([“信噪比”num2str(信噪比(i))...“完成后”num2str (n - 1)“包”,...“每:”num2str (packetErrorRate (i))));结束
11包后SNR完成25,PER: 1 SNR完成35,45包后PER: 0.24444, 100包后SNR完成45,PER: 0.01

图包错误率与信噪比结果

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

进一步的探索

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

附录

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

选定的参考书目

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