主要内容

802.11ad数据包错误率单载波PHY模拟TGay通道

这个例子展示了如何使用端到端模拟来测量IEEE®802.11ad™DMG单载波(SC) PHY链路的包错误率。

简介

在本例中,使用端到端模拟来确定802.11ad SC的包错误率[1]与TGay毫米波频道连接[2]在选择的信噪比点。在每个信噪比点,多个数据包通过衰落信道传输,同步,解调和psdu恢复。对载波频偏和时延也进行了建模。将psdu与传输的psdu进行比较,以确定数据包错误的数量,从而确定数据包错误率。下图总结了每个包的处理过程。

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

波形的配置

本例模拟802.11ad DMG SC PHY传输。DMG格式配置对象包含传输的特定格式配置。对象是使用wlanDMGConfig函数。该对象的属性包含了传输报文的配置。在本例中,该对象被配置为生成MCS“9”的单个载波波形。MCS决定使用的PHY类型,在本例中,它必须是1-12范围内的字符串,或者{9.1 12.1 12.2 12.3 12.4 12.5 12.6}中的一个来模拟SC PHY。

创建一个格式配置对象cfgDMG = wlanDMGConfig;mcs =“9”指定为字符串标量或字符串向量的MCScfgDMG。PSDULength = 4096;% PSDULength(以字节为单位)

衰落信道配置

在本例中,我们模拟开放区域热点场景的TGay通道模型,使用wlanTGayChannel对象。发射和接收阵列都是4x4均匀矩形阵列(URA)。从发射到接收阵列执行射线跟踪,以获得两种确定性射线:一种LOS射线和另一种来自地面的一阶反射的NLOS射线。随后,根据准确定性(Q-D)建模方法和[2].波束形成是为了设置发射和接收天线沿最大功率射线的转向方向。衰落的信道脉冲响应被归一化,因此信道没有功率增益或损失。信道输入和输出信号都是非极化的。

获取采样率并指定载波频率fs = wlanSampleRate(cfgDMG);Fc = 60e9;创建一个TGay通道对象tgayChan = wlanTGayChannel;tgayChan。SampleRate = fs;tgayChan。载波频率= fc;tgayChan。环境=“露天热点”;tgayChan.TransmitArray.Size = [4 4];tgayChan。TransmitArrayPosition = [0;0;6);%米tgayChan。TransmitArrayOrientation = [0;270;0);%度tgayChan.ReceiveArray.Size = [4 4];tgayChan。ReceiveArrayPosition = [6;6;1.5);%米tgayChan。ReceiveArrayOrientation = [90;0;0);%度tgayChan。BeamformingMethod =“最大功率射线”;tgayChan。normalizeimpulse esponses = true;tgayChan。NormalizeChannelOutputs = false;

给定信道对象配置,我们显示一个三维地图来显示环境和天线阵列设置。来自射线追踪的两条确定性射线也显示在图中。

showEnvironment (tgayChan);

通道障碍

发射机中心频率的最大公差必须在[-20,+20]ppm [1].在这个例子中,时钟精度为20ppm被认为可以得到CFO。传输信号被延迟500个样本,并在最后附加100个零样本,以考虑TGay信道滤波的延迟。

PPM = 20;驱动CFO的时钟精度(ppm)freqOffset = ppm*1e-6*fc;载频偏移百分比(Hz)延迟= 500;%采样延迟波形zeroPadding = 100;添加尾随零以允许信道延迟

仿真参数

对于单元中的每个信噪比点(dB)snrRanges生成若干包,通过通道并解调以确定包错误率。从信噪比点中选择测试snrRanges基于MCS的仿真。

snrRanges = {-2.5:0.5:0,...% MCS 1-0.5:0.75:3.5,...% MCS 21.0:0.75:5,...% MCS 31.5:0.75:5.5,...% MCS 42.0:0.75:6.0,...% MCS 52.5:0.75:6.5,...% MCS 63:0.75:7,...% MCS 74.5:0.75:8.5,...% MCS 86:0.5:8.5,...% MCS 97.0:0.5:9.5,...% MCS 9.18.5:1:13.5,...% MCS 109.5:1.0:14.5,...% MCS 1110.5:1.25:17.0,...% MCS 1211.5:1.5:19.0,...% MCS 12.113.0:1.0:18,...% MCS 12.214.0:1.0:19,...% MCS 12.317.0:1.5:25,...% MCS 12.419.0:2:29,...% MCS 12.519.5:2:30};% MCS 12.6

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

  1. maxNumErrors为每个信噪比点模拟的最大包错误数。当报文错误数达到该限制值时,该信噪比点的模拟结束。

  2. maxNumPackets是在每个信噪比点上模拟的最大数据包数,如果没有达到数据包错误限制,则限制模拟的长度。

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

maxNumErrors = 10;在一个信噪比点上的最大错误包数maxNumPackets = 100;一个信噪比点的最大包数

处理信噪比点

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

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

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

  2. 波形通过TGay通道模型传递。不同的信道实现为不同的包建模。

  3. AWGN被添加到接收的波形中。

  4. 频率偏移减值被添加到每个包中。

  5. 检测到报文。

  6. 对载波频偏进行估计和校正。

  7. 建立了良好的定时同步。提供了CE字段样本,以便在STF开始时进行包检测。

  8. STF和CE字段是从同步接收的波形中提取的。分别对恢复后的场进行噪声估计和信道估计。

  9. 数据字段(不包括第一个保护间隔)被提取并重新塑形为块。数据字段中接收到的符号是均衡的。

  10. 接收到的符号被跟踪并校正由任何剩余载波频率偏移引起的相位误差。

  11. 数据字段被解码以恢复PSDU位。

一个parfor环路可用于并行化处理信噪比点。启用并行计算,以提高注释输出的速度声明并取消注释parfor下面的语句。

numSNR =数字(snrRanges{1});信噪比百分比如果~ isstring (mcs)错误('MCS必须指定为字符串标量或字符串向量');结束numMCS = numel(mcs);% MCS个数packketerrorrate = 0 (numMCS,numSNR);Ngi = 64;标准规定的固定GI长度(20.6.3.2.5)validMCS =字符串(排序([1:12 9.1 - 12.1:0.1:12.6]));imcs = 1:numMCS cfgDMG。MCS = MCS (imcs);如果~ strcmp (phyType (cfgDMG),“SC”)错误(这个例子只支持DMG SC PHY模拟金宝app);结束ind = wlanFieldIndices(cfgDMG);snr = snrRanges{mcs(imcs)==validMCS};%信噪比点从MCS模拟% parfor isnr = 1:numSNR %使用'parfor'加快模拟速度isnr = 1:numSNR使用'for'来调试模拟每次迭代设置随机子流索引,以确保每个子流的索引迭代使用一组可重复的随机数流= RandStream(“combRecursive”“种子”1);流。Substream = isnr;RandStream.setGlobalStream(流);设置仿真参数numPacketErrors = 0;numPkt = 1;%发送报文索引numPacketErrors<=maxNumErrors && numPkt<=maxNumPackets生成报文波形psdu = randi([0 1], cfgdgm . psdulength *8,1);tx波形= wlanWaveformGenerator(psdu,cfgDMG);添加延迟和后面的0Tx =[0(延迟,1);txWaveform;0 (zeroPadding 1)];通过TGay通道传输。重置a的通道%每个包不同的实现。重置(tgayChan);chanOut = tgayChan(tx);%添加噪音rx = awgn(chanOut,snr(isnr));%增加CFOrx = frequencyOffset(rx,fs,freqOffset);包检测阈值= 0.03;%适合低信噪比pktStartOffset = dmgPacketDetect(rx,0,threshold);如果isempty (pktStartOffset)%如果为空,没有检测到STF;包错误numPacketErrors = numPacketErrors+1;numPkt = numPkt+1;继续%转到下一次循环迭代结束频率偏移估计和校正stf = rx(pktStartOffset+(ind.DMGSTF(1):ind.DMGSTF(2)));fOffsetEst = dmgCFOEstimate(stf);rx = frequencyOffset(rx,fs,-fOffsetEst);%符号计时和信道估计preamblefield = rx(pktStartOffset+1:pktStartOffset+ind.DMGHeader(2),:);[symboltiminggoffset,chanEst] = dmgTimingAndChannelEstimate(preamblefield);startOffset = pktStartOffset+symbolTimingOffset;%如果没有足够的样本解码检测到的数据字段开始,%,则假设同步错误和数据包错误如果(startOffset+ind.DMGData(2))>size(rx,1) numPacketErrors = numPacketErrors+1;numPkt = numPkt+1;继续%转到下一次循环迭代结束使用STF作为重复序列的噪声估计stf = rx(pktStartOffset+(ind.DMGSTF(1):ind.DMGSTF(2)));nVarEst = dmgSTFNoiseEstimate(stf);提取数据字段(忽略第一个GI)rxData = rx(startOffset+((ind.DMGData(1)+Ngi):ind.DMGData(2)));线性频域均衡rxEqDataBlks = dmgSingleCarrierFDE(rxData,chanEst,nVarEst);唯一的字相位跟踪rxEqDataBlks = dmgUniqueWordPhaseTracking(rxEqDataBlks);%从所有块中丢弃GIrxDataSym = rxEqDataBlks(1:end-Ngi,:);从DMG数据字段恢复传输的PSDUdataDecode = wlanDMGDataBitRecover(rxDataSym,nVarEst,cfgDMG);确定是否有任何位错误,即数据包错误。packetError = any(biterr(psdu,dataDecode));numPacketErrors = numPacketErrors+packetError;numPkt = numPkt+1;结束计算信噪比点的包错误率(PER)packeterrors (imcs,isnr) = numPacketErrors/(numPkt-1);disp(加入(["主持人:"cfgDMG。MCS,信噪比...num2str(信噪比(isnr))“完成后”...num2str (numPkt-1)数据包,PER: "...num2str (packetErrorRate (imc, isnr))),""));结束结束
MCS:9,信噪比6完成11包后,PER: 1 MCS:9,信噪比6.5完成16包后,PER: 0.6875 MCS:9,信噪比7完成38包后,PER: 0.28947 MCS:9,信噪比7.5完成99包后,PER: 0.11111 MCS:9,信噪比8完成100包后,PER: 0.04 MCS:9,信噪比8.5完成100包后,PER: 0.01

图包错误率与信噪比结果

标记=“牛* sd ^ v > < ph值+牛* sd ^ v ';颜色=“bmcrgbrkymcrgbrkymc”;图;imcs = 1:numMCS semilogy(snrRanges{mcs(imcs)==validMCS},packetErrorRate(imcs,:).',[“- - -”标记(imc)颜色(imc)]);持有结束网格;包含(“信噪比(dB)”);ylabel (“每”);dataStr = arrayfun(@(x)sprintf(“MCS % s”mcs, x)“UniformOutput”、假);传奇(dataStr);标题(“DMG SC-PHY的PER, TGay通道”);

进一步的探索

在每个信噪比点上测试的数据包数量由两个参数控制;maxNumErrors而且maxNumPackets.对于有意义的结果,建议这些值应该大于本例中显示的值。通过增加模拟的数据包数量,可以比较不同场景下的PER。尝试更改MCS值并比较数据包错误率。作为示例,下面的图是通过运行所有单载波MCS的示例创建的PSDULength: 8192字节,maxNumErrors: 1000和maxNumPackets: 10000。

通过改变环境(“街道峡谷热点”或“大型酒店大堂”)、用户配置、极化类型、阵列配置、波束形成方法等来探索TGay频道设置。在街道峡谷场景中,该对象计算了来自地面和墙壁的1阶反射的确定性射线。在酒店大堂场景中,确定性光线来自地面、天花板和/或墙壁的2阶反射。由于额外的射线反射,PER结果通常比上述从开放区域获得的结果更好。

选定的参考书目

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

  2. A. Maltsev等,IEEE 802.11ay信道模型,IEEE 802.11-15/1150r9, 2017年3月。