主要内容

802.11AD数据包错误率与TGay通道的单载波仿真

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

介绍

在这个例子中,端到端仿真被用来确定一个802.11ad SC的包错误率[1]连接tay毫米波通道[2在选择的信噪比点上。在每个信噪比点,多个数据包通过衰落信道传输,同步,解调,PSDUs恢复。载波频率偏移和时延也被建模。将PSDUs与传输的PSDUs进行比较,以确定包错误率和包错误率。下面的图表总结了每个包的处理过程。

这个例子还演示了parfor可以使用Loop来代替循环在模拟每个SNR点以加速模拟时。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”% MCS指定为字符串标量或字符串向量cfgDMG。PSDULength = 4096;% PSDULength(字节)

衰落信道配置

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

%获取采样率并指定载波频率fs = wlanSampleRate (cfgDMG);fc = 60 e9;%创建一个tay通道对象tgayChan = wlanTGayChannel;tgayChan。SampleRate = f;tgayChan。CarrierFrequency = 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.normalizeImpulsEsponses = true;

给定通道对象配置,我们显示一个3D地图来显示环境和天线阵列设置。图中也显示了光线追踪的两种确定性光线。

showEnvironment (tgayChan);

通道障碍

发射机中心频率的最大公差必须在[-20,+20]ppm以内[1].在本例中,时钟精度为20ppm的CFO被认为是派生的。传输信号被延迟了500个样本,并且在最后附加了100个零样本,以抵消TGay信道滤波带来的延迟。

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

仿真参数

对于单元格中的每个SNR点(DB)snrRanges生成多个数据包,通过信道并解调以确定分组错误率。SNR指向测试选中snrRanges基于模拟的MCS。

:0.5:0.5 snrRanges = {-2.0,...%MCS 10.0:1.0:5.0,...%MCS 21.0:1.2:7.0,...%MCS 3.2.0:1.2:8.0,...%MCS 4.2.0:1.3:8.5,...%MCS 5.2.5:1.3:9.0,...%MCS 6.4.0:1.3:10.5,...%MCS 7.5.0:1.5:12.5,...%MCS 8.5.5:1.5:13.0,...%MCS 9.7.0:1.5:14.5,...% MCS 9.18.0:1.8:17.0,...% MCS 1010.0:2.0:20.0,...% MCS 1112.0:2.0:22.0,...% MCS 1212.0:2.0:22.0,...% MCS 12.114.0:2.0:24.0,...% MCS 12.216.0:2.5:28.5,...% MCS 12.317.0:2.5:29.5,...% MCS 12.417.0:2.5:29.5,...% MCS 12.520.0:2.5:32.5};% MCS 12.6

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

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

  2. maxNumPackets是在每个SNR点处模拟的最大数据包数,并限制模拟的长度如果未达到数据包错误限制。

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

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

处理信噪比点

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

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

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

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

  3. AWGN被添加到接收的波形中。comm.AWGNChannel配置为提供正确的SNR。

  4. 频率偏移损害被添加到每个包中。

  5. 检测到数据包。

  6. 估计和校正载波频率偏移。

  7. 确定精细的时序同步。提供CE场样本用于精细定时,以允许在STF的开始处进行分组检测。

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

  9. 排除第一个保护间隔的数据字段并将其重新装回到块中。数据字段中的接收符号均衡。

  10. 对接收的符号进行跟踪,并对任何残余载波频率偏移引起的相位误差进行校正。

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

一个parfor循环可用于并行化SNR点的处理,因此对于每个SNR点,创建和配置AWGN通道comm.AWGNChannel.若要使用并行计算来提高速度,请注释掉声明和取消注释parfor下面的语句。

numSNR =元素个数(snrRanges {1});数量的SNR点数如果〜Isstring(MCS)错误('MCS必须指定为字符串标量或字符串向量');结束numMCS =元素个数(mcs);% MCS个数packetErrorRate = 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 金宝appSIMULAL');结束IND = WLANFIELDINDIDICES(CFGDMG);snr = snrranges {mcs(imcs)== validmcs};%信噪比点从MCS模拟% parfor isnr = 1:numSNR %使用“parfor”加速模拟isnr = 1: numSNR%使用'for'来调试模拟%每次迭代设置随机子流索引,以确保每个%迭代使用一组可重复的随机数Stream = RANDSTREAM(“combRecursive”“种子”,10);Stream.substream = ISNR;randstream.setglobalstream(Stream);%创建一个AWGN信道实例每个SNR点模拟awgnChannel = comm.AWGNChannel;awgnChannel。NoiseMethod =“信噪比”;awgnchannel.snr = snr(ISNR);设定模拟参数numpacketerrors = 0;numpkt = 1;%发送报文的索引numPacketErrors < = maxNumErrors & & numPkt < = maxNumPackets%生成报文波形psdu = randi([0 1],cfgDMG.PSDULength*8,1); / /设置时间txWaveform = wlanWaveformGenerator (psdu cfgDMG);%添加延迟和尾随零Tx = [零(延迟,1);txwaveform;零(Zeropadding,1)];%通过tay通道传输。重置a的通道%不同的实现每个包。重置(tgayChan);chanOut = tgayChan (tx);%添加噪声rx = awgnChannel (chanOut);%加入CFO.rx = helperfrequencyOffset(RX,FS,Freqoffset);%包检测阈值= 0.03;%适合低信噪比pktStartOffset = dmgPacketDetect (rx 0阈值);如果isempty (pktStartOffset)%如果没有检测到的STF;数据包错误numpacketerrors = numpacketerrors + 1;numPkt = numPkt + 1;继续%进入下一个循环迭代结束频率偏移估计和校正月31 = rx (pktStartOffset + (ind.DMGSTF (1): ind.DMGSTF (2)));fOffsetEst = dmgCFOEstimate (31);rx = helperFrequencyOffset (rx, fs -fOffsetEst);符号定时和信道估计preearfield = rx(pktstartoffset + 1:pktstartoffset + Ind.dmgheader(2),:);[SymbolTimingOffset,Chanest] = DmgTimingandChanneLestimate(PREAMBLEFIELD);startOffset = pktstartOffset + SymbolTimingOffset;%如果没有足够的样本来解码检测到的数据字段开始,%则假设同步错误和包错误如果(startOffset+ind.DMGData(2))>size(rx,1) numPacketErrors = numPacketErrors+1;numPkt = numPkt + 1;继续%进入下一个循环迭代结束使用STF作为重复序列的%噪声估计月31 = rx (pktStartOffset + (ind.DMGSTF (1): ind.DMGSTF (2)));据nvar = dmgSTFNoiseEstimate (31);%提取数据字段(忽略第一个gi)rxData = rx (startOffset + (ind.DMGData(1) +进行下一代Ngi): ind.DMGData (2)));线性频域均衡rxEqDataBlks = dmgSingleCarrierFDE (rxData,成龙,据nvar);%唯一字相位跟踪rxEqDataBlks = dmgUniqueWordPhaseTracking (rxEqDataBlks);%丢弃所有方块的GIrxDataSym = rxEqDataBlks (1: end-Ngi,:);%从DMG Data字段恢复传输的PSDU据nvar dataDecode = wlanDMGDataBitRecover (rxDataSym, cfgDMG);%确定是否有任何位错误,即数据包错误packetError =任何(biterr (psdu dataDecode));numPacketErrors = numPacketErrors + packetError;numPkt = numPkt + 1;结束%计算SNR点的数据包错误率(每个)packetErrorRate (imc isnr) = numPacketErrors / (numPkt-1);disp(加入(["主持人:"cfgDMG。MCS“,SNR”...num2str(信噪比(isnr))“完成后”...num2str(numpkt-1)"数据包,PER: "...num2str (packetErrorRate (imc, isnr))),""));结束结束
MCS: 9,信噪比5.5完成11包,之后每:1 MCS: 9,信噪比7完成后14包,每:0.78571 MCS: 9,信噪比8.5完成20包,每:0.55 MCS: 9,信噪比后10完成35包,每:0.31429 MCS: 9,信噪比11.5 70包完成后,每:0.15714 MCS: 9,信噪比13 100包完成后,每:0.08

图包错误率与信噪比结果

标记=“牛* sd ^ v > < ph值+牛* sd ^ v ';颜色='BMCRGBRKYMCRGBRKYMC';图;imcs = 1:nummcs mearogy(snrranges {mcs(imcs)== validmcs},packeterrorrate(imcs,:)。',[“- - -”标记(imc)颜色(imc)]);持有结束网格;Xlabel('snr(db)');ylabel (“每”);dataStr = arrayfun (@ (x) sprintf (“MCS % s”mcs, x)“UniformOutput”、假);传奇(dataStr);标题('PER for DMG SC-PHY, TGay channel');

进一步的探索

每个信噪比点测试的包数由两个参数控制;maxNumErrorsmaxNumPackets.对于有意义的结果,建议这些值应大于此示例中呈现的值。增加模拟的数据包数允许按照不同的情况下进行比较。尝试更改MCS值并比较数据包错误率。例如,下面的图是通过运行所有单载波MCS的示例来创建的PSDULength: 8192字节,maxNumErrors: 1000,maxNumPackets: 10000。

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

附录

这个例子使用了下面的辅助函数和对象:

选定的参考书目

  1. IEEE STD 802.11ad™-2012信息技术的IEEE标准 - 系统之间的电信和信息交流 - 本地和大都市区域网络 - 特定要求 - 第11部分:无线LAN介质访问控制(MAC)和物理层(PHY)规格。修正案3:60 GHz频段的吞吐量的增强功能。

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