主要内容

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捕捉长期无线电特性。将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;发射天线增益(dBi)PHYParameters。RxGain = 2;接收天线增益(dBi)PHYParameters。NoiseFigure = 7;%接收机噪声数字(dB)PHYParameters。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;

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

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

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生成并分配表格“Room#-STA#”的名称,以方便参考。场景参数NumRxPerRoom用于定义每个房间中有多少接收器(sta)。假设每个接收器都是各向同性的。

%接收机总数,假设每个房间有一个发射器(tx)numRx = numTx * ScenarioParameters.NumRxPerRoom;%创建接收站点roomNames =字符串(1、numRx);siteInd = 1:numRx“房间”+ (mod (siteInd-1 numTx) + 1) +“-”+装天花板(siteInd / numTx);结束rx = rxsite (笛卡儿的“名字”roomNames,“天线”“各向同性”);接收噪声功率(dBm)T = 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(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 =元素个数(独特(txChannels));k = 1: numChannels%使用第k个非重叠通道tind = txChannels == k;皮= false(大小(activeRx));rxChannels(activeRx) = rxChannels(activeRx) == 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部分-以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;不在同一非重叠信道上的阈值信号信号强度(~(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 =“模型”;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 = 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,传输事件#%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校准结果。

相关的话题