主要内容

基于tay信道的802.11ad包错误率单载波PHY仿真

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

介绍

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

这个例子还演示了parfor可以使用Loop来代替在模拟每个信噪比点时进行循环,以加速模拟。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(字节)

衰落信道配置

在本例中,我们使用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。NormalizeImpulseResponses = true;

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

showEnvironment (tgayChan);

通道障碍

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

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

仿真参数

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

:0.5:0.5 snrRanges = {-2.0,...% MCS 10.0:1.0:5.0,...% MCS 21.0:1.2:7.0,...% MCS 32.0:1.2:8.0,...% MCS 42.0:1.3:8.5,...% MCS 52.5:1.3:9.0,...% MCS 64.0:1.3:10.5,...% MCS 75.0:1.5:12.5,...% MCS 85.5:1.5:13.0,...% MCS 97.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为每个信噪比点上模拟的最大报文数,并在未达到包错误限制时限制模拟的长度。

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

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

处理信噪比点

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

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

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

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

  3. AWGN被添加到接收的波形中。comm.AWGNChannel,以提供正确的信噪比。

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

  5. 检测到报文。

  6. 估计并校正载波频率偏差。

  7. 建立了精细定时同步。提供CE字段样本用于精确定时,以便在STF开始时进行包检测。

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

  9. 数据字段(不包括第一个保护间隔)被提取并重新构造为块。在数据字段中接收的符号是相等的。

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

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

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

numSNR =元素个数(snrRanges {1});%信噪比点数如果~ 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:numMCSMCS = MCS (imc);如果~ strcmp (phyType (cfgDMG),“SC”)错误(“此示例仅支持DMG SC PHY模拟金宝app”);结束印第安纳州= wlanFieldIndices (cfgDMG);信噪比= snrRanges {mcs (imc) = = validMCS};%信噪比点从MCS模拟% parfor isnr = 1:numSNR %使用“parfor”加速模拟isnr = 1: numSNR%使用“for”调试模拟%每次迭代设置随机子流索引,以确保每个%迭代使用一组可重复的随机数流= RandStream (“combRecursive”“种子”10);流。Substream = isnr;RandStream.setGlobalStream(流);%创建一个AWGN信道实例每个SNR点模拟awgnChannel = comm.AWGNChannel;awgnChannel。NoiseMethod =“信噪比”;awgnChannel。信噪比=信噪比(isnr);设定模拟参数numPacketErrors = 0;numPkt = 1;%发送报文的索引numPacketErrors < = maxNumErrors & & numPkt < = maxNumPackets%生成报文波形psdu = randi([0 1],cfgDMG.PSDULength*8,1); / /设置时间txWaveform = wlanWaveformGenerator (psdu cfgDMG);%添加延迟和尾随零tx =[0(延迟,1);txWaveform;0 (zeroPadding 1)];%通过tay通道传输。重置a的通道%不同的实现每个包。重置(tgayChan);chanOut = tgayChan (tx);%添加噪声rx = awgnChannel (chanOut);%添加首席财务官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);符号定时和信道估计preamblefield = rx (pktStartOffset + 1: pktStartOffset + ind.DMGHeader (2):);[symbolTimingOffset,陈]= 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;结束%计算信噪比点的包错误率packetErrorRate (imc isnr) = numPacketErrors / (numPkt-1);disp(加入(["主持人:"cfgDMG。MCS“信噪比”...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”;图;',[/ cn] = 1:numMCS semilogy(snrRanges{mcs(imcs)==validMCS},packetErrorRate(imcs,:).',[“- - -”标记(imc)颜色(imc)]);持有结束网格;包含(“信噪比(dB)”);ylabel (“每”);dataStr = arrayfun (@ (x) sprintf (“MCS % s”mcs, x)“UniformOutput”、假);传奇(dataStr);标题('PER for DMG SC-PHY, TGay channel');

进一步的探索

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

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

附录

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

选定的参考书目

  1. IEEE Std 802.11ad™-2012信息技术IEEE标准。系统间电信和信息交换。局域网和城域网。特殊要求。第11部分:无线局域网介质访问控制(MAC)和物理层(PHY)规范修改3:增强了在60ghz频段的高吞吐量。

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