主要内容

NR PUSCH软驱调度

本示例评估了一种集成了RLC (radio link control)层的FDD (frequency division duplexing)模式上行链路调度策略的吞吐量和资源共享公平性性能。UL调度策略将物理上行共享通道资源(PUSCH)分配给连接到gNB的一组ue (user equipment)。该示例使用了RLC层的未确认模式(UM)和直通物理层(PHY)。直通PHY层不涉及任何物理层处理,并采用基于概率的方法来模拟数据包接收故障。该示例记录模拟中的事件,并显示运行时可视化以观察网络性能。

简介

本例展示了调度策略(由gNB控制)如何在ue之间分配UL资源。本例考虑了gNB和ue中促进UL传输和接收的以下操作。

完整的PUSCH包以其分配的符号集的第一个符号传输。接收方在分配的符号集中的最后一个符号之后处理符号中的包。

调度程序运行每一个p插槽分配UL资源,其中p调度器的配置周期。在每次运行中,调度的插槽数等于调度程序运行的周期,p.第一个槽,在p是下一个即将到来的插槽,它满足终端的PUSCH准备时间能力。例如,该图显示了调度程序在连续两次运行期间选择插槽的方式。它假设调度器周期性(p)3个槽。因此,调度器每隔3个插槽运行一次,并为3个插槽调度资源。假定所有终端的PUSCH准备时间能力大于1个插槽(14个符号)但小于2个插槽(28个符号)。

  • Run-1:当调度程序在Slot-A开始运行时,它从Slot-C开始调度3个插槽,因为对于Slot-A和Slot-B, ue没有足够的PUSCH准备时间(ue在Slot-A开始的时间为0个符号,在Slot-B开始的时间为14个符号)。对于Slot-C, UEs获得28个符号用于PUSCH制备,这满足了PUSCH制备时间的能力。因此,Slot-C、D和E在这次运行中被调度。

  • Run-2:当调度程序在Slot-D的开始运行时,它从Slot-F (Slot-F, G和H)开始调度接下来的3个相邻的插槽。

您可以选择任意一种已实现的调度策略:比例公平(PF)、最佳CQI或轮询(RR)。列出了UL调度器支持的各万博1manbetx种输入,以及考虑它们的调度策略。

BSR (buffer status report)和UL分配(UL assignment)这两个控制包被认为是在带外发送的,不需要传输资源。

解调参考信号(DM-RS)在本例中没有建模。但是,在PUSCH赋值中有一个符号没有使用。

这个例子建模:

  • 基于槽和符号的UL调度。UL调度程序确保终端获得所需的PUSCH准备时间。

  • 频域资源在资源块组(rbg)方面的不连续分配。

  • 可配置的子载波间距导致不同的插槽持续时间。

  • 异步UL混合自动重复请求(HARQ)机制。

  • 使用UL分配中的新数据指示器(NDI)标记,由终端检测UL接收成功或失败。

  • 支持不同应用程序流量模式的多个逻辑通道。万博1manbetx

  • UE上的逻辑通道优先级(LCP)在逻辑通道之间分配接收到的UL分配。

  • 周期性的UL应用程序流量模式。

  • 在UM模式下运行的RLC。

场景配置

对于模拟,设置以下关键配置参数:

  • 仿真时间

  • 终端数量

  • 终端与gNB的距离(影响终端的UL CQI值)

  • 应用程序流量模式在终端产生流量

  • 分别用于终端和gNB的Tx和Rx实体的RLC配置

  • ue和gNB的逻辑通道配置

  • 调度策略:PF,最佳CQI, RR

  • 各终端定期向国民银行发送有关待定缓冲金额的BSRs

  • PUSCH准备时间为UEs

  • 以资源块数量表示的PUSCH带宽(RBs)

  • 副载波间距

  • RBG大小配置类型

  • 初始UL通道质量及其更新机制

rng (“默认”);重置随机数生成器simParameters = [];清除仿真参数simParameters。NumFramesSim = 200;%以10毫秒帧数表示的模拟时间simParameters。SchedulingType = 0;将该值设置为0(基于插槽的调度)或1(基于符号的调度)

指定计算单元中的ue数量,假设ue具有顺序无线网络临时标识符(rnti)1simParameters。NumUEs.如果修改终端数量,请确保接入的行数simParameters。UEPosition参数等于的值simParameters。NumUEs;而且appDataRatesimParameters。RLCConfig,simParameters。LCHConfig由等于的行数组成simParameters。NumUEs

simParameters。NumUEs = 4;为ue分配位置,假设gNB在(0,0,0). n × 3%矩阵,其中“N”是ue的个数。每一行有(x, y, z)的位置% a UE(单位:米)simParameters。UEPosition= [100 0 0; 250 0 0; 700 0 0; 750 0 0];验证UE位置validateattributes (simParameters。UEPosition, {“数字”}, {“非空的”“真实”的“nrows”, simParameters。NumUEs,“ncols”3,“有限”},“simParameters。UEPosition”“UEPosition”);

每个终端逻辑通道数。如果更改逻辑通道数,请确保模拟appDataRatesimParameters。RLCConfig,simParameters。LCHConfig由等于的列数组成simParameters。NumLogicalChannels.与数据无线电承载器关联的逻辑通道使用从4开始的逻辑通道标识符(lcid)。因此,假设逻辑通道的lcid从4到simParameters。NumLogicalChannels+ 3。

simParameters。NumLogicalChannels = 3;

设置终端的应用流量模式。n × p矩阵表示终端在每个逻辑通道中生成的应用数据,其中'N'表示ue的数量,'P表示逻辑通道数。位置(i, j)的矩阵元素表示UE使用RNTI '生成的数据速率,单位为千比特每秒(kbps)。“用于LCID”j + 3”。例如,在索引(3,1)处的值3200表示UE-3为LCID 4生成的应用程序数据速率为3200 kbps

appDataRate = [800 1200 1600;200 3200 3200;3200 1600 800;800 4000 3200];%应用程序数据速率(kbps)验证应用程序数据速率validateattributes (appDataRate, {“数字”}, {“非空的”“整数”“nrows”, simParameters。NumUEs,“ncols”, simParameters。NumLogicalChannels,“有限”“>”, 0},“appDataRate”“AppDataRate”);

设置RLC配置。的每个属性simParameters。RLCConfig必须是n × p矩阵,其中'N'表示ue的数量,'P表示逻辑通道数。位置(i, j)的矩阵元素对应具有RNTI '的UE的属性值和LCIDj + 3”。

每个终端用于其逻辑通道的SN (serial number)字段长度(单位为比特)simParameters.RLCConfig.SNFieldLength = [6 6 12;6 6 12;6 12 6;6 6 12];每个UE用于其逻辑通道的重组计时器simParameters.RLCConfig.ReassemblyTimer = [5 10 15;5 5 10;5 5 5;5 10 15];每个逻辑通道的Tx缓冲区中的最大业务数据单元(sdu)数量(用于模拟Tx缓冲区溢出)simParameters.RLCConfig.MaxTxBufferSDUs = [4 3 11;3 5 4;6 1 3;11 6 26];验证RLC配置validateattributes (simParameters.RLCConfig。SNFieldLength, {“数字”}, {“非空的”“整数”“nrows”, simParameters。NumUEs,“ncols”, simParameters。NumLogicalChannels},“simParameters.RLCConfig.SNFieldLength”“SNFieldLength”);validateattributes (simParameters.RLCConfig。ReassemblyTimer, {“数字”}, {“非空的”“整数”“nrows”, simParameters。NumUEs,“ncols”, simParameters。NumLogicalChannels},“simParameters.RLCConfig.ReassemblyTimer”“ReassemblyTimer”);validateattributes (simParameters.RLCConfig。MaxTxBufferSDUs, {“数字”}, {“非空的”“整数”“nrows”, simParameters。NumUEs,“ncols”, simParameters。NumLogicalChannels,“有限”“>”, 0},“simParameters.RLCConfig.MaxTxBufferSDUs”“MaxTxBufferSDUs”);

LCH (Logical channel)配置。的每个属性simParameters。LCHConfig必须是n × p矩阵,其中'N'表示ue的数量,'P表示逻辑通道数。位置(i, j)的矩阵元素对应具有RNTI '的UE的属性值和LCIDj + 3”。

%逻辑通道与LCG (logical channel group)对应关系IDsimParameters.LCHConfig.LCGID = [1 3 2;1 2 2;1 2 3;5 1 2];每个逻辑通道的优先级simParameters.LCHConfig.Priority = [1 5 8;1 1 6;4 10 4;10 11 13];每个逻辑通道的优先比特率(PBR) %(单位:千字节/秒)simParameters.LCHConfig.PBR = [8 16 32;8 128 32;8 16 32;8 16 32];每个逻辑通道的桶大小持续时间(BSD) %(单位:ms)simParameters.LCHConfig.BSD = [5 10 50;5 20 20;5 5 5;5 10 20];验证逻辑通道配置validateattributes (simParameters.LCHConfig。LCGID, {“数字”}, {“非空的”“整数”“nrows”, simParameters。NumUEs,“ncols”, simParameters。NumLogicalChannels,“> =”0,“< =”7},“simParameters.LCHConfig.LCGID”“LCGID”);validateattributes (simParameters.LCHConfig。优先级,{“数字”}, {“非空的”“整数”“nrows”, simParameters。NumUEs,“ncols”, simParameters。NumLogicalChannels,“> =”, 1“< =”16},“simParameters.LCHConfig.Priority”“优先”);validateattributes (simParameters.LCHConfig。PBR, {“数字”}, {“非空的”“整数”“nrows”, simParameters。NumUEs,“ncols”, simParameters。NumLogicalChannels},“simParameters.LCHConfig.PBR”“PBR”);validateattributes (simParameters.LCHConfig。BSD, {“数字”}, {“非空的”“整数”“nrows”, simParameters。NumUEs,“ncols”, simParameters。NumLogicalChannels},“simParameters.LCHConfig.BSD”BSD的);

MAC (Medium access control)配置。

根据插槽数设置调度器周期性运行。值必须为小于10ms帧中槽数的%simParameters。SchedulerPeriodicity = 4;simParameters。SchedulerStrategy =“PF”%支万博1manbetx持的调度策略:'PF', 'RR'和'BestCQI'%范围[0,1]内的移动平均权重参数计算UE的平均数据速率。PF调度策略中使用。接近1的参数值表示瞬时的权重更大%数据速率。参数值接近0表示对过去的权重更大%数据速率% AverageDataRate = ((1 - MovingAvgDataRateWeight) * PastDataRate) + (MovingAvgDataRateWeight * InstantaneousDataRate)simParameters。MovingAvgDataRateWeight = 0.5;simParameters。BSRPeriodicity = 5;%(毫秒)simParameters。EnableHARQ = true;启用或禁用HARQ。如果禁用,则没有重传simParameters。NumHARQ = 16;每个UE中HARQ进程的百分比

指定PUSCH准备时间。gNB确保PUSCH任务至少在终端收到PUSCHPrepTime在传输时间之前。

simParameters。PUSCHPrepTime= 200;%(微秒)

在一个插槽中为PUSCH传输分配给UE的最大RBs(限制适用于新的PUSCH分配,不适用于重传)

simParameters。RBAllocationLimitUL = 15;

根据3GPP TS 38.104章节5.3.2的定义,将信道带宽设置为5 MHz,子载波间距(SCS)设置为15 kHz。假设将全部带宽分配给PUSCH。

simParameters。NumRBs = 25;simParameters。SCS = 15;%千赫simParameters。ULBandwidth = 5e6;%赫兹simParameters。ULCarrierFreq = 2.515e9;%赫兹设置RBG大小配置为1 (configuration-1 RBG表)或2% (configuration-2 RBG表),见3GPP TS 38.214章节% 5.1.2.2.1simParameters。RBGSizeConfig = 1;

通过配置参数,可更新终端的通道条件。通过CQIDelta每年定期改善或恶化通道质量ChannelUpdatePeriodicity秒为一个终端的所有RBs。特定UE的信道条件是改善还是恶化是随机决定的。

RBCQI = RBCQI +/- CQIDelta

simParameters。ChannelUpdatePeriodicity = 0.5;%秒simParameters。CQIDelta = 1;

配置到gNB的距离(第一列为米)与UL CQI最大可达值(第二列为米)的对应关系。例如,如果一个UE距离gNB 700米,根据映射,当距离在[501,800]米范围内时,它可以实现最大CQI值10。将距离按递增顺序设置,最大可达CQI值按递减顺序设置。此映射仅适用于使用直通PHY时。

simParameters。CQIvsDistance = [200 15;500 12;800年10;1000 8;1200 7];

日志记录和可视化配置

CQIVisualization而且RBVisualization参数分别控制CQI可视化和RB赋值可视化的显示。要启用RB可视化图,请设置RBVisualization字段真正的

simParameters。CQIVisualization = true;simParameters。RBVisualization = true;

设置enableTraces作为真正的记录跟踪。如果enableTraces设置为,然后CQIVisualization而且RBVisualization将自动禁用,并且不会在模拟中记录跟踪。要加速模拟,请设置enableTraces

enableTraces = true;

该示例定期更新度量图。设置模拟期间的更新次数。

simParameters。NumMetricsSteps = 20;

将日志写入MAT-files。该示例使用这些日志进行后期模拟分析和可视化。

parametersLogFile =“simParameters”用于记录模拟参数simulationLogFile =“simulationLogs”用于记录模拟跟踪simulationMetricsFile =“simulationMetrics”用于记录模拟指标

导出参数

根据主要配置参数,计算导出的参数。

simParameters。NCellID = 1;%物理单元IDsimParameters。DLCarrierFreq = 2.635e9;%赫兹simParameters。DLBandwidth = 10e6;%赫兹simParameters。GNBPosition = [0 0 0];gNB在(x,y,z)坐标中的位置在一个10ms的帧中,所选SCS的插槽持续时间和插槽数量的%(simParameters.SCS/15);%槽位持续时间(毫秒)numSlotsFrame = 10/slotDuration;% 10ms帧内插槽数numSlotsSim = simParameters。NumFramesSim * numSlotsFrame;%模拟插槽数指定范围[0,2]内的RLC实体类型。取值为0、1和2%表示RLC UM单向DL实体,RLC UM单向UL%实体,和RLC UM双向实体。simParameters. rlcconfig . entitytype = ones(simParameters. rlcconfig . entitytype =NumUEs simParameters.NumLogicalChannels);% LCID(数据无线电承载者的LCID由4开始)simParameters. lchconfig . lcid = onesNumUEs,simParameters。NumLogicalChannels) .* (4:4+simParameters.NumLogicalChannels-1);为RLC记录器和可视化器构造信息lchInfo = repmat(struct(“RNTI”[],“LCID”[],“EntityDir”, []), [simParameters。NumUEs 1]);idx = 1:simParameters。NumUEs lchInfo (idx)。RNTI = idx;lchInfo (idx)。LCID= simParameters.LCHConfig.LCID(idx, :); lchInfo(idx).EntityDir = simParameters.RLCConfig.EntityType(idx, :);结束根据ue的距离,找出可达到的最大CQI值gNB %maxecqis = 0 (simParameters. maxecqis = 0)NumUEs, 1);用于存储终端可达到的最大CQI值ueIdx = 1:simParameters。NumUEs根据UE到gNB的距离,找到匹配的行CQIvsDistance映射ueDistance = norm(simParameters。UEPosition(ueIdx, :) - simParameters.GNBPosition); matchingRowIdx = find(simParameters.CQIvsDistance(:, 1) > ueDistance);如果isempty(matchingRowIdx) maxecqis (ueIdx) = simParameters。CQIvsDistance (, 2);其他的maxUECQIs(ueIdx) = simParameters.CQIvsDistance(matchingRowIdx(1), 2);结束结束定义初始UL通道质量为n × p矩阵,其中“N”是ue的数量,“P”是运营商中RBs的数量%的带宽。对于每个RB,每个UE,给出了CQI的初始值%随机,并受到相应的最大可达CQI值的限制%为UE到gNB的距离simParameters。InitialChannelQualityUL = 0 (simParameters。NumUEs simParameters.NumRBs);%在不同终端的RBs上保存当前UL CQI值ueIdx = 1:simParameters。NumUEs为RBs分配随机的CQI值,以最大可达到的CQI值为限simParameters。InitialChannelQualityUL(ueIdx,:) = randi([1 maxUECQIs(ueIdx)], 1, simParameters.NumRBs);结束的数量来表示指标可视化更新的时间间隔%插槽。确保MetricsStepSize是一个整数simParameters。MetricsStepSize = ceil(numSlotsSim / simParameters.NumMetricsSteps);如果mod(numSlotsSim, simParameters.NumMetricsSteps) ~= 0如果numSlotsSim不为,则更新NumMetricsSteps参数%能被它整除simParameters。NumMetricsSteps = floor(numSlotsSim / simParameters.MetricsStepSize);结束如果~ isfield (simParameters“SchedulingType”|| simParameters。SchedulingType == 0%如果未指定调度类型或指定基于槽位的调度tickGranularity = 14;simParameters。PUSCHMappingType =“一个”;simParameters。PDSCHMappingType =“一个”其他的%基于符号的调度tickGranularity = 1;simParameters。PUSCHMappingType =“B”结束

gNB和ue安装

创建gNB和UE对象,初始化在gNB的UE的UL通道条件信息,并设置在gNB和UE的逻辑通道。辅助类hNRGNB.m而且hNRUE.m分别创建gNB和UE节点,包含RLC和MAC层。对于MAC层,hNRGNB.m使用助手类hNRGNBMAC.m实现gNB MAC功能和hNRUE.m使用hNRUEMAC.m实现UE MAC功能。调度器在hNRSchedulerRoundRobin.m(循环),hNRSchedulerProportionalFair.m(比例公平),hNRSchedulerBestCQI.m(最佳CQI)。所有调度器都继承自基类hNRScheduler.m其中包含核心调度功能。对于RLC层,两者都有hNRGNB.m而且hNRUE.m使用hNRUMEntity.m实现RLC发射机和接收机的功能。实现了终端与gNB之间的PHY层直通hNRUEPassThroughPhy.m而且hNRGNBPassThroughPhy.m,分别。

simParameters。Position = simParameters.GNBPosition; gNB = hNRGNB(simParameters);创建gNB节点创建并添加调度程序开关(simParameters.SchedulerStrategy)情况下“农达”轮询调度程序调度器= hNRSchedulerRoundRobin(simParameters);情况下“PF”比例公平调度程序调度器= hnrschedulerproporalfair (simParameters);情况下“BestCQI”%最佳CQI调度器调度器= hNRSchedulerBestCQI(simParameters);否则错误(“无效的调度策略“%s””, simParameters.SchedulerStrategy);结束addScheduler (gNB,调度器);将调度器添加到gNBgNB。PhyEntity = hNRGNBPassThroughPhy(simParameters);%创建直通PHYconfigurePhy (gNB simParameters);setPhyInterface (gNB);%设置接口为PHY层创建UE节点集UEs = cell(simParameters。NumUEs, 1);ueIdx = 1:simParameters。NumUEs simParameters。Position = simParameters.UEPosition(ueIdx, :);UE位置%ue {ueIdx} = hNRUE(simParameters, ueIdx);simParameters。InitialChannelQualityDL = simParameters.InitialChannelQualityUL;问题{ueIdx}。PhyEntity = hNRUEPassThroughPhy(simParameters, ueIdx);添加直通PHYconfigurePhy(问题{ueIdx}, simParameters);setPhyInterface(用正餐{ueIdx});%设置接口为PHY层在gNB初始化UL CQI值channelQualityInfo = struct(“RNTI”ueIdx,医院药学部的“, simParameters。InitialChannelQualityUL (ueIdx:));updateChannelQualityUL (gNB.MACEntity。调度器,channelQualityInfo);%设置逻辑通道lcIdx = 1:simParameters。NumLogicalChannels创建RLC通道配置结构rlcChannelConfigStruct。EntityType = simParameters.RLCConfig。EntityType (ueIdx lcIdx);rlcChannelConfigStruct。LogicalChannelID = simParameters.LCHConfig. LogicalChannelID = simParameters.LCHConfig。LCID (ueIdx lcIdx);rlcChannelConfigStruct。SeqNumFieldLength = simParameters.RLCConfig。SNFieldLength (ueIdx lcIdx);rlcChannelConfigStruct。MaxTxBufferSDUs = simParameters.RLCConfig。MaxTxBufferSDUs (ueIdx lcIdx);rlcChannelConfigStruct。ReassemblyTimer = simParameters.RLCConfig。ReassemblyTimer (ueIdx lcIdx); rlcChannelConfigStruct.LCGID = simParameters.LCHConfig.LCGID(ueIdx, lcIdx); rlcChannelConfigStruct.Priority = simParameters.LCHConfig.Priority(ueIdx, lcIdx); rlcChannelConfigStruct.PBR = simParameters.LCHConfig.PBR(ueIdx, lcIdx); rlcChannelConfigStruct.BSD = simParameters.LCHConfig.BSD(ueIdx, lcIdx);为终端在gNB上设置逻辑通道configureLogicalChannel(gNB, ueIdx, rlcChannelConfigStruct);在UE上设置逻辑通道configureLogicalChannel(ue {ueIdx}, ueIdx, rlcChannelConfigStruct);向UE节点添加数据流量模式生成器。应用程序数据%根据安装的流量模式泵送到RLC层%将生成的应用报文大小限制为最大RLC SDU大小。最大支持的RLC SDU万博1manbetx大小为9000字节packetSize = 9000;为开关网络流量模式创建一个对象,并将其添加到指定UE的%。该对象用于生成终端上行链路(UL)数据流量app = networkTrafficOnOff(“PacketSize”packetSize,“GeneratePacket”,真的,...“定时”, simParameters。NumFramesSim/100,“停止时间”0,“DataRate”, appDataRate(ueIdx, lcIdx));问题{ueIdx}。addApplication (ueIdx simParameters.LCHConfig。LCID(ueIdx, lcIdx), app);结束结束设置UL和DL包分发机制simParameters。MaxReceivers = simParameters。NumUEs + 1;%节点数量创建包分发对象packetDistributionObj = hNRPacketDistribution(simParameters);hNRSetUpPacketDistribution(simParameters, gNB, UEs, packetDistributionObj);

处理循环

模拟逐槽运行。在每个槽位执行以下操作:

  • 运行gNB的MAC层和PHY层

  • 运行终端的MAC层和PHY层

  • 特定于层的日志记录和可视化

  • 提前节点的定时器。每1毫秒它也发送触发到应用程序和RLC层。应用层和RLC层根据1毫秒定时器触发执行预定操作。

创建对象来记录和可视化RLC和MAC跟踪。

linkDir = 1;% UL方向表示为1如果enableTraces为RLC跟踪日志创建一个对象simlclogger = hNRRLCLogger(simParameters, lchInfo);为MAC跟踪日志创建一个对象simSchedulingLogger = hNRSchedulingLogger(simParameters, linkDir);为CQI和RB网格可视化创建一个对象如果simParameters。CQIVisualization || simParameters。RBVisualizationgridVisualizer = hNRGridVisualizer(simParameters,“MACLogger”simSchedulingLogger,“VisualizationFlag”, linkDir);结束结束

创建一个RLC和MAC指标可视化对象。

节点= struct(“问题”{问题},“GNB”, gNB);metricsVisualizer = hNRMetricsVisualizer“节点”、节点“EnableSchedulerMetricsPlots”,真的,“EnableRLCMetricsPlots”,真的,“LCHInfo”lchInfo,“VisualizationFlag”, linkDir);

运行处理循环。

slotNum = 0;numSymbolsSim = numSlotsSim * 14;%以符号持续时间为单位的模拟时间(假设正常循环前缀)%执行模拟中的所有符号symbolNum = 1: tickGranularity: numSymbolsSim如果mod(symbolNum - 1,14) == 0 slotNum = slotNum + 1;结束运行gNB的MAC和PHY运行(gNB);运行终端的MAC和PHY层ueIdx = 1:simParameters。NumUEs运行(用正餐{ueIdx});结束如果enableTraces% RLC测井(仅在槽边界)如果(simParameters。SchedulingType == 1 && mod(symbolNum, 14) == 0) || (simParameters. 14)SchedulingType == 0&& mod(symbolNum-1, 14) == 0) logCellRLCStats(simRLCLogger, gNB, UEs);更新RLC统计日志结束% MAC测井logCellSchedulingStats(simSchedulingLogger, symbolNum, gNB, UEs, linkDir);结束%的可视化检查槽边界如果symbolNum > 1 && (simParameters. simParameters. simParameters. simParameters. simParameters. simParameters. simParameters. simParameters. simParameters。SchedulingType == 1 && mod(symbolNum, 14) == 0) || (simParameters. 14)SchedulingType == 0 && mod(symbolNum-1, 14) == 0))如果mod(slotNum, simParameters.MetricsStepSize) == 0如果达到更新周期,在槽边界绘制RLC指标和调度器指标plotLiveMetrics (metricsVisualizer);结束结束%提前定时器为gNB和ue计时14个符号advanceTimer (gNB tickGranularity);ueIdx = 1:simParameters。NumUEsadvanceTimer(UEs{ueIdx}, tickGranularity);结束结束

图Channel Quality Visualization包含类型为heatmap、uigridlayout的对象。类型热图的图表标题为Cell ID - 1的通道质量可视化。

图资源网格分配包含一个axis对象和另一个类型为uigridlayout的对象。axis对象包含232个text、line类型的对象。

获取模拟指标并将其保存在mat文件中。模拟指标保存在一个mat文件中,文件名为simulationMetricsFile

metrics = getMetrics(metricsVisualizer);保存(simulationMetricsFile,“指标”);将模拟指标保存在mat文件中

仿真可视化

所示的四种运行时可视化类型是:

  • 在PUSCH带宽上显示终端的CQI值:有关详情,请参阅“渠道质量可视化”图。

  • 显示资源网格分配给终端:二维时频网格每10ms(帧长)更新一次,显示前一帧中各ue的RB分配情况。PUSCH任务的HARQ过程也与UEs的RNTI一起显示。使用每个UE的HARQ进程ID,新的传输显示为黑色,重传显示为蓝色,重传分配可以映射到其先前失败的传输。详情请参见“资源网格分配”图。

  • 显示UL调度指标图:“上行调度器性能指标”图包括以下图表:UL吞吐量(每个终端和小区)、UL goodput(每个终端和小区)、各终端之间的资源共享百分比(占总UL资源),以传达调度的公平性,以及各终端的待定UL缓冲区状态,以显示各终端是否获得足够的资源。UL吞吐量的最大可达到的数据速率值在吞吐量和货位图中用虚线表示。性能指标图更新为每metricsStepSize槽。

  • 显示RLC指标图:“RLC度量可视化”图形表示RLC层(每个逻辑通道)为每个终端传输的字节数。RLC指标图的每一个更新metricsStepSize槽。

模拟日志

用于仿真的参数和仿真日志保存在MAT文件中,以便后期仿真分析和可视化。模拟参数保存在一个MAT文件中,文件名作为配置参数的值parametersLogFile.每个时间步骤日志、调度分配日志和RLC日志保存在MAT文件中simulationLogFile.模拟完成后,打开文件进行加载ULTimeStepLogsSchedulingAssignmentLogs而且RLCLogs在工作空间中。

时间步长日志:该表显示了一个示例时间步骤条目。表的每一行表示一个槽。

表中的每一行代表一个槽位,包含以下信息:

  • 时间戳:模拟开始后的时间(毫秒)。

  • 框架:帧号。

  • :框中的槽位号。

  • RBG分配位图N-by-P位图矩阵,其中Nue和的数量是多少P为rbg的数量。如果将RBG分配给特定终端,则对应的位设置为1。例如,[0 0 1 1 0 1 0 1 0 1 0 1 0 0 0;1 1 0 0 0 0 0 0 0 0 0 1 0 0;0 0 0 0 1 1 0 0 0 1 1;0 0 0 0 0 0 0 0 0 0 0 0 0 0]表示UL带宽有13个RBG, UE-1分配RBG索引:2、3、5、7、9;UE-2被分配为RBG指数0、1和10;UE-3被分配了RBG指数4、6、8、11和12,UE-4没有分配任何RBG。

  • MCS:长度的行向量N,在哪里N为ue的数目。每个值对应于PUSCH传输的调制和编码方案(MCS)指标。例如,[10 12 8 -1]表示该槽位仅为UE-1、UE-2和UE-3分配UL资源,并分别使用MCS值10、12和8。

  • HARQ过程:长度的行向量N,在哪里N为ue的数目。UE发送PUSCH时使用的HARQ进程号。例如,[0 3 6 -1]表示只有UE-1、UE-2和UE-3为该槽位分配UL资源,并分别使用HARQ进程号0、3和6。

  • 抗利尿:长度的行向量N,在哪里N为ue的数目。该值为PUSCH传输的UL分配中的NDI标志值。例如,[0 0 1 -1]表示只有UE-1、UE-2和UE-3为该插槽分配UL资源,并分别使用NDI标志值0、0和1(该值决定是否使用新传输或重传)。

  • Tx型: Tx Type传输类型(新建或重传)。长度的行向量N,在哪里N为ue的数目。可能的值为'newTx”、“reTx'或'noTx“。”noTx’表示该终端没有分配PUSCH资源。例如,['newTx' 'newTx' 'reTx' 'noTx']表示该槽位只有UE-1、UE-2和UE-3被分配UL资源。UE-1和UE-2发送来自指定HARQ进程的新报文,UE-3重传指定HARQ进程缓冲区中的报文。

  • 终端CQIN-by-P矩阵,Nue和的数量是多少P为带宽中RBs的个数。位置上的矩阵元素(i, j)对应于具有RNTI的UE的UL CQI值在RBj

  • HARQ NDI状态N-by-P矩阵,Nue和的数量是多少P为终端HARQ进程数。位置上的矩阵元素(i, j)最后收到的NDI标志是在UE获取HARQ进程IDj.对于新的传输,这个值和PUSCH赋值中的NDI标志必须切换。例如调度日志中第5帧的1号槽位,UE-1的HARQ号为0,UE-1的HARQ号为0的最后一个NDI标志值为1。为了指示一个新的传输,在PUSCH分配中NDI标志值更改为0。

  • 吞吐量字节:长度的行向量N,在哪里N为ue的数目。该值表示该槽位终端传输的MAC字节数。

  • Goodput字节:长度的行向量N,在哪里N为ue的数目。该值表示该槽位UEs传输的新的传输MAC字节。

  • 终端缓冲状态:长度的行向量N,在哪里N为ue的数目。这些值表示ue上待处理缓冲区的数量。

调度分配日志:所有调度任务的信息和相关信息都记录在这个文件中。该表显示了示例日志条目。

RLC日志:RLC日志中的每一行都代表一个槽位,并包含以下信息:

  • 时间戳:时间戳(单位:毫秒)

  • 框架:帧号。

  • :框中的槽位号。

  • UE RLC统计N-by-P单元,其中N为终端数量与逻辑通道数量的乘积,和P是收集的统计数字。每行表示终端中一个逻辑通道的统计信息。最后一行包含整个模拟的累积RLC统计信息。

  • gNB RLC统计N-by-P单元,其中N为终端数量与逻辑通道数量的乘积,和P是收集的统计数字。每行表示gNB终端的一个逻辑通道的统计信息。最后一行包含整个模拟的累积RLC统计信息。

UE和gNB RLC统计表的每一行代表一个UE的逻辑通道,包含:

  • RNTI:终端的无线网络临时标识。

  • LCID:逻辑通道标识符。

  • TxDataPDU: RLC发送到MAC层的数据pdu数。

  • TxDataBytes: RLC发送到MAC层的数据字节数。

  • ReTxDataPDU: RLC重传到MAC层的数据pdu数。

  • ReTxDataBytes: RLC重传到MAC层的数据字节数。

  • TxControlPDU: RLC发送到MAC层的控制pdu数。

  • TxControlBytes: RLC发送给MAC层的控制字节数。

  • TxPacketsDropped: RLC由于Tx缓冲区溢出而丢弃的RLC sdu的数量。

  • TxBytesDropped:由于Tx缓冲区溢出导致RLC丢失的字节数。

  • TimerPollRetransmitTimedOut:轮询重传定时器超时次数。

  • RxDataPDU: RLC从MAC层接收到的数据pdu数。

  • RxDataBytes: RLC从MAC层接收到的数据字节数。

  • RxDataPDUDropped:从MAC接收到的被RLC层丢弃的数据pdu数。

  • RxDataBytesDropped:从MAC接收到被RLC层丢弃的数据字节数。

  • RxDataPDUDuplicate: RLC从MAC层接收到的重复pdu数。

  • RxDataBytesDuplicate: RLC从MAC层接收到的重复数据字节数。

  • RxControlPDU: RLC从MAC层接收到的控制pdu数。

  • RxControlBytes: RLC从MAC层接收到的控制字节数。

  • TimerReassemblyTimedOut:重组定时器过期的次数。

  • TimerStatusProhibitTimedOut:状态禁止定时器过期的次数。

您可以运行脚本NRPostSimVisualization以获得日志的后模拟可视化。在后期模拟脚本中,为您提供了一个变量isLogReplay,提供“资源网格分配”和“渠道质量可视化”图形的可视化选项。

  • isLogReplay真正的回放模拟日志。

  • isLogReplay分析仿真日志,输入帧号,可视化特定帧的调度信息

如果enableTraces%读取日志并保存在mat文件中simulationLogs = cell(1,1);simulationLogs{1} = struct(“ULTimeStepLogs”[],“SchedulingAssignmentLogs”[],“RLCLogs”[]);(~ simulationLogs{1}。ULTimeStepLogs] = getSchedulingLogs(simSchedulingLogger);% UL时间步骤调度日志simulationLogs{1}。SchedulingAssignmentLogs = getGrantLogs(simSchedulingLogger);%调度任务日志simulationLogs{1}。RLCLogs= getRLCLogs(simRLCLogger);% RLC统计日志保存(simulationLogFile,“simulationLogs”);将模拟日志保存在mat文件中保存(parametersLogFile,“simParameters”);将模拟参数保存在mat文件中结束

参考文献

[1]3gpp ts 38.214。“NR;数据的物理层程序。”第三代伙伴计划;技术规范集团无线接入网

[2]3gpp ts 38.321。“NR;介质访问控制(MAC)协议规范第三代伙伴计划;技术规范集团无线接入网

[3]3gpp ts 38.322。“NR;无线电链路控制协议规范。第三代伙伴计划;技术规范集团无线接入网

相关的话题