主要内容

802.11ax phy重点系统级仿真

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

简介

在本例中,802.11ax [1]网络在住宅公寓楼评估使用物理为中心的系统级模拟。

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

TGax评估方法[3.为'PHY System Simulation'下面的例子:

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

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

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

本例由两部分组成:

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

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

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

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

仿真参数

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

PHYParameters = struct;PHYParameters。TxPower = 20;%发射机功率,单位为dBmPHYParameters。TxGain = 0;%发射机天线增益(dBi)PHYParameters。RxGain = -2;%接收机天线增益(dBi)PHYParameters。NoiseFigure = 7;%接收机噪声数值(以分贝为单位)PHYParameters。numtxantenna = 1;%发射机天线个数PHYParameters。numrxantenna = 1;%接收天线个数PHYParameters。ChannelBandwidth =“CBW80”系统带宽%PHYParameters。发射器频率= 5e9;%发射机频率,单位为HzMACParameters = struct;MACParameters。NumChannels = 3;%非重叠通道数MACParameters。CCALevel = -70;CCA算法中%传输阈值(dBm)

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

% [x,y,z]方向上的房间数场景参数= struct;ScenarioParameters。BuildingLayout = [10 2 5];%每个房间的大小,单位为米[x,y,z]ScenarioParameters。RoomSize = [10 10 3];%每个房间接收人数。注意,只能有一个接收器(STA)%活跃在任何给定的时间。ScenarioParameters。NumRxPerRoom = 1;

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

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

SimParameters = struct;SimParameters。NumDrops = 3;SimParameters。NumTxEventsPerDrop = 2;

生成发射点

在此之前进行了主体仿真,发射机现场对象txsite,以“room #”的形式生成并分配房间名称,以方便参考。假设每个房间有一个发射机(AP)。假设每个发射机都是各向同性的。

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

生成接收站点

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

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

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

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

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

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

Seed = rng(6);种子随机数生成器和存储状态如果showScenarioPlot hGrid = tgaxBuildResidentialGrid(ScenarioParameters.RoomSize,ScenarioParameters.BuildingLayout,...numTx、numRx MACParameters.NumChannels);结束如果校准流(“运行校准…\n”);预分配输出输出= struct;输出。sinr = 0 (SimParameters.NumDrops,numTx);%用于存储SINR值drop = 1:SimParameters参数。NumDrops%掉落每个房间的接收器[association,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 = nummel(唯一的(txChannels));k = 1:numChannels使用第k个非重叠通道tind = txChannels == k;rind = false(size(activeRx));rind(activeRx) = rxChannels(activeRx) == k;为每个主动接收机获取感兴趣的发射机的索引Tsigind = tnum(果皮);计算信噪比Output.sinr (drop,tind) = sinr(rxs(rind),txs(tind),...“ReceiverGain”, PHYParameters。RxGain,...“ReceiverNoisePower”rxNoisePower,...“PropagationModel”propModel,...“SignalSource”tx (tsigind));结束绘制节点和链接如果showScenarioPlot%更新绘图数据mask = 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滴的校准结果如下所示:

以物理物理为中心的系统级仿真

在本节中,使用A部分校准的场景和路径损耗模型来执行以物理物理为中心的系统级模拟,并确定网络的数据包错误率。这个模拟被描述为以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 = nan(numRx,SimParameters.NumTxEventsPerDrop,SimParameters.NumDrops);输出。sinrEst = nan(numRx,SimParameters.NumTxEventsPerDrop,SimParameters.NumDrops);输出。pktErrorRate = 0;为每个可能的发射器创建一个波形配置。在这个%示例所有节点的链路和无线电参数都相同。cfgHEBase = wlanHESUConfig;cfgHEBase。ChannelBandwidth = PHYParameters.ChannelBandwidth;通道带宽%cfgHEBase。numtransmitantenna = phyparameters . numtxantenna;%发射天线个数cfgHEBase。SpatialMapping =“傅里叶”空间映射矩阵cfgHEBase。NumSpaceTimeStreams = 1;%时空流个数cfgHEBase。GuardInterval = 0.8;防护间隔时间%cfgHEBase。HELTFType = 4;HE-LTF压缩模式cfgHEBase。APEPLength = 1e3;负载长度(以字节为单位)cfgHEBase。ChannelCoding =“方法”%信道编码cfgHEBase。MCS = 3;调制和编码方案cfgHE = cell(numTx,1);txidx = 1:numTx cfgHE{txidx} = cfgHEBase;结束流(“运行系统级模拟…\n”drop = 1:SimParameters参数。NumDrops流(“Running drop #%d/%d…\n”下降,SimParameters.NumDrops);%掉落每个房间的接收器[association,txChannels,rxChannels,txPositions,rxPositions] = tgaxDropNodes(...tx, rx ScenarioParameters MACParameters.NumChannels);生成传播模型propModel = TGaxResidential(“roomSize”, ScenarioParameters.RoomSize);计算所有链路的信号强度信号强度=信号强度(rxs,txs,propModel,“类型”“权力”...“ReceiverGain”, PHYParameters.RxGain);%所有dBm信号强度%阈值信号低于噪声水平,以减少模拟时间信号强度(信号强度< rxNoisePower) = -Inf;%不在同一非重叠信道上的阈值信号signalStrength(~(txChannels == rxChannels')) = -Inf;屏蔽对不可忽略的发送-接收链路%模拟并得到线性指标nonignored mask = signalStrength > -Inf;重置不可忽略通道以创建一个新的实现电流降百分比non疏忽idx = find(non疏忽mask)';为drop中每个可能的活动链接创建一个通道%的配置。在本例中,链路和无线电参数为%所有节点相同。tgaxChan = cell(数字(不可忽略idx),1);i = 1:数字(不可忽略idx)给定链路的发射机索引txIdx = mod(不可忽略idx (i)-1,numTx)+1;通道配置。每个链接的通道实现为%不同,因为使用全局随机流。tgaxChanBase = wlanTGaxChannel;tgaxChanBase。DelayProfile =“模型”;tgaxChanBase。numtransmitantenna = cfgHE{txIdx}. numtransmitantenna;tgaxChanBase。numreceiveantenna = phyparameters . numrxantenna;tgaxChanBase。TransmitReceiveDistance = 10;%距离(以米为单位)tgaxChanBase。ChannelBandwidth = cfgHE{txIdx}.ChannelBandwidth;tgaxChanBase。LargeScaleFadingEffect =“没有”;tgaxChanBase。EnvironmentalSpeed = 0;% m/s,静止tgaxChanBase。SampleRate = fs;tgaxChanBase。NormalizeChannelOutputs = false;存储在单元格数组中并重置通道以生成一个新的%响应tgaxChan{i} = 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);non疏忽maskactive = non疏忽mask (activeTx,activeRx);signalStrength(activeTx,activeRx);创建包含活动通道的数组tggaxchanactive = cell(size(associationActive));matchIdx = non疏忽idx ==find(activeTx&activeRx');tgaxChanActive(non疏忽maskactive) = tgaxChan(any(matchIdx,1));为每个不可忽略的活动链接和生成一个波形组合每个接收器的波形[rxwaves,txPSDUActive,signalPower, interpower] = tgaxGenerateRxWaveforms(...cfgHEActive、tgaxChanActive nonnegligibleMaskActive、signalStrengthActive associationActive);对每条链路运行PHY链路仿真,判断报文是否存在%已成功解码。估计干扰功率%被传递给接收器代替干扰功率%测量算法。numActiveRxs = sum(activeRx);pktError = false(numActiveRxs,1);sinrMeas = nan(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,drop) = sinrMeas;计算每个接收机的期望SINRsinrEst = 10*log10(signalPower./(interpower +10^((rxNoisePower-30)/10)));output.sinrEst(activeRx,txevent,drop) = sinrEst;结束结束计算平均数据包错误率输出。pktErrorRate = sum(output.numPktErrors)/sum(output.numPkts);disp (模拟完整的) disp ([发射器的平均数据包错误率:num2str (output.pktErrorRate)]);结束rng(种子);%恢复随机状态
运行系统级仿真…run drop #1/3…正在运行传输事件#1/2…正在运行传输事件#2/2…run drop #2/3…正在运行传输事件#1/2…正在运行传输事件#2/2…run drop #3/3…正在运行传输事件#1/2…正在运行传输事件#2/2… Simulation complete Average packet error rate for transmitters: 0.054152

进一步的探索

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

附录

本例使用了以下helper函数:

选定的参考书目

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

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

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

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