主要内容

基于802.11ax phy的系统级模拟

这个例子展示了如何为IEEE®802.11ax™执行一个以phy为中心的系统级模拟。第一部分(A)通过与已发表的校准结果进行比较,验证了仿真场景、无线电特性和大规模衰落模型。第(B)部分通过在基本的清晰通道评估方案下模拟活动节点之间的单个链路来估计802.11ax网络的包错误率。

简介

在本例中,802.11ax [1使用以物理物理为中心的系统级模拟对住宅公寓小区的网络进行评估。

住宅公寓楼模拟方案载于[2].这是一个五层的建筑,每层有20个10m x 10m x 3m的公寓。每个公寓都有一个接入点(AP)和一个或多个站(sta)放置在随机的xy位置,这个过程被称为“丢弃”节点。这为每个公寓创建了一个基本服务集(BSS),它被随机分配到三个频道中的一个。该仿真场景根据节点之间的距离和所穿越的墙壁和地板的数量指定了一个大规模的路径损失模型。

TGax评估方法[3.对于“PHY系统仿真”,下面的例子是:

  1. ap和sta在场景中被随机“丢弃”。

  2. 针对每对节点,计算大规模路径损耗。

  3. 执行一个或多个“传输事件”。每个传输事件包括根据通道访问规则选择活动ap和sta,并确定每条链路的性能。

这个例子由两部分组成:

在部分(A)中,“校准”阶段,假设下行干扰传输,计算多次“下降”的信噪比(SINR)。SINR捕获长期无线电特性。将SINR的累积分布函数(CDF)与TGax工作小组发表的结果进行比较[4].

在部分(B)中,“PHY系统级模拟”阶段,对于每个传输事件,PHY层为单个链路建模。基本清晰信道评估(CCA)方案用于控制哪些ap处于活动状态。受衰落信道模型影响的感兴趣信号和干扰信号的波形被生成和组合。接收端对产生的包进行处理,以恢复感兴趣的包。计算网络的平均包错误率。

可以使用这些参数禁用这个示例的两个部分校准而且systemLevelSimulation.时,仿真场景图、节点图、活动链路图、干扰图showScenarioPlot是真的。

校准= true;执行A部分校准测试systemLevelSimulation = true;执行B部分系统级模拟showScenarioPlot = true;显示动态模拟绘图更新

仿真参数

主要的仿真参数被定义为属于物理层(PHY)、介质访问控制层(MAC)、场景或仿真。在本例中,假设所有节点的PHY和MAC参数相同。

PHYParameters =结构;PHYParameters。TxPower = 20;%发射机功率单位为dBmPHYParameters。TxGain = 0;%发射机天线增益,单位dBiPHYParameters。RxGain = 2;%接收器天线增益,单位为dBiPHYParameters。NoiseFigure = 7;%接收器噪声数字,单位为dBPHYParameters。NumTxAntennas = 1;%发射机天线数PHYParameters。NumRxAntennas = 1;%接收天线数PHYParameters。ChannelBandwidth =“CBW80”%系统带宽PHYParameters。TransmitterFrequency = 5 e9;%发射机频率,单位为HzMACParameters =结构;MACParameters。NumChannels = 3;非重叠通道的数量MACParameters。CCALevel = -70;CCA算法中的传输阈值(dBm)

场景参数根据[3]定义住宅建筑的大小和布局。

%在[x,y,z]方向的房间数量ScenarioParameters =结构;ScenarioParameters。BuildingLayout = [10 2 5];%每个房间的面积,单位为米[x,y,z]ScenarioParameters。RoomSize = [10 10 3];每个房间接收人数%。注意只能有一个接收端(STA)%在任何给定时间活动。ScenarioParameters。NumRxPerRoom = 1;

NumDrops而且NumTxEventsPerDrop参数控制模拟的长度。对于本例,这些参数是为短模拟而配置的,但为了得到有意义的结果,应该增加这些参数。

“投递”在场景中随机放置发射器和接收器,并为BSS选择通道。“传输”事件根据基本的信道访问规则随机选择发送器和接收器进行传输。

SimParameters =结构;SimParameters。NumDrops = 3;SimParameters。NumTxEventsPerDrop = 2;

生成发射机网站

前面的仿真主体是发射机站点对象txsite,并以“room #”形式分配房间名称,以方便参考。假设每个房间有一个发射机(AP)。假设每个发射机都是各向同性的。

发射机总数的%,假设每个房间一台发射机(tx)numTx = prod (ScenarioParameters.BuildingLayout);创建具有各向同性天线单元的发射机站点roomNames =字符串(1、numTx);siteInd = 1:numTx roomNames(siteInd) =“房间”+ siteInd;结束tx = txsite (笛卡儿的“名字”roomNames,...“TransmitterFrequency”, PHYParameters。TransmitterFrequency,...“TransmitterPower”10。^ ((PHYParameters.TxPower + PHYParameters.TxGain-30) / 10),...“天线”“各向同性”);

生成接收器网站

接收站点对象rxsite,并以“Room#-STA#”的形式命名,以方便参考。场景参数NumRxPerRoom用于定义每个房间中有多少个接收器(sta)。假设每个接收器是各向同性的。

%接收器的总数,假设每个房间有一个发射器(tx)numRx = numTx * ScenarioParameters.NumRxPerRoom;%创建接收站点roomNames =字符串(1、numRx);siteInd = 1:numRx roomNames(siteInd) =“房间”+ (mod (siteInd-1 numTx) + 1) +“-”+装天花板(siteInd / numTx);结束rx = rxsite (笛卡儿的“名字”roomNames,“天线”“各向同性”);%接收器噪声功率,单位为dBmT = 290;开尔文温度(%)k = physconst (玻耳兹曼的);%玻耳兹曼常量%采样率(Hz)fs = wlanSampleRate (wlanHESUConfig (“ChannelBandwidth”PHYParameters.ChannelBandwidth));rxNoisePower = 10 * log10 (k * T * fs) + 30 + PHYParameters.NoiseFigure;

A部分-校准长期无线电特性

在本节中,通过执行TGax评估方框1测试2下行链路唯一校准测试,验证了模拟场景、无线电特性和大规模衰落模型[3.].该测试计算所有接收器(sta)的SINR,假设所有发射机(ap)都是活动的。发射器和接收器的多次下降作为模拟的一部分。每滴选择一个有源接收器。

计算每个接收器的SINR,并对模拟的所有下降进行聚合,以生成CDF曲线。此曲线与[4].

每下降生成一个显示节点位置、活动链接和干扰链接的图。通过单击相应的图例条目,可以在图中隐藏和显示各个通道。

种子= rng (6);种子随机数生成器并存储状态如果showScenarioPlot hGrid = tgaxBuildResidentialGrid(ScenarioParameters.RoomSize,ScenarioParameters.BuildingLayout,...numTx、numRx MACParameters.NumChannels);结束如果校准流(“运行校准…\ n”);%预先分配输出输出=结构;输出。sinr = 0 (SimParameters.NumDrops numTx);%用于存储SINR值滴= 1:SimParameters。NumDrops%在每个房间放下接收器(协会、txChannels rxChannels、txPositions rxPositions] = tgaxDropNodes (...tx, rx ScenarioParameters MACParameters.NumChannels);%所有发射机激活activeTx = true (numTx, 1);每个房间只选一个听筒rxAlloc = randi([1场景参数. numrxperroom],numTx,1);activeRx =重塑(rxAlloc = = 1: ScenarioParameters.NumRxPerRoom, [], 1);%生成传播模型propModel = TGaxResidential (“roomSize”, ScenarioParameters.RoomSize);获取每个接收器的发射机索引。tnum = repmat ((1: numTx), 1, numRx / numTx);SINR计算-每个非重叠通道的循环activeChannels =独特(txChannels);k = 1:元素个数(activeChannels)使用第k个非重叠通道tind = txChannels == activeChannels(k);皮= false(大小(activeRx));rind(activeRx) = rxChannels(activeRx) == activeChannels(k);为每个主动接收器获取感兴趣的发射机的索引tsigind = tnum(皮);%计算信噪比output.sinr(下降,点燃)= sinr (rx(皮),tx(点燃),...“ReceiverGain”, PHYParameters。RxGain,...“ReceiverNoisePower”rxNoisePower,...“PropagationModel”propModel,...“SignalSource”tx (tsigind));结束绘制节点和链接如果showScenarioPlot%更新图数据掩码= txChannels = = rxChannels ';tgaxUpdatePlot (hGrid、txPositions rxPositions、activeTx activeRx,面具,txChannels, rxChannels,...sprintf (“框1测试2“仅下行链路”校准,下降#%d/%d”下降,SimParameters.NumDrops));结束结束绘制SINR的CDF,并与校准曲线进行比较tgaxCalibrationCDF (output.sinr“SS1Box1Test2”“长期的广播特性”);流(“校准完成\ n”结束
运行校准……校准完成

这个例子模拟了少量的下降。因此,为了进行更有意义的比较,应该增加模拟的水滴数量。100滴的校正结果如下:

B部分-以物理物理为中心的系统级模拟

在本节中,使用A部分中校准的场景和路径丢失模型来执行以phy为焦点的系统级模拟,并确定网络的包错误率。该模拟被描述为PHY焦点,因为PHY没有被抽象,MAC被简化。每个活动链路使用基带发射机和接收机处理建模。一个非常简单的MAC假设在每个传输事件中,所有的发射器(ap)都希望传输,每个BSS的一个接收器(STA)是接收者。一个简单的CCA算法用于控制发射器之间的通道访问,如[3.].如果从已经激活的发射机接收到的信号功率不超过CCA阈值,CCA算法将启用随机发射机。MACParameters。CCAThreshold

从所有可能的干扰发射机接收到的信号功率在每个有源接收器上计算。如果从干扰发射机接收到的功率高于接收机的噪声下限,则链路采用全基带发射机和接收机处理建模。对于每个建模的链路,生成一个HE单用户包,并通过TGax model - d NLOS固定室内通道模型传递。在接收端,来自感兴趣的发射器和所有干扰发射器的波形按预期路径损耗进行缩放,并组合成包含感兴趣信号和干扰的波形。所有波形都是时间对齐的。接收器执行同步、解调和解码以试图恢复有效载荷。将解码后的有效载荷与BSS中传输的PSDU进行比较,以确定包是否已成功恢复。

在本例中,假设所有节点的传输和通道参数相同。所有数据包的传输配置为一个空时流,无空时块编码和16-QAM速率-1/2 (MCS 3)。

如果systemLevelSimulation%预先分配输出输出。numPkts = 0 (numRx, 1);输出。numPktErrors = 0 (numRx, 1);输出。sinrMeas =南(numRx SimParameters.NumTxEventsPerDrop SimParameters.NumDrops);输出。sinrEst =南(numRx SimParameters.NumTxEventsPerDrop SimParameters.NumDrops);输出。pktErrorRate = 0;为每个可能的发射机创建一个波形配置。在这个所有节点的链路和无线电参数都是相同的。cfgHEBase = wlanHESUConfig;cfgHEBase。ChannelBandwidth = PHYParameters.ChannelBandwidth;%通道带宽cfgHEBase。NumTransmitAntennas = PHYParameters.NumTxAntennas;%发射天线数cfgHEBase。SpatialMapping =“傅里叶”%空间映射矩阵cfgHEBase。NumSpaceTimeStreams = 1;%时空流的个数cfgHEBase。GuardInterval = 0.8;%防护间隔持续时间cfgHEBase。HELTFType = 4;% HE-LTF压缩模式cfgHEBase。APEPLength = 1 e3;负载长度(以字节为单位)cfgHEBase。ChannelCoding =“方法”%信道编码cfgHEBase。MCS = 3;调制和编码方案cfgHE =细胞(numTx, 1);txidx = 1:numTx cfgHE{txidx} = cfgHEBase;结束流(运行系统级模拟…\n滴= 1:SimParameters。NumDrops流('正在运行drop #%d/%d…\n'下降,SimParameters.NumDrops);%在每个房间放下接收器(协会、txChannels rxChannels、txPositions rxPositions] = tgaxDropNodes (...tx, rx ScenarioParameters MACParameters.NumChannels);%生成传播模型propModel = TGaxResidential (“roomSize”, ScenarioParameters.RoomSize);计算所有链路的信号强度propModel signalStrength = sigstrength (rx, tx,“类型”“权力”...“ReceiverGain”, PHYParameters.RxGain);%所有信号强度在dBm%阈值信号低于噪声水平,以减少模拟时间signalStrength(signalStrength < rxNoisePower) = -Inf;不在同一非重叠通道上的阈值信号signalStrength(~(txChannels == rxChannels')) = -Inf;掩码不可忽略的发送-接收链路%模拟并得到线性指标> -Inf;重设不可忽略的通道以创建一个新的实现%电流下降nonnegligibleIdx =找到(nonnegligibleMask) ';为每一个可能的活动链接创建一个通道%的配置。在本例中,链路和无线电参数是%对所有节点相同。tgaxChan =细胞(元素个数(nonnegligibleIdx), 1);i = 1:元素个数(nonnegligibleIdx)给定链路的发射机索引txIdx =国防部(nonnegligibleIdx (i) 1, numTx) + 1;%通道配置。每个环节的通道实现为%不同于使用的全局随机流。tgaxChanBase = wlanTGaxChannel;tgaxChanBase。DelayProfile =“模型”;tgaxChanBase。NumTransmitAntennas = cfgHE {txIdx} .NumTransmitAntennas;tgaxChanBase。NumReceiveAntennas = PHYParameters.NumRxAntennas;tgaxChanBase。TransmitReceiveDistance = 10;%距离,单位为米tgaxChanBase。ChannelBandwidth = cfgHE {txIdx} .ChannelBandwidth;tgaxChanBase。LargeScaleFadingEffect =“没有”;tgaxChanBase。EnvironmentalSpeed = 0;% m / s,静止的tgaxChanBase。SampleRate = f;tgaxChanBase。NormalizeChannelOutputs = false;%存储在单元格数组中并重置通道以生成新的%响应tgaxChan{我}= tgaxChanBase;我重置(tgaxChan {});结束txevent = 1: SimParameters。NumTxEventsPerDrop流('正在运行传输事件#%d/%d…\n'、txevent SimParameters.NumTxEventsPerDrop);通过清晰通道评估确定主动发射机和接收器。[activeTx, activeRx] = tgaxCCA (signalStrength MACParameters.CCALevel);绘制场景和链接如果showScenarioPlot tgaxUpdatePlot (hGrid txPositions、rxPositions activeTx, activeRx, nonnegligibleMask, txChannels, rxChannels,...sprintf ('PHY系统级模拟,传输事件#%d/%d'...下降,SimParameters.NumDrops, txevent SimParameters.NumTxEventsPerDrop));结束使用activeTx和activeRx为活动链接提取元素cfgHEActive = cfgHE (activeTx);associationActive =协会(activeTx activeRx);nonnegligibleMaskActive = nonnegligibleMask (activeTx activeRx);signalStrengthActive = signalStrength (activeTx activeRx);创建包含活动通道的数组tgaxChanActive =细胞(大小(associationActive));matchIdx = nonnegligibleIdx = =找到(activeTx&activeRx ');tgaxChanActive (nonnegligibleMaskActive) = tgaxChan(任何(matchIdx, 1));为每个不可忽略的活动链接生成波形。%为每个接收器组合波形[rxWavs, txPSDUActive signalPower interfPower] = tgaxGenerateRxWaveforms (...cfgHEActive、tgaxChanActive nonnegligibleMaskActive、signalStrengthActive associationActive);为每条链路运行PHY链路模拟,并确定数据包是否%已成功解码。估计干扰功率%被传递到干扰电源所在的接收器%的测量算法。numActiveRxs =总和(activeRx);pktError = false (numActiveRxs, 1);sinrMeas =南(numActiveRxs, 1);rxIdx = 1:numActiveRxs [pktError(rxIdx),sinrMeas(rxIdx)] = tgaxModelPHYLink(...cfgHEActive rxWavs {rxIdx}, {rxIdx}, rxNoisePower, interfPower (rxIdx) txPSDUActive {rxIdx});结束为活动接收器存储输出output.numPktErrors (activeRx) = output.numPktErrors (activeRx) + pktError;output.numPkts(activeRx) = output.numPkts(activeRx) + 1;output.sinrMeas (activeRx txevent下降)= sinrMeas;计算每个接收器的期望SINRsinrEst = 10 * log10 (signalPower. / (interfPower + 10 ^ ((rxNoisePower-30) / 10)));output.sinrEst (activeRx txevent下降)= sinrEst;结束结束计算平均包错误率输出。pktErrorRate =总和(output.numPktErrors) /笔(output.numPkts);disp (模拟完整的) disp ([“发射器的平均包错误率:”num2str (output.pktErrorRate)]);结束rng(种子);%恢复随机状态
运行系统级仿真…1/3下降…正在运行传输事件#1/2…正在运行传输事件#2/2…跑下2/3…正在运行传输事件#1/2…正在运行传输事件#2/2…跑下3/3…正在运行传输事件#1/2…正在运行传输事件#2/2… Simulation complete Average packet error rate for transmitters: 0.054152

进一步的探索

本例中演示的以phy为中心的系统级模拟可用于探索phy级参数对系统性能的影响。例如,下图显示了不同CCA阈值下的网络平均包错误率,即50个滴和每滴2个传输事件。

附录

这个例子使用了以下helper函数:

选定的参考书目

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

  2. IEEE 802.11-14/0980r16 - TGax仿真场景。

  3. IEEE 802.11-14/0571r12 - 11ax评估方法。

  4. IEEE 802.11-14/0800r30 -框1和框2校准结果。

相关的话题

Baidu
map