主要内容

2x2 TGn信道802.11n分组错误率仿真

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

简介

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

本例还演示了如何使用parfor可以使用Loop代替a循环时,模拟每个信噪比点,以加快模拟。的parfor函数,作为并行计算工具箱™的一部分,对每个信噪比并行执行处理,以减少总仿真时间。

波形的配置

本例以802.11n HT传输为例。HT格式配置对象,wlanHTConfig,包含传输的格式特定配置。对象的属性包含配置。在本例中,该对象配置为20 MHz信道带宽、2个发射天线、2个时空流和无时空块编码。

为2x2ht传输创建一个格式配置对象cfgHT = wlanHTConfig;cfgHT。ChannelBandwidth =“CBW20”20 MHz的信道带宽cfgHT。numtransmitantenna = 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。numtransmitantenna = cfght . numtransmitantenna;tgnChannel。numreceiveantenna = 2;tgnChannel。TransmitReceiveDistance = 10;%距离(以米为单位)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 = fs;用于访问时域数据包中每个字段的索引ind = wlanFieldIndices(cfgHT);

处理信噪比点

对于每个信噪比点,将测试若干数据包,并计算数据包错误率。

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

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

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

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

  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 (S,1);%parfor i = 1:S %使用'parfor'加速模拟i = 1:S使用'for'来调试模拟每次迭代设置随机子流索引,以确保每个子流的索引迭代使用一组可重复的随机数流= RandStream(“combRecursive”“种子”, 0);流。Substream = i;RandStream.setGlobalStream(流);%考虑噪声能量为空,因此信噪比定义为有源子载波百分比packetSNR = 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 = awgn(rx,packetSNR);包检测和确定粗包偏移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 = frequencyOffset(rx,fs,-粗freqoff);提取非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 = frequencyOffset(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,chanEst,nVarHT,cfgHT,...“LDPCDecodingMethod”“norm-min-sum”);确定是否有任何位错误,即数据包错误。packetError = any(biterr(txPSDU,rxPSDU));numPacketErrors = numPacketErrors+packetError;N = N +1;结束计算信噪比点的包错误率(PER)packeterrors (i) = numPacketErrors/(n-1);disp ([“信噪比”num2str(信噪比(i))...“完成后”num2str (n - 1)“包”,...per: 'num2str (packetErrorRate (i))));结束
信噪比25完成11包后,PER: 1信噪比35完成45包后,PER: 0.24444信噪比45完成100包后,PER: 0.01

图包错误率与信噪比结果

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

进一步的探索

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

附录

本例使用了以下helper函数:

选定的参考书目

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