主要内容

802.11ax聚焦于phy的系统级仿真

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

介绍

在本例中,802.11ax [1使用以phy为重点的系统级模拟来评估一个住宅公寓街区的网络。

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

TGax评估方法[3.]关于“PHY系统仿真”后面这个例子:

  1. AP和STA是随机的方案中“下降”。

  2. 对于每一对节点,大规模的路径损耗来计算。

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

这个例子包括两个部分:

在部分(A)中,“校准”阶段,信号与干扰加噪声比(SINR)是用于多个计算“下降”,假设下行链路的干扰传输。SINR捕捉长期的无线特性。的累积分布函数(CDF)的SINR的与来自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;%发射机天线在6dBi增益PHYParameters。RxGain = 2;接收天线增益(dBi)PHYParameters。NoiseFigure = 7;%接收机噪声数字(dB)PHYParameters.NumTxAntennas = 1;%发射机天线数PHYParameters。NumRxAntennas = 1;%接收天线数PHYParameters。ChannelBandwidth =“CBW80”;%系统带宽PHYParameters.TransmitterFrequency = 5E9;%发射频率,单位为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;

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

A“下降”随机放置场景并选择内发射机和接收机用于BSS的通道。A“发送”事件随机根据基本信道接入规则选择用于传输的发射机和接收机。

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

生成的发射台站

在主体仿真之前,对发射机站点对象进行了仿真txsite,并以“房间#”的形式指定房间名称,以方便参考。假设每个房间有一个发射机(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被生成并且为了便于参考分配形式“房#-STA#”的名称。场景参数NumRxPerRoom用于定义每个房间中有多少接收器(sta)。假设每个接收器都是各向同性的。

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

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

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

计算每个接收机的SINR,并在所有滴模拟上聚合,生成CDF曲线。此曲线与[4].

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

种子= RNG(6);%种子随机数生成器和存储状态如果showScenarioPlot hGrid = tgaxBuildResidentialGrid(scenarioplot . 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 ScenarioParameters.NumRxPerRoom],numTx,1);activeRx =重塑(rxAlloc = = 1: ScenarioParameters.NumRxPerRoom, [], 1);%生成传播模型propModel = TGaxResidential (“roomSize”,ScenarioParameters.RoomSize);获取每个接收器的发射机索引tnum = repmat ((1: numTx), 1, numRx / numTx);% SINR计算-在每个不重叠的通道上循环numChannels = numel(唯一的(txChannels));k = 1: numChannels%用途第k个非重叠的信道tind = txChannels == k;皮= false(大小(activeRx));rxChannels(activeRx) = rxChannels(activeRx) == k;%获得感兴趣的发射机的指数为每个主动接收器tsigind = tnum(皮);%计算信噪比output.sinr(降,Tind的)= SINR(RXS(果皮),TXS(Tind的),...“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部分-以phy为重点的系统级仿真

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

在每个有源接收机上计算来自所有可能干扰发射机的接收信号功率。如果从干扰发射机接收的功率高于接收机的噪声底,则链路采用全基带发射机和接收机处理建模。对于每个模型链路,生成一个HE单用户包并通过TGax模型- 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流('跑步下降#%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;%屏蔽不可忽略的发送-接收链路%模拟并得到线性指标nonignored mask = signalStrength > -Inf;重置不可忽略的通道以创建一个新的实现%电流下降nonnegligibleIdx =找到(nonnegligibleMask) ';%为每一个可能的活动链接在一个下降创建一个通道% 配置。在该实例中链路和无线电参数是%对所有节点相同。tgaxChan =细胞(元素个数(nonnegligibleIdx), 1);i = 1:元素个数(nonnegligibleIdx)%给定链路的发射机指数txIdx =国防部(nonnegligibleIdx (i) 1, numTx) + 1;%通道配置。每个链接的通道实现为%不同的全局随机流被使用。tgaxChanBase = wlanTGaxChannel;tgaxChanBase。DelayProfile ='型号-d';tgaxChanBase。NumTransmitAntennas = cfgHE {txIdx} .NumTransmitAntennas;tgaxChanBase。NumReceiveAntennas = PHYParameters.NumRxAntennas;tgaxChanBase。TransmitReceiveDistance = 10;% NLOS的距离以米为单位tgaxChanBase。ChannelBandwidth = cfgHE {txIdx} .ChannelBandwidth;tgaxChanBase。LargeScaleFadingEffect ='没有任何';tgaxChanBase.EnvironmentalSpeed = 0;% m / s,静止的tgaxChanBase.SampleRate = FS;tgaxChanBase.NormalizeChannelOutputs = FALSE;存储在单元格数组中并重置通道以生成新的% 回复tgaxChan {I} = tgaxChanBase;重置(tgaxChan {I});结束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,传输事件#%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;%计算每个接收机的期望信噪比sinrEst = 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级参数对系统性能的影响。例如,下图显示了50滴和每个滴2个传输事件的不同CCA阈值下的网络平均包错误率。

附录

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

选定的参考书目

  1. IEEE P802.11ax™/ D4.1信息技术标准草案——电信和信息交换系统之间-本地和市区网络特定需求-第11部分:无线局域网介质访问控制(MAC)和物理层(体育)规范-第六修正案:高效WLAN的增强。

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

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

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

相关的话题