主要内容

802.11动态速率控制仿真

这个例子展示了动态速率控制通过改变调制和编码方案(MCS)连续的数据包传输频率选择性多径衰落信道。

介绍

IEEE 802.11®™标准支持动态速率控制通过调整万博1manbetx每个数据包传输的MCS价值基于底层无线电传播通道。链路吞吐量最大化,由于多径传播信道是时变衰落或移动周围的物体,需要MCS的动态变化。IEEE 802.11标准没有定义任何标准化率控制算法(RCA)动态地改变调制率。RCA的实现留给WLAN设备制造商。这个示例使用闭环控制方案。推荐MCS计算传输一个数据包的接收机和发射机可以没有任何反馈延迟。在实际系统中这些信息将通过一个控制框架交换。MCS调整为每个后续数据包在回应一个发展通道条件与噪声功率不同。

在这个例子中,一个IEEE 802.11 ac™(1)组成的波形单一VHT格式生成包使用wlanWaveformGenerator函数。波形是通过添加一个TGac信道和噪声。数据包同步和恢复PSDU解码。信噪比估计和比较对阈值,以确定哪些MCS适用于下一个数据包的传输。这个图显示了每个数据包的处理。

波形的配置

IEEE 802.11 ac VHT传输模拟。在一个指定的VHT波形特性wlanVHTConfig配置对象。在这个例子中,对象是最初配置为一个40 MHz信道带宽,单一传输天线和QPSK rate-1/2 (MCS 1)。随后改变数据包的MCS算法在仿真。

cfgVHT = wlanVHTConfig;cfgVHT。ChannelBandwidth =“CBW40”;% 40 MHz带宽通道cfgVHT。MCS = 1;% QPSK rate-1/2cfgVHT。APEPLength = 4096;% APEP长度字节%设置随机流结果的可重复性s = rng (21);

通道配置

在这个例子中一个TGac N-LOS通道模型是使用延迟模型。模型在发射机和接收机之间的距离大于或等于10米,模型是仿真结果。这是进一步描述wlanTGacChannel

tgacChannel = wlanTGacChannel;tgacChannel。DelayProfile =“模型”;tgacChannel。ChannelBandwidth = cfgVHT.ChannelBandwidth;tgacChannel。NumTransmitAntennas = 1;tgacChannel。NumReceiveAntennas = 1;tgacChannel。TransmitReceiveDistance = 20;%在米距离了仿真结果tgacChannel。RandomStream =“与种子mt19937ar”;tgacChannel。种子= 0;tgacChannel。NormalizeChannelOutputs = false;%设置通道的采样率sr = wlanSampleRate (cfgVHT);tgacChannel。SampleRate =老;

速度控制算法参数

通常rca使用信道质量或链接性能指标,如信噪比或包错误率,速度的选择。在这个例子中给出的RCA估计收到的数据包的信噪比。在接待上,估计信噪比比较反对一个预定义的阈值。如果信噪比超过预定义的阈值然后选择一个新的MCS发射下一个数据包。的rcaAttackrcaRelease控制平稳率变化,以避免过早地改变利率。信噪比必须超过阈值+rcaAttack价值增加MCS和必须阈值- - - - - -rcaRelease价值降低MCS。在这个模拟rcaAttackrcaRelease将保守大举增加MCS和减少风险。为阈值价值选择的场景模拟在这个例子中,少量的包预计错误。这些设置可能不适合其他场景。

rcaAttack = 1;%控制灵敏度当MCS正在增加rcaRelease = 0;%控制MCS时灵敏度降低阈值= [11 14 19 20 25 28 30 31 35);snrUp =[阈值正]+ rcaAttack;snrDown =[无穷阈值]-rcaRelease;snrInd = cfgVHT.MCS;%将开始MCS存储值

仿真参数

在这个模拟numPackets数据包通过TGac通道传输,由一个固定的空闲时间。通道状态是维持整个模拟,因此该频道的发展缓慢。这种进化缓慢变化产生的信噪比测量接收机。自从TGac通道变化慢慢地随着时间的推移,这里接收机的信噪比变化可见短模拟可以强制使用walkSNR参数修改噪声功率:

  1. 设置walkSNR为真时生成一个随机设置不同信噪比的每个数据包在传输过程中噪声能力。14-33 dB(使用之间的信噪比走振幅meanSNR变量)。

  2. 设置walkSNR错误修复噪声功率应用于接收到的波形,这通道变化是在接收机信噪比变化的主要来源。

numPackets = 100;%在模拟传输的数据包数量walkSNR = true;%为仿真选择信噪比如果walkSNR meanSNR = 22;%的意思是信噪比振幅= 14;%的变化意味着信噪比平均信噪比的值%为每个传输数据包生成不同信噪比的值baseSNR =罪(linspace (1、10、numPackets)) *振幅+ meanSNR;snrWalk = baseSNR (1);%设置初始信噪比的值% maxJump控制最大信噪比之间的区别%包下maxJump = 0.5;其他的%固定意味着信噪比为每个数据包传输值。所有的变化%在信噪比来自一个时变的广播频道snrWalk = 22;% #好< UNRCH >结束%绘制每个空间流的平衡的星座% displayConstellation为真displayConstellation = false;如果displayConstellation ConstellationDiagram = comm.ConstellationDiagram;% #好< UNRCH >ConstellationDiagram。ShowGrid = true;ConstellationDiagram。Name =“平衡的数据符号”;结束%定义模拟变量numPackets snrMeasured = 0 (1);MCS = 0 (1、numPackets);1 = 0 (1、numPackets);numPackets packetLength = 0 (1);

处理链

以下处理步骤为每个数据包发生:

  1. 创建一个PSDU和编码创建一个包波形。

  2. 连续的数据包之间添加一个固定的空闲时间。

  3. 波形是通过一个进化TGac频道。

  4. AWGN添加到传播波形来创建所需的平均信噪比活跃的副载波OFDM解调后。

  5. 这个本地函数processPacket通过传播波形通过TGac渠道,执行接收处理、信噪比估计。

  6. VHT-LTF从接收到的波形中提取。VHT-LTF OFDM解调和信道估计。

  7. VHT数据字段从同步接收波形中提取。

  8. 噪声估计是使用解调数据字段执行飞行员和单个流在飞行员副载波信道估计。

  9. 每个包的信噪比估计是针对阈值相比,比较调整MCS用于下一个数据包。

  10. PSDU恢复使用提取的VHT-Data字段。

为了简单起见,这个示例假定:

  1. 固定的带宽和天线配置为每个数据包传输。

  2. 没有明确的反馈包通知建议MCS的发射机设置为下一个数据包。假定这些信息的例子是已知发射机发射前后续数据包。

  3. 固定包之间的空闲时间为0.5毫秒。

numPkt = 1: numPackets如果walkSNR%使用随机游走算法生成每个包的信噪比价值偏见%对平均信噪比snrWalk = 0.9 * snrWalk + 0.1 * baseSNR (numPkt) +兰德(1)* maxJump * 2-maxJump;结束%生成单个数据包波形txPSDU =兰迪([0,1],8 * cfgVHT.PSDULength, 1,“int8”);txWave = wlanWaveformGenerator (txPSDU cfgVHT,“IdleTime”5的军医);%接收处理,包括信噪比估计tgacChannel, y = processPacket (txWave snrWalk cfgVHT);%的情节使相等数据携带副载波的象征如果displayConstellation & & ~ isempty (y.EstimatedSNR)释放(ConstellationDiagram);ConstellationDiagram。ReferenceConstellation = wlanReferenceSymbols (cfgVHT);ConstellationDiagram。Title = (“包”int2str (numPkt)];ConstellationDiagram (y.EqDataSym (:));drawnow结束%为每个数据包存储估计信噪比的值如果numPkt isempty (y.EstimatedSNR) snrMeasured(1) =南;其他的numPkt snrMeasured (1) = y.EstimatedSNR;结束%确定数据包的长度在几秒钟内包括空闲时间packetLength (numPkt) = y.RxWaveformLength / sr;%计算包错误率(/)如果isempty (y.RxPSDU)%设置一个未被发现的每包NaNber (numPkt) =南;其他的[~,误码率(numPkt)] = biterr (y.RxPSDU txPSDU);结束%比较估计信噪比阈值,并调整MCS的价值%用于下一个数据包MCS (numPkt) = cfgVHT.MCS;% MCS存储当前的价值increaseMCS =(平均(y.EstimatedSNR) > snrUp ((snrInd = = 0) + snrInd));decreaseMCS =(意味着(y.EstimatedSNR) < = snrDown ((snrInd = = 0) + snrInd));snrInd = snrInd + increaseMCS-decreaseMCS;cfgVHT。MCS = snrInd-1;结束

仿真结果显示和阴谋

这个例子中情节的变化MCS,信噪比,系统和数据吞吐量的持续时间模拟。

  1. 每个数据包传输使用的MCS是策划。相比估计的信噪比,你可以看到的MCS选择依赖于估计的信噪比。

  2. 每个包的比特误码率取决于信道条件下,信噪比,MCS用于传输。

  3. 吞吐量最大化通过改变MCS根据信道条件。吞吐量计算使用滑动窗口的三个包。对于每个点绘制,吞吐量数据位的数量,成功找回三个包的时间。滑动窗口的长度可以增加进一步平滑的吞吐量。你可以看到吞吐量下降当MCS减少或当一个数据包发生错误。

%显示和绘制仿真结果disp ([的总体数据速率:num2str (8 * cfgVHT.APEPLength * (numPackets-numel(找到(ber))) / (packetLength) / 1和e6)“Mbps”]);disp ([“总包错误率:”num2str(元素个数(找到(ber)) / numPackets)]);MCS, plotResults (ber, packetLength snrMeasured cfgVHT);%恢复默认流rng(年代);
总体数据率:20.631 Mbps整体包错误率:0.03

结论和进一步勘探

这个示例使用一个闭环速度控制方案,MCS用于后续包传输的知识被认为是用于发射机。

在这个例子中,MCS的变化随着时间的推移,由于收到信噪比的控制阈值,rcaAttackrcaRelease参数。的rcaAttackrcaRelease被用作控制平滑速率变化,这是为了避免过早地改变利率。试着改变rcaRelease控制两个。在这种情况下,减少在MCS反应较慢,当信道条件不好,导致更高的方方面面。

尝试设置displayConstellation真正以阴谋使相等符号每收到包,您可以看到调制方案改变随着时间的推移。也尝试设置walkSNR假以可视化MCS每个包的变化。信噪比的变化是只有引起的广播频道,而不是通道和随机漫步的结合。

进一步探索包括使用一个替代RCA计划,更现实的MCS变异包括改变时空流,数据包大小,使后续的数据包传输的方式。

附录

这个示例使用以下辅助函数:

选定的参考书目

  1. -2020年IEEE Std 802.11™。IEEE标准信息技术——之间的通信和信息交换系统-本地和市区网络特定需求-第11部分:无线局域网介质访问控制(MAC)和物理层规范(体育)。

本地函数

下面的本地函数中使用这个例子:

  • processPacket:添加通道障碍和解码接收数据包

  • plotResults:仿真结果

函数tgacChannel, Y = processPacket (txWave snrWalk cfgVHT)%通过通过信道传输波形,表演%接收处理和信噪比估计。chanBW = cfgVHT.ChannelBandwidth;%通道带宽%设置以下参数为一个未被发现的空包estimatedSNR = [];eqDataSym = [];noiseVarVHT = [];rxPSDU = [];%的OFDM信息ofdmInfo = wlanVHTOFDMInfo (“VHT-Data”,cfgVHT);%通过波形通过衰落信道模型rxWave = tgacChannel (txWave);%噪声能量占null信噪比是每个定义的%活跃副载波packetSNR = snrWalk-10 * log10 (ofdmInfo.FFTLength / ofdmInfo.NumTones);%添加噪声rxWave = awgn (rxWave packetSNR);rxWaveformLength =大小(rxWave, 1);%接收到的波形的长度%恢复包印第安纳州= wlanFieldIndices (cfgVHT);%得到领域指标pktOffset = wlanPacketDetect (rxWave chanBW);%检测包如果~ isempty (pktOffset)%如果包检测%为细定时同步提取L-LTF字段LLTFSearchBuffer = rxWave (pktOffset + (ind.LSTF (1): ind.LSIG (2)),:);%开始L-LTF领域的指数finePktOffset = wlanSymbolTimingEstimate (LLTFSearchBuffer chanBW);%确定最终包抵消pktOffset = pktOffset + finePktOffset;如果pktOffset < 15%如果同步成功%从波形中提取VHT-LTF样本,解调%进行信道估计VHTLTF = rxWave (pktOffset + (ind.VHTLTF (1): ind.VHTLTF (2)),:);demodVHTLTF = wlanVHTLTFDemodulate (VHTLTF cfgVHT);chanEstVHTLTF = wlanVHTLTFChannelEstimate (demodVHTLTF cfgVHT);%得到单一河道的估计chanEstSSPilots = vhtSingleStreamChannelEstimate (demodVHTLTF cfgVHT);%提取VHT数据字段vhtdata = rxWave (pktOffset + (ind.VHTData (1): ind.VHTData (2)),:);%的噪声功率估计VHT数据字段noiseVarVHT = vhtNoiseEstimate (vhtdata chanEstSSPilots cfgVHT);在数据携带副载波使用%恢复平衡的符号% VHT-LTF信道估计[rxPSDU ~, eqDataSym] = wlanVHTDataRecover (vhtdata、chanEstVHTLTF noiseVarVHT, cfgVHT);%信噪比估计每接收天线powVHTLTF =意味着(VHTLTF。*连词(VHTLTF));estSigPower = powVHTLTF-noiseVarVHT;estimatedSNR = 10 * log10(意味着(estSigPower. / noiseVarVHT));结束结束%设置输出Y =结构(“RxPSDU”rxPSDU,“EqDataSym”eqDataSym,“RxWaveformLength”rxWaveformLength,“NoiseVar”noiseVarVHT,“EstimatedSNR”,estimatedSNR);结束函数MCS, plotResults (ber, packetLength snrMeasured cfgVHT)%可视化仿真结果图(“Outerposition”[50 50 900 700])次要情节(4,1,1);情节(MCS);包含(“包数”)ylabel (“主持人”)标题(的MCS选择传输)次要情节(4、1、2);情节(snrMeasured);包含(“包数”)ylabel (“信噪比”)标题(估计信噪比的)次要情节(4 1 3);情节(找到(数量= = 0),误码率(ber = = 0),“x”)举行;茎(找到(ber > 0),误码率(ber > 0),”或“)如果任何(ber)传说(“成功解码”,“成功解码”)其他的传奇(“成功解码”)结束包含(“包数”)ylabel (“方方面面”)标题(“瞬时比特误码率每包”)次要情节(4,4);windowLength = 3;%的平均长度窗口movDataRate = movsum (8 * cfgVHT.APEPLength。*(数量= = 0),windowLength)。/ movsum (packetLength windowLength) / 1 e6;情节(movDataRate)包含(“包数”)ylabel (“Mbps”)标题(sprintf (吞吐量/最后% d包的,windowLength))结束