802.11广告包错误率为OFDM PHY模拟
这个例子展示了如何衡量一个IEEE®802.11的包错误率广告™DMG OFDM PHY链接使用一个端到端的AWGN信道仿真。
介绍
在这个例子中一个端到端的模拟被用来确定一个802.11的包错误率广告DMG [1OFDM与一个AWGN信道信噪比点的选择对于一个定义的调制和编码方案(MCS)。对于每一个信噪比点,多个数据包通过一个通道传输,解调和PSDUs恢复。PSDUs相比那些传播决定数据包的数量错误,因此包错误率。完美的时间和频率同步是假定在这个例子。下图总结了每个数据包的处理。
这个示例还演示了如何加速模拟使用parfor
循环,而不是为
循环模拟每一个信噪比点。的parfor
函数,作为并行计算工具箱的一部分™,执行并行处理每个信噪比降低总的仿真时间。
波形的配置
802.11广告DMG OFDM传输模拟在这个例子。DMG格式配置对象,wlanDMGConfig
包含的特定配置传输的格式。对象包含的属性配置。在这个例子中OFDM传输的对象配置与MCS PSDU 21和一个8192字节。如果mcs
被指定为一个向量,每个MCS的模拟执行元素。MCS决定了体育类型使用,因此MCS必须在24里面使用OFDM PHY范围。
%创建一个DMG OFDM传输格式配置对象cfgDMG = wlanDMGConfig;cfgDMG。PSDULength = 8192;%字节%,DMG OFDM PHY MCS的有效范围是24里面(包容)mcs = 21;% OFDM PHY, 16 qam,率13/16
仿真参数
为每一个信噪比点生成的数据包数量,通过一个通道和解调来决定数据包出错率。信噪比点来模拟被选中snrRanges
基于MCS模拟。每个MCS的信噪比范围内选择为了模拟过渡期间的所有数据包被解码错误所有正在解码数据包成功随着信噪比的增加。
%用于AWGN信噪比范围snrRanges = {…1:0.5:1.5,…% MCS 130:0.5:2.5,…% MCS 141.5:0.5:4,…% MCS 153:0.5:5.5,…% MCS 164.5:0.5:7,…% MCS 177.5:0.5:10,…% MCS 189:0.5:11.5,…% MCS 1910.5:0.5:13,…% MCS 2012:0.5:14.5,…% MCS 2114.5:0.5:17,…% MCS 2216.5:0.5:19,…% MCS 2317.5:0.5:20,…% MCS 24};
数据包的数量在每个信噪比测试点是由两个参数:
maxNumErrors
是模拟在每个数据包的最大数量错误信噪比。当数据包错误的数量达到这个极限,模拟在这个信噪比点完成。maxNumPackets
在每个数据包的最大数量模拟信噪比点和限制的长度模拟如果数据包误差范围没有达到。
选择的数量在这个例子将导致非常短的模拟。有意义的结果,我们建议增加这些数字。
maxNumErrors = 10;%的最大数据包数量错误的信噪比maxNumPackets = 100;%的最大数据包数量的信噪比
设置剩余变量的模拟。
% OFDM信息ofdmInfo = wlanDMGOFDMInfo ();%的指标数据和飞行员占领副载波cfgDMG。MCS = MCS (1);%设置OFDM MCS副载波指数Nsd =元素个数(ofdmInfo.DataIndices);%的数量数据携带副载波
处理信噪比点
为每一个信噪比点的数据包数量进行测试,计算包错误率。
为每一个包发生以下处理步骤:
创建一个PSDU和编码创建一个包波形。
AWGN添加到波形来创建所需的平均信噪比活跃的副载波OFDM解调后。
DMG-Data字段提取完全同步接收波形和OFDM解调。
飞行员被丢弃和剩下的OFDM符号解调技术是使用已知的通道平衡的反应。作为一个AWGN链接在这个例子中,使用复杂的信道增益为每个副载波被假定为一个。
PSDU是恢复平衡的数据符号。
一个parfor
可以使用循环并行化处理的信噪比点。使用并行计算速度的增加,注释掉为
声明和取消parfor
在这段代码中声明。
numSNR =元素个数(snrRanges {1});%的信噪比点numMCS =元素个数(mcs);%的MCS数量packetErrorRate = 0 (numMCS numSNR);为imc = 1: numMCS cfgDMG。MCS = MCS (imc);如果~ strcmp (phyType (cfgDMG),OFDM的)错误(“这个例子只支持DMG OFDM PH金宝appY模拟”);结束%指数包内的字段fieldIndices = wlanFieldIndices (cfgDMG);从MCS %信噪比点来模拟信噪比= snrRanges {cfgDMG.MCS-12};% parfor isnr = 1: numSNR %使用parfor加快仿真为isnr = 1: numSNR%使用‘为’调试仿真%设置随机substream每迭代确保每个索引%迭代使用一组可重复的随机数字流= RandStream (“combRecursive”,“种子”,0);流。Substream = isnr;RandStream.setGlobalStream(流);%噪声能量占null信噪比是每个定义的%活跃副载波packetSNR =信噪比(isnr) -10 * log10 (ofdmInfo.FFTLength / ofdmInfo.NumTones);%循环模拟多个数据包numPacketErrors = 0;numPkt = 1;%指数数据包传输而numPacketErrors < = maxNumErrors & & numPkt < = maxNumPackets%生成一个数据包波形txPSDU =兰迪([0,1],cfgDMG.PSDULength * 8, 1);% PSDULength以字节为单位tx = wlanWaveformGenerator (txPSDU cfgDMG);%通过波形通过AWGN信道模型rx = awgn (tx, packetSNR);%提取数据字段rxData = rx (fieldIndices.DMGData (1): fieldIndices.DMGData (2));% OFDM解调demodSym = wlanDMGOFDMDemodulate (rxData);dataSym = demodSym (ofdmInfo.DataIndices:);%丢弃飞行员%平衡chanSym = 1 (Nsd, 1);%设置频道收益1 AWGN信道据nVar = 10 ^(信噪比(isnr) / 10);%噪声方差[eqSym, csi] = helperSymbolEqualize (dataSym chanSym,据nVar);%恢复数据据nVar rxPSDU = wlanDMGDataBitRecover (eqSym, csi, cfgDMG);%确定任何比特错误,即数据包错误packetError =任何(biterr (txPSDU rxPSDU));numPacketErrors = numPacketErrors + packetError;numPkt = numPkt + 1;结束%计算包错误率在信噪比点(/)packetErrorRate (imc isnr) = numPacketErrors / (numPkt-1);disp ([“主持人”num2str (mcs (imc))”、“…“信噪比”num2str(信噪比(isnr))…完成后的num2str (numPkt-1)“包”,…“每:”num2str (packetErrorRate (imc, isnr))));结束结束
MCS 21日信噪比12完成11包,之后每:1 MCS 21日信噪比12.5完成后12包,每:0.91667 MCS 21日信噪比13 71包完成后,每:0.15493 MCS 21日信噪比13.5 100包完成后,每:0.02 MCS 21日信噪比14 100包完成后,每:0 MCS 21日信噪比14.5 100包完成后,每:0
图包误码率与信噪比的结果
标记=“牛* sd ^ v > < ph值+ ';颜色=“bmcrgbrkymcr”;图;为imc = 1: numMCS semilogy (snrRanges {mcs (imc) -12}, packetErrorRate (imc,:)。’,“- - -”标记(imc)颜色(imc)]);持有在;结束网格在;包含(“信噪比(dB)”);ylabel (“每”);dataStr = arrayfun (@ (x) sprintf (“MCS % d 'mcs, x)“UniformOutput”、假);传奇(dataStr);标题(“每DMG OFDM-PHY AWGN信道的);
进一步的探索
数据包的数量在每个信噪比测试点是由两个参数:maxNumErrors
和maxNumPackets
。对于有意义的结果这些值应该比那些在这个例子。增加数据包的数量模拟允许每个不同场景下进行比较。作为一个例子,下面的图是由运行时间的例子maxNumErrors = 1 e3
和maxNumPackets = 1 e4
,因为mcs =十三24
。
附录
这个示例使用以下helper函数:
选定的参考书目
-2020年IEEE Std 802.11™。IEEE标准信息技术——之间的通信和信息交换系统-本地和市区网络特定需求-第11部分:无线局域网介质访问控制(MAC)和物理层规范(体育)。