主要内容

NR TDD符号调度性能评估

本实例模拟了基于符号的时分双工(TDD)模式调度方案,并对网络性能进行了评估。基于符号的资源调度允许跨越槽中少数符号的更短的传输持续时间。在TDD模式下,物理上行共享信道(PUSCH)和物理下行共享信道(PDSCH)的传输调度在同一频带内,时域分离。用户可以自定义调度策略,评估网络性能。从实现的吞吐量和资源共享的公平性两个方面来评价调度策略的性能。

介绍

本示例考虑在gNB和UEs中便于UL和DL传输和接收的以下操作。

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

这个示例模型:

  • 可配置TDD DL-UL模式。

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

  • 基于资源块组(RBGs)的频域资源的不连续分配。

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

  • 可配置的解调参考信号(DM-RS)属性。

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

  • 定期DL和UL应用交通模式。

  • 在UM模式下运行的RLC。

  • 单带宽部分覆盖整个载波带宽。

假设以下控制包发送到带外,即不需要传输资源和保证无错误接收:UL分配、DL分配、缓冲区状态报告(BSR)、PDSCH反馈和CQI报告。这些控制包遵循TDD DL和UL时间。例如,BSR和PDSCH反馈以UL时间发送,而资源分配以DL时间发送。

TDD DL-UL模式配置

NR提供了一种灵活的DL和UL资源配置方式。用于定义自定义TDD配置的参数有:

  1. DL-UL传输周期以毫秒计。

  2. 参考子载波间距来计算DL-UL模式中的槽数。在本例中,假定它与用于传输的实际子载波间距相同。

  3. 每个DL- ul模式开始时连续的满DL槽数。

  4. 在最后一个满DL槽之后的槽开始的连续DL符号的数目。

  5. 每个DL-UL模式末尾的连续满UL槽数。

  6. 第一个UL满槽位前的槽位末端连续的UL符号数。

该示例没有建模灵活的符号,因此假定符号类型未指定的符号为保护周期。下面是基于这些参数生成的TDD DL-UL模式的示例。这个DL-UL模式在时间轴中重复。

  • reference_scs= 15khz(即1ms槽),DLULPeriodicity5女士numDLSlots3.numDLSyms7numULSlots1numULSyms= 5

DL-UL周期的槽数相对于15 kHz的参考SCS,NumSlotsDLULPeriodicity= 5

NumberOfGuardSymbols = TotalSymbolsInPattern - totalsymbolswithtypspecified

= (14 *NumSlotsDLULPeriodicity) - (numDLSlots* 14 +numDLSyms+numULSyms+numULSlots* 14)

= 2符号

调度器

UL和DL调度程序分别在终端中分配UL和DL资源。您可以选择任意一种已实现的调度策略:比例公平(PF)、最佳CQI或轮询(RR)。调度程序所支持的各种输入金宝app以及考虑它们的调度策略都显示了出来。

当第一个符号是DL符号时,UL和DL调度程序都在插槽的开始处运行。调度程序以DL时间运行,因此可以立即将分配(UL和DL)发送到DL方向的UEs。调度程序算法的运行时间以及传播延迟都假定为零。调度操作的输出是一个赋值数组。每个赋值包含信息字段,以完全定义一个PUSCH或PDSCH传输。

  • UL调度器

UL调度操作遵循以下两个步骤。

  1. 选择需要调度的时段:本例中使用的标准选择所有即将出现的插槽(包括当前插槽),这些插槽包含现在必须调度的未调度UL符号。这些插槽必须现在调度,因为它们不能被调度到下一个带DL符号的插槽中,这取决于终端的PUSCH准备时间能力的值。它确保UL资源的调度尽可能接近实际传输时间。

下面是两个例子,解释在这个例子中如何根据PUSCH准备时间选择UL插槽进行调度。

(i)假设终端需要相当于10个符号的PUSCH准备时间,当UL调度器运行在slot - a时,不选择任何slot进行调度。因为下一个插槽(即插槽b)的调度为插槽c的UL传输提供了足够的PUSCH准备时间(14个符号)。稍后,当UL调度器在Slot-B中运行时,它会同时选择Slot-C和Slot-D进行调度。slot - d在slot - b中被调度(而不是在slot - c中),因为slot - c是一个完整的UL插槽,因此没有任何DL符号用于在DL方向上发送分配。

(ii)假设ue需要相当于16个符号的PUSCH准备时间,则c槽排定在a槽本身。因为在Slot-B中调度只提供了14个PUSCH准备时间符号来启动Slot-C中的传输。Slot-D被调度到Slot-B。

2.资源调度:如果在第一步中选择了任何插槽,请将这些插槽的UL资源分配给终端。

  • DL调度器

DL调度器在以DL符号开始的每个插槽上运行,并为包含DL符号的第一个即将到来的插槽分配资源。因此,当DL调度器在Slot-A的开始运行时,它调度Slot-B的DL资源。

基于符号调度

NR允许TTI在插槽中的任何符号位置启动,符号具有TTI粒度。图中显示了UL调度器在本例中操作的方式,它调度一个插槽的UL符号,TTI粒度为两个符号。显示的插槽包含六个UL符号。调度器在三个迭代中完成UL符号的迭代,每个迭代分配两个符号的频率资源。DL调度程序也遵循DL调度的类似方法。

场景配置

设置模拟参数。

rng (“默认”);重置随机数生成器simParameters = [];%清除simParameters变量simParameters。NumFramesSim = 100;%以10毫秒帧数计算的模拟时间%模拟终端数。假设终端具有顺序无线电%网络临时标识符(RNTIs)从1到NumUEs。如果你改变%终端数量,请确保以下仿真参数是阵列的长度的%等于NumUEs: simParameters。UEDistance,% simParameters。ULPacketPeriodicityUEs, simParameters.ULPacketSizesUEs,% simParameters。戴斯。莱纳姆:PacketPeriodicityUEs, simParameters.DLPacketSizesUEssimParameters。NumUEs = 4;simParameters。UEDistance = [100;150;300;400);% ue到gNB的距离(单位米)%设置调度类型为0(基于槽位调度)或1%(之平衡调度)。如果未设置value,则默认值为0simParameters。SchedulingType=1;%根据符号持续时间设置时域分配。如果数量的%符号(DL或UL)对于这个粒度是不够的,然后一个更小的选择%有效粒度。仅适用于基于符号的调度。%对于基于槽位的调度,槽位中可能的最大粒度为%选择simParameters。TTIGranularity = 4;定义TDD DL-UL模式。用于的参考副载波间距计算槽位持续时间的模式假定与实际相同simParameters.SCS定义的用于传输的子载波间距。%在dlulperiodic期间只保留用于保护周期的符号%,类型(DL或UL)未指定simParameters。戴斯。莱纳姆:ULPeriodicity = 5;% ms中DL-UL模式持续时间simParameters。NumDLSlots = 2;%每个DL- ul模式开始时连续的满DL槽数simParameters。NumDLSyms = 8;%在最后一个满的DL插槽之后的插槽开始的连续DL符号数simParameters。NumULSyms = 4;%第一个UL满槽位之前的槽位末尾连续的UL符号数simParameters。NumULSlots = 2;%每个DL-UL模式结束时连续的满UL槽数%到gNB的距离(第一列为米)和最大值之间的映射%可达到的UL CQI值(第二列)。例如,终端为700当距gNB % m时,最大CQI值可达8%距离在[501,1000]米范围内,根据地图。%按递增顺序设置距离和可达到的最大CQI值%按顺序递减simParameters。CQIvsDistance = [200 15;300 12;500年10;1000 8;1200 7];%设置终端的定期UL / DL应用流量模式simParameters。ULPacketPeriodicityUEs = [20; 30; 20; 30];%终端生成UL包的周期,单位为mssimParameters。ULPacketSizesUEs = [4000; 6000; 5500; 4000];%终端生成的UL报文大小,单位为字节simParameters。戴斯。莱纳姆:PacketPeriodicityUEs = [20; 15; 15; 20];%在gNB上终端生成DL包的周期性(毫秒)simParameters。戴斯。莱纳姆:PacketSizesUEs = [6000; 5000; 10000; 8000];%在gNB终端生成的DL包大小,单位为字节%介质访问控制(MAC)配置simParameters。调度器Strategy =“PF”%支金宝app持调度策略:'PF', 'RR'和'BestCQI'% push准备时间。gNB确保PUSCH分配在% UEs PUSCHPrepTime提前传输时间simParameters。PUSCHPrepTime = 200;%在微秒%分配给UE的PUSCH和PDSCH传输的最大RBs(限制是%适用于新的传输分配,而不适用于重新传输)simParameters。RBAllocationLimitUL = 15;%为PUSCHsimParameters。RBAllocationLimitDL = 15;%为PDSCHsimParameters。BSRPeriodicity = 1;%缓冲区状态报告传输周期(单位毫秒)simParameters。DMRSTypeAPosition = 2;% push DM-RS配置simParameters。PUSCHDMRSAdditionalPosTypeB = 0; simParameters.PUSCHDMRSAdditionalPosTypeA = 0; simParameters.PUSCHDMRSConfigurationType = 1;% PDSCH DM-RS配置simParameters。PDSCHDMRSAdditionalPosTypeB = 0; simParameters.PDSCHDMRSAdditionalPosTypeA = 0; simParameters.PDSCHDMRSConfigurationType = 1;% PHY层和通道配置% RB计数5 MHz频带与15 kHz子载波间隔(SCS)。完整的%带宽被假定分配给PUSCH或PDSCHsimParameters。NumRBs = 25;simParameters。SCS = 15;%千赫simParameters。戴斯。莱纳姆:Bandwidth = 5e6;%赫兹simParameters。ULBandwidth = 5e6;%赫兹simParameters。戴斯。莱纳姆:CarrierFreq = 2.595e9;%赫兹simParameters。ULCarrierFreq = 2.595e9;%赫兹%配置参数,更新终端通道条件。通道CQIDelta每年都会定期改善或恶化质量% channelUpdatePeriodicity秒的所有RBs的一个UE。通道是否特定UE改善或恶化的条件是随机的%确定:RB_CQI = RB_CQI +/- CQIDeltasimParameters。通道UpdatePeriodicity = 0.2;%的交会simParameters。CQIDelta = 1;%日志和可视化配置%启用或禁用运行时CQI可视化的标志simParameters。CQIVisualization = true;%启用或禁用RB赋值的运行时可视化标志。如果启用,%然后对于基于槽的调度,它每帧(10毫秒)更新一次以显示RB最后一帧的不同槽位分配给ue的%。为基于符号的调度,它更新每个槽以显示RB分配给%在最后一个槽的不同符号上的uesimParameters。RBVisualization = false;控件中的NumMetricsSteps时间会定期更新输出指标图%的仿真时间simParameters。NumMetricsSteps = 20;要写入日志的% mat文件。它们用于后期仿真分析和可视化simParameters。ParametersLogFile =“simParameters”%用于记录模拟参数simParameters。SimulationLogFile =“simulationLogs”%用于记录仿真日志hNRSchedulingTDDValidateConfig (simParameters);验证模拟配置

导出参数

根据主要配置参数,计算导出参数。另外,设置一些特定于示例的常量。

simParameters。DuplexMode = 1;% TDD(示例特定常数)如果simParameters。SchedulingType%之平衡调度simParameters。PUSCHMappingType =“B”;simParameters。PDSCHMappingType =“B”其他的% Slot-based调度simParameters。PUSCHMappingType =“一个”;simParameters。PDSCHMappingType =“一个”结束simParameters。NCellID = 1;%物理单元IDsimParameters。GNBPosition = [0 0 0];% gNB在(x,y,z)坐标中的位置numLogicalChannels = 1;%每个UE中只假定有1个逻辑通道(示例中的特定常数)slotDuration = 1 / (simParameters.SCS / 15);%槽位持续时间,单位为msnumSlotsFrame = 10 / slotDuration;% 10ms帧内槽位数numSlotsSim = simParameters。NumFramesSim * numSlotsFrame;%模拟时间,以槽位持续时间为单位numSymbolsSim = numSlotsSim * 14;%以符号持续时间为单位的模拟时间指标可视化更新的时间间隔%插槽。确保MetricsStepSize是一个整数simParameters。= cell (numSlotsSim / simParameters.NumMetricsSteps);如果mod(numSlotsSim, simParameters.NumMetricsSteps) ~= 0%如果numSlotsSim不是,则更新NumMetricsSteps参数%完全被它整除simParameters。NumMetricsSteps = floor(numSlotsSim / simParameters.MetricsStepSize);结束%逻辑通道id(数据无线电承载的逻辑通道id从4开始)simParameters.LCHConfig.LCID = 4;RLC实体方向。值0只表示DL, 1%只代表UL, 2代表UL和DL%的方向。设置实体方向同时具有UL和DLsimParameters.RLCConfig.EntityDir = 2;为RLC记录器构造信息lchInfo = repmat(结构体(“RNTI”[],“LCID”[],“EntityDir”[]), [simParameters。NumUEs 1]);idx = 1: simParameters。NumUEs lchInfo (idx)。RNTI = idx;lchInfo (idx)。LCID = simParameters.LCHConfig.LCID;lchInfo (idx)。EntityDir = simParameters.RLCConfig.EntityDir;结束创建RLC通道配置结构rlcChannelConfigStruct。LCGID = 1;%逻辑通道与逻辑通道组ID的映射关系rlcChannelConfigStruct。优先级= 1;%每个逻辑通道的优先级rlcChannelConfigStruct。PBR = 8;%每个逻辑通道的优先比特率(PBR),单位为千字节/秒rlcChannelConfigStruct。BSD = 10;%每个逻辑通道的桶大小持续时间(BSD),单位为msrlcChannelConfigStruct。EntityType=simParameters。RLCConfig.EntityDir; rlcChannelConfigStruct.LogicalChannelID = simParameters.LCHConfig.LCID;%最大RLC SDU长度(字节)根据3GPP TS 38.323simParameters。maxRLCSDULength = 9000;%根据终端距离计算可达到的最大CQI值%来自国家银行(simParameters maxUECQIs = 0。NumUEs, 1);%存储ue可实现的最大CQI值ueIdx = 1: simParameters。NumUEs%根据UE到gNB的距离,在CQIvsDistance映射中找到匹配行matchingRowIdx =找到(simParameters。CQIvsDistance(:, 1) > simParameters.UEDistance(ueIdx));如果isempty(matchingRowIdx) maxecqis (ueIdx) = simParameters. isempty(matchingRowIdx)CQIvsDistance (, 2);其他的maxecqis (ueIdx) = simParameters.CQIvsDistance(matchingRowIdx(1), 2);结束结束定义初始UL和DL通道质量为n × p矩阵,%,其中“N”为UEs的数量,“P”为carrier中的RBs的数量%的带宽。给出了每个RB、每个UE的CQI的初始值%,并受相应可达到的最大CQI值的限制%到UE到gNB的距离simParameters。(simParameters InitialChannelQualityUL = 0。NumUEs simParameters.NumRBs);%在不同终端的RBs上存储当前的UL CQI值simParameters。(simParameters InitialChannelQualityDL = 0。NumUEs simParameters.NumRBs);%在不同的终端上存储当前的DL CQI值ueIdx = 1: simParameters。NumUEs%为RBs分配随机CQI值,受最大可达到的CQI值限制simParameters。InitialChannelQualityUL(ueIdx,:) = randi([1 maxecqis (ueIdx)], 1, simParameters.NumRBs);%最初假设DL和UL CQI值相等simParameters。InitialChannelQualityDL(ueIdx,:) = simParameters。InitialChannelQualityUL (ueIdx:);结束%根据槽数更新RB赋值可视化的周期性如果~ isfield (simParameters“SchedulingType”) | | simParameters。SchedulingType = = 0%不指定调度类型或指定基于槽位的调度rbAssignmentPlotPeriodicity = numSlotsFrame;%每帧更新(10毫秒)其他的%之平衡调度rbAssignmentPlotPeriodicity = 1;更新每个插槽结束

gNB和UEs设置

创建gNB和UE对象,初始化终端的通道质量信息,并在gNB和UE上建立逻辑通道。辅助类hNRGNB.mhNRUE.m分别创建gNB和UE节点,包含RLC层和MAC层。对MAC层,hNRGNB.m使用helper类hNRGNBMAC.m实现gNB MAC功能hNRUE.m使用hNRUEMAC.m实现终端MAC功能。调度程序在hNRSchedulerRoundRobin.m(RR),hNRSchedulerProportionalFair.m(PF),hNRSchedulerBestCQI.m医院药学部(最佳)。所有的调度器都继承自基类hNRScheduler.m其中包含核心调度功能。对于RLC层,两者都有hNRGNB.mhNRUE.m使用hNRUMEntity.m实现RLC发射机和接收机的功能。实现了UE和gNB的直通PHY层hNRUEPassThroughPhy.mhNRGNBPassThroughPhy.m,分别。

simParameters。Position = simParameters.GNBPosition; gNB = hNRGNB(simParameters);%创建gNB节点%创建并添加调度程序开关(simParameters.SchedulerStrategy)情况下“农达”轮询调度程序调度器= hNRSchedulerRoundRobin (simParameters);情况下“PF”%比例公平调度调度器= hNRSchedulerProportionalFair (simParameters);情况下“BestCQI”最好的CQI调度程序调度器= hNRSchedulerBestCQI (simParameters);结束addScheduler (gNB,调度器);添加调度程序到gNBgNB。PhyEntity = hNRGNBPassThroughPhy(simParameters);%添加直通PHYconfigurePhy (gNB simParameters);setPhyInterface (gNB);%设置接口为PHY层%创建UE节点集问题=细胞(simParameters。NumUEs, 1);ueIdx = 1: simParameters。NumUEs simParameters。Position = [simParameters.UEDistance(ueIdx) 0 0];UE位置ue {ueIdx} = hNRUE(simParameters, ueIdx);问题{ueIdx}。PhyEntity = hNRUEPassThroughPhy(simParameters, ueIdx);%添加直通PHYconfigurePhy(问题{ueIdx}, simParameters);setPhyInterface(用正餐{ueIdx});%设置接口为PHY层%在gNB上初始化UL CQI值updateChannelQuality (gNB simParameters。InitialChannelQualityUL(ueIdx,:), 1, ueIdx);% 1用于UL%初始化gNB和UE的DL CQI值。DL CQI值%帮助gNB进行调度,UE用于包错误概率估计updateChannelQuality (gNB simParameters。InitialChannelQualityDL(ueIdx,:), 0, ueIdx);% 0表示DLsimParameters updateChannelQuality(问题{ueIdx}。InitialChannelQualityDL (ueIdx:));%为终端在gNB设置逻辑通道configureLogicalChannel (gNB ueIdx rlcChannelConfigStruct);在终端上设置逻辑通道configureLogicalChannel(问题{ueIdx}, ueIdx rlcChannelConfigStruct);%在gNB和UE节点中添加数据流量模式生成器ulPacketSize = simParameters.ULPacketSizesUEs (ueIdx);%使用命令计算开-关流量模式的数据速率(kbps)%包大小(字节)和包间隔(毫秒)ulDataRate = cell (1000/simParameters.ULPacketPeriodicityUEs(ueIdx)) * ulPacketSize * 8e-3;%限制生成的应用报文大小为最大RLC%信号分配装置的尺寸。RLC SDU最大支持9金宝app000字节如果ulPacketSize > simParameters。maxRLCSDULength ulPacketSize = simParameters.maxRLCSDULength;结束%创建开关网络流量模式的对象,并将其添加到%指定的问题。用于在终端上生成UL(上行链路)数据流量ulApp = networkTrafficOnOff (“PacketSize”ulPacketSize,“GeneratePacket”,真的,...“定时”, simParameters。NumFramesSim/100,“停止时间”0,“DataRate”, ulDataRate);问题{ueIdx}。addApplication (ueIdx simParameters.LCHConfig。LCID ulApp);dlPacketSize = simParameters.DLPacketSizesUEs (ueIdx);dlDataRate = cell (1000/simParameters.DLPacketPeriodicityUEs(ueIdx)) * dlPacketSize * 8e-3;如果dlPacketSize > simParameters。maxRLCSDULength dlPacketSize = simParameters.maxRLCSDULength;结束%为指定的开关网络流量模式创建一个对象% UE,并将其加入gNB。该节点生成下行链路(DL)数据%用于终端的gNB流量dlApp = networkTrafficOnOff (“PacketSize”dlPacketSize,“GeneratePacket”,真的,...“定时”, simParameters。NumFramesSim/100,“停止时间”0,“DataRate”, dlDataRate);gNB。addApplication (ueIdx simParameters.LCHConfig。LCID dlApp);结束%设置UL和DL分组分发机制simParameters。MaxReceivers = simParameters.NumUEs;%创建DL包分发对象dlPacketDistributionObj = hNRPacketDistribution(simParameters, 0);% 0表示DL%创建UL包分发对象ulPacketDistributionObj = hNRPacketDistribution(simParameters, 1);% 1用于ULhNRSetUpPacketDistribution(simParameters, gNB, UEs, dlPacketDistributionObj, ulPacketDistributionObj);

处理循环

模拟是一个符号一个符号地运行,以执行相应的操作。如果选择基于槽位调度,则执行从当前槽位边界跳转到下一个槽位边界。执行的操作包括:

  • 运行gNB的MAC层和PHY层

  • 运行终端的MAC层和PHY层

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

  • 提前节点的计时器。每1毫秒它还向应用程序和RLC层发送触发器。应用层和RLC层基于1ms定时器触发器执行预定的操作。

为MAC (UL & DL)调度信息可视化和日志记录创建一个对象simSchedulingLogger = hNRSchedulingLogger (simParameters);%为RLC层度量日志创建一个对象simRLCLogger = hNRRLCLogger(simParameters, lchInfo);%为RLC和MAC指标创建可视化对象视觉型的人= hNRMetricsVisualizer (simParameters,“RLCLogger”simRLCLogger,“LCHInfo”lchInfo,“MACLogger”, simSchedulingLogger);slotNum = 0;tickGranularity = 1;%执行模拟中的所有符号symbolNum = 1: tickGranularity: numSymbolsSim symbolType = currentSymbolType(gNB);%获取当前符号类型:DL/UL/Guard如果mod(symbolNum - 1,14) == 0 slotNum = slotNum + 1;结束%运行gNB的MAC和PHY层运行(gNB);%运行ue的MAC层和PHY层ueIdx = 1: simParameters。NumUEs运行(用正餐{ueIdx});结束% RLC日志记录(仅在插槽边界)如果mod(symbolNum - 1,14) == 0logCellRLCStats (gNB simRLCLogger,用正餐);结束% MAC日志logCellSchedulingStats(simSchedulingLogger, symbolNum, gNB, UEs);%的可视化检查槽边界如果symbolNum > 1 && ((simParameters. simparameter))SchedulingType==1&& mod(symbolNum, 14) == 0) || (simParameters.SchedulingType == 0 && mod(symbolNum-1, 14) == 0))% RB赋值可视化(如果启用)如果simParameters。RBVisualization如果mod(slotNum, rbAssignmentPlotPeriodicity) == 0%如果达到更新周期,在插槽边界绘制plotRBGrids (simSchedulingLogger);结束结束% CQI网格可视化(如果启用)如果simParameters。CQIVisualization如果mod(slotNum, numSlotsFrame) == 0%绘制框架边界plotCQIRBGrids (simSchedulingLogger);结束结束%在槽处绘制调度指标和RLC指标可视化%边界,如果达到更新周期如果mod(slotNum, simParameters.MetricsStepSize) == 0结束结束%通过“tick粒度”符号为gNB和ue提前计时器滴答声advanceTimer (gNB tickGranularity);ueIdx = 1: simParameters。NumUEs%用于所有ueadvanceTimer(问题{ueIdx}, tickGranularity);结束结束

图通道质量可视化包含一个轴和其他类型的uicontrol对象。标题为“单元格ID - 1的通道质量可视化”的轴包含80个矩形类型的对象。

仿真可视化

运行时可视化显示的五种类型是:

  • 在PUSCH或PDSCH带宽上显示ue的CQI值:详情请参见“通道质量可视化”图。

  • 终端资源网格分配显示:二维时频网格显示了终端的资源分配。对于基于槽位的调度,它每10毫秒(帧长度)更新一次,并在前一帧中显示给终端的RB分配。对于基于符号的调度,它更新每个插槽,并显示前一个插槽的符号的RB分配。详情请参见“资源网格分配”图。

  • UL调度指标图显示:上行调度性能指标的图块包括:UL吞吐量(每个问题和细胞),UL goodput(每个问题和细胞),资源之间共享比例问题(总UL的资源)来传达调度的公平性,并等待UL缓冲区的状态问题显示问题是否能够得到足够的资源。UL吞吐量可实现的最大数据速率值为metricsStepSize槽。在吞吐量和货物投放图中以虚线显示。性能指标图每一个都在更新metricsStepSize槽。

  • DL调度指标图的显示:像上行度量图,“下行调度器性能指标”显示DL方向对应的子图。性能指标图为每个metricsStepSize

  • RLC指标图显示:“RLC度量可视化”图显示了每个UE通过RLC层(每个逻辑通道)传输的字节数。RLC度量图为每metricsStepSize槽。

模拟日志

仿真使用的参数和仿真日志保存在mat -文件中,用于仿真后的分析和可视化。仿真参数保存在MAT-file中,配置参数的值为filenamesimParameters。ParametersLogFile.时间步长日志、调度分配日志、RLC日志保存在mat -文件中simParameters。SimulationLogFile.模拟完成后,打开它进行加载TimeStepLogsSchedulingAssignmentLogs,RLCLogs在工作区中。

时间步日志:该表显示了一个示例时间步骤条目。表中的每一行代表一个符号或一个槽,基于所选的调度类型(基于符号或基于槽)。如果符号(或槽)的类型为,则一行中的信息为DL戴斯。莱纳姆:.同样的,对UL符号(或位置)。

每行包含以下信息:

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

  • 框架:帧数。

  • :框中的槽位号。

  • 象征:槽位中的符号号(仅用于基于符号的调度)。

  • 类型:符号(或槽)类型为'DL', 'UL'或'Guard'。基于槽位调度时,type只能为DL/UL。因为包含保护符号的槽被假定为DL槽,在槽的末端有保护符号。

  • 篮板分配图N-by-P位图矩阵,N和的号码是多少P为带宽中rbg的个数。如果一个RBG被分配给一个特定的UE,对应的位被设置为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 1 0 0 0 1 0 0 1 0 00 0 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1;0 0 0 0 0 0 0 0 0 0 0 0,表示带宽有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为终端号码。每个值对应于PUSCH或PDSCH传输的调制和编码方案(MCS)索引。例如,[10 12 8 -1]意味着只有UE-1、UE-2和UE-3为该符号分配了UL资源(符号类型为'UL'),并分别使用MCS值10、12和8。

  • HARQ过程:长度的行向量N,在哪里N为终端号码。UE发送push时使用的HARQ进程号,gNB发送PDSCH时使用的HARQ进程号。例如,[0 3 6 -1]表示只有UE-1、UE-2和UE-3为该符号分配了UL资源(符号类型为'UL'),并分别使用HARQ进程id 0、3和6。

  • 抗利尿:长度的行向量N,在哪里N为终端号码。该值是分配给PUSCH或PDSCH传输的NDI标志值。例如,[0 0 1 -1]意味着只有UE-1、UE-2和UE-3为该符号分配UL资源,并分别使用NDI标志值(决定是否完成了新的传输或重传)为0、0和1。

  • Tx型: Tx Type传输类型(新传输或重传输)。行长度向量N,在哪里N为终端号码。取值为“newTx”、“reTx”或“noTx”。'noTx'表示UE没有分配PUSCH或PDSCH资源。例如:['newTx' 'newTx' 'reTx' 'noTx']意味着只有UE-1、UE-2和UE-3为这个符号分配UL资源。UE-1和UE-2从指定的HARQ进程发送新的报文,UE-3从指定的HARQ进程的缓冲区重传。

  • CQI的问题N-by-P矩阵,N和的号码是多少P为带宽中RBs的个数。位置上的一个矩阵元素(i, j)对应于带有RNTI的UE的CQI值在RBj

  • HARQ NDI状态N-by-P矩阵,N和的号码是多少P是HARQ进程的个数。位置上的一个矩阵元素(i, j)最后一次接收NDI标志是在UE吗用于DL或UL HARQ过程IDj.对于新的传输,这个值和PUSCH或PDSCH分配中的NDI标志必须在分配中的HARQ进程中切换。

  • 吞吐量字节:长度的行向量N,在哪里N为终端号码。该符号表示终端发送的或终端发送的UL或DL MAC字节。注意,完整的PUSCH或PDSCH传输的总吞吐量字节显示在与传输的第一个符号相对应的行中。

  • Goodput字节:长度的行向量N,在哪里N为终端号码。表示该符号中终端或终端发送的新的UL或DL传输MAC字节数。与吞吐量类似,完整的PUSCH或PDSCH的所有good - put字节都显示在与传输的第一个符号对应的行中。

  • 终端缓冲区状态:长度的行向量N,在哪里N为终端号码。这些值表示终端上UL方向挂起缓冲区的数量(或gNB上终端的DL方向挂起缓冲区)。

调度任务日志:该表记录了所有调度任务的信息和相关信息。每一行都是一个UL或DL分配。有关日志格式的详细信息,请参见“模拟日志”一节NR FDD调度性能评估的例子。

RLC日志:有关RLC日志格式的更多信息,请参见NR PUSCH FDD调度

您可以运行该脚本NRPostSimVisualization获取日志的后仿真可视化。在后模拟脚本中,您可以使用variableisLogReplay,提供这些选项来可视化“资源网格分配”和“通道质量可视化”图形。

  • isLogReplay真正的以重放模拟日志。

  • isLogReplay分析某一帧或帧的某一槽的细节。在“资源网格分配”窗口中,如果调度类型是基于符号的,输入帧号和槽号,可视化特定槽的资源分配。对于基于槽位的调度,输入帧号以可视化整个帧的资源分配。这里输入的帧号也控制“通道质量可视化”图的帧号。

%读取日志并写入MAT-files%获取日志simulationLogs =细胞(1,1);logInfo =结构(“TimeStepLogs”[],“SchedulingAssignmentLogs”[],“RLCLogs”[]);[logInfo。TimeStepLogs] = getSchedulingLogs (simSchedulingLogger);logInfo。SchedulingAssignmentLogs = getGrantLogs (simSchedulingLogger);计划分配日志logInfo。RLCLogs=getRLCLogs(simRLCLogger);% RLC统计日志simulationLogs {1} = logInfo;保存(simParameters。SimulationLogFile,“simulationLogs”);%将模拟日志保存到mat -文件中保存(simParameters。ParametersLogFile,“simParameters”);%将模拟参数保存到mat文件中

进一步的探索

您可以使用这个示例进一步研究这些选项。

自定义调度

您可以修改已有的调度策略,以实现自定义的调度策略。请参阅“进一步探索”章节NR FDD调度性能评估示例以查看所涉及的步骤。

使用5G Toolbox™物理层

您还可以通过使用创建PHY对象来从直通PHY层切换到5G Toolbox™物理层处理hNRGNBPhy.mhNRUEPhy.m.有关更多详情,请参阅“gNB和UEs安装”一节基于物理层集成的NR电池性能评估

使用RLC我

您还可以通过修改输入结构字段,将RLC实体的操作模式从UM切换到确认模式(AM)EntityTypeSeqNumFieldLengthconfigureLogicalChannel的函数hNRNode.m.有关更多细节,请参阅NR FDD调度性能评估

根据所选择的调度策略,本示例演示了gNB将UL和DL资源分配给多个终端。根据终端的吞吐量、货物吞吐量、资源共享公平性和暂挂缓冲区状态等运行时图,分析了终端的UL和DL调度性能。通过使用保存的日志进行更彻底的后模拟分析,可以详细描述在每个符号或每个槽的基础上发生的操作。

附录

这个例子使用了这些辅助函数和类:

参考文献

[1]3 gpp TS 38.214。“NR;数据的物理层程序。”第三代合作伙伴项目;技术规范无线电接入网

[2]3 gpp TS 38.321。“NR;介质访问控制(MAC)协议规范。第三代合作伙伴项目;技术规范无线电接入网

[3]3 gpp TS 38.322。“NR;无线链路控制(RLC)协议规范。第三代合作伙伴项目;技术规范无线电接入网

[4]3 gpp TS 38.331。“NR;无线电资源控制(RRC)协议规范。第三代合作伙伴项目;技术规范无线电接入网

相关的话题