主要内容

基于NR TDD符号的调度性能评估

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

简介

本例考虑了gNB和ue中促进UL和DL传输和接收的以下操作。

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

这个例子建模:

  • 可配置TDD DL-UL模式。

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

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

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

  • 可配置解调参考信号(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= 15千赫(即1毫秒插槽),DLULPeriodicity5女士numDLSlots3.numDLSyms7numULSlots1numULSyms= 5

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

NumberOfGuardSymbols = TotalSymbolsInPattern - TotalSymbolsWithTypeSpecified

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

= 2个符号

调度器

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

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

  • UL调度器

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

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

下面是两个示例,说明如何根据PUSCH准备时间在本例中选择UL插槽进行调度。

(i)假设ue需要的PUSCH准备时间相当于10个符号,当UL调度程序运行在slot - a时,它不选择任何插槽进行调度。因为在下一个槽位(即slot - b)调度为slot - 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准备时间,则Slot-C被安排在Slot-A本身。因为在Slot-B中调度只能提供14个符号的PUSCH准备时间来开始在Slot-C中传输。d槽位调度在b槽位。

2.资源调度:如果第一步选择了槽位,则需要将这些槽位的UL资源分配给终端。

  • DL调度器

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

基于符号的调度

NR允许TTI从插槽中的任何符号位置开始,并允许TTI粒度以符号为单位。图中显示了UL调度器在本例中的操作方式,以两个符号的TTI粒度调度插槽的UL符号。槽位包含6个UL符号。调度器在三次迭代中完成UL符号的迭代,每次迭代分配两个符号的频率资源。DL调度程序也遵循DL调度的类似方法。

场景配置

中配置仿真参数simParameters结构。

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

指定计算单元中的ue数量,假设ue具有顺序无线网络临时标识符(rnti)1simParameters。NumUEs.如果您更改了ue的数量,请确保这些模拟参数的长度等于的值simParameters。NumUEs:dlAppDataRateulAppDataRate

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

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

simParameters。NumRBs = 25;simParameters。SCS = 15;%千赫simParameters。戴斯。莱纳姆:Bandwidth = 5e6;%赫兹simParameters。ULBandwidth = 5e6;%赫兹simParameters。戴斯。莱纳姆:CarrierFreq = 2.595e9;%赫兹simParameters。ULCarrierFreq = 2.595e9;%赫兹

指定TDD DL-UL模式。用于计算模式的槽持续时间的参考子载波间距假定与定义的用于传输的实际子载波间距相同simParameters。SCS.仅保留DLULPeriodicity期间用于保护周期的符号,类型(DL或UL)未指定。

simParameters。戴斯。莱纳姆:ULPeriodicity = 5;DL-UL模式持续时间的%(毫秒)simParameters。NumDLSlots = 2;每个DL- ul模式开始处连续完整DL插槽的数目simParameters。NumDLSyms = 8;从最后一个完整DL槽开始的槽中连续DL符号的百分比simParameters。NumULSyms = 4;第一个满UL槽位之前的槽位末端连续UL符号的百分比simParameters。NumULSlots = 2;每个DL-UL模式末尾连续完整UL槽位的百分比

指定调度策略、时间域资源分配粒度以及为PDSCH和PUSCH分配的RBs的最大限制。时域资源分配粒度仅适用于基于符号的调度。如果符号的数量(DL或UL)小于配置的时域资源分配粒度,则选择较小的有效粒度。对于基于插槽的调度,将选择插槽中的最大粒度。RB传输限制仅适用于新的传输,而不适用于重新传输。

simParameters。调度器Strategy =“PF”%支金宝app持的调度策略:'PF', 'RR'和'BestCQI'simParameters。TTIGranularity = 4;simParameters。RBAllocationLimitUL = 15;% For PUSCHsimParameters。RBAllocationLimitDL = 15;%用于PDSCH

设置UL调度相关配置- BSR周期和PUSCH准备时间。gNB确保PUSCH任务至少在终端收到PUSCHPrepTime在传输时间之前。

simParameters。BSRPeriodicity = 1;缓冲区状态报告传输周期(毫秒)simParameters。PUSCHPrepTime=200;%(微秒)

设置终端通道质量相关配置。对于终端的所有RBs, CQI增量会周期性地改善或恶化信道质量。特定UE的信道条件是改善还是恶化由RB_CQI = RB_CQI +/- CQIDelta随机决定。但是,允许的最大CQI值取决于UE位置,由CQIvsDistance映射表确定。此映射仅适用于使用直通PHY时。

simParameters。ChannelUpdatePeriodicity = 0.2;%秒simParameters。CQIDelta = 1;到gNB的距离(第一列米)与UL CQI最大可达值(第二列)的映射关系simParameters。CQIvsDistance = [200 15;300 12;500年10;1000 8;1200 7];

指定PUSCH和PDSCH相关的DMRS配置。

simParameters。dmrstypeposition = 2;% Type-A型DM-RS位置为2或3PUSCH DM-RS配置simParameters。PUSCHDMRSAdditionalPosTypeB = 0; simParameters.PUSCHDMRSAdditionalPosTypeA = 0; simParameters.PUSCHDMRSConfigurationType = 1;% PDSCH DM-RS配置simParameters。PDSCHDMRSAdditionalPosTypeB = 0; simParameters.PDSCHDMRSAdditionalPosTypeA = 0; simParameters.PDSCHDMRSConfigurationType = 1;

应用流量配置

设置终端的周期DL和UL应用流量模式。

%设置终端的周期DL和UL应用流量模式dlAppDataRate = [8e4;12 e4;12 e4;16 e4];% DL应用程序数据速率,单位为每秒千比特(kbps)ulAppDataRate = [8e4;12 e4;12 e4;16 e4];% UL应用程序数据速率,单位为kbps验证DL应用程序数据速率validateattributes (dlAppDataRate, {“数字”},{“非空的”“向量”“元素个数”, simParameters。NumUEs,“有限”“>”, 0},“dlAppDataRate”“dlAppDataRate”);验证UL应用程序数据速率validateattributes (ulAppDataRate, {“数字”},{“非空的”“向量”“元素个数”, simParameters。NumUEs,“有限”“>”, 0},“ulAppDataRate”“ulAppDataRate”);

日志记录和可视化配置

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

simParameters。CQIVisualization = false;simParameters。RBVisualization = false;

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

enableTraces = true;

该示例定期更新度量图。设置模拟期间的更新次数。步骤数必须小于或等于模拟插槽数

simParameters。NumMetricsSteps = 20;

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

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

导出参数

根据上一节中指定的主要配置参数计算派生的参数,并另外设置一些特定于示例的常量。

simParameters。DuplexMode = 1;% FDD(值为0)或TDD(值为1)simParameters。NCellID = 1;%物理单元IDsimParameters。Position = [0 0 0];gNB在(x,y,z)坐标中的位置

计算所选sc的槽位持续时间和10ms帧内的槽位数量。

(simParameters.SCS/15);%槽位持续时间(毫秒)numSlotsFrame = 10/slotDuration;% 10ms帧内插槽数numSlotsSim = simParameters。NumFramesSim * numSlotsFrame;%以槽位持续时间为单位的模拟时间numSymbolsSim = numSlotsSim * 14;%以符号持续时间为单位的模拟时间(假设正常循环前缀)

确定PDSCH/PUSCH映射类型。

如果simParameters。SchedulingType%基于符号的调度simParameters。PUSCHMappingType =“B”;simParameters。PDSCHMappingType =“B”其他的%基于槽的调度simParameters。PUSCHMappingType =“一个”;simParameters。PDSCHMappingType =“一个”结束

设置示例根据插槽数量更新度量可视化的间隔。

simParameters。MetricsStepSize = ceil(numSlotsSim / simParameters.NumMetricsSteps);如果mod(numSlotsSim, simParameters.NumMetricsSteps) ~= 0如果numSlotsSim不为,则更新NumMetricsSteps参数%能被它整除simParameters。NumMetricsSteps = floor(numSlotsSim / simParameters.MetricsStepSize);结束

为每个终端指定一个逻辑通道,本例中为所有节点(UE和gnb)设置逻辑通道配置。

numLogicalChannels = 1;simParameters.LCHConfig.LCID = 4;

在范围[0,3]中指定RLC实体类型。0、1、2、3分别表示RLC UM单向DL实体、RLC UM单向UL实体、RLC UM双向实体和RLC AM实体。

simParameters.RLCConfig.EntityType = 2;

构造RLC记录器的信息。

lchInfo = repmat(struct(“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.EntityType;结束

创建RLC通道配置结构。

rlcChannelConfigStruct。Lcgid = 1;%逻辑通道与逻辑通道组ID的对应关系rlcChannelConfigStruct。优先级= 1;每个逻辑通道的优先级rlcChannelConfigStruct。PBR = 8;每个逻辑通道的优先比特率(PBR),单位为千字节/秒rlcChannelConfigStruct。BSD = 10;每个逻辑通道的BSD (Bucket size duration) %,单位为毫秒rlcChannelConfigStruct。EntityType=simParameters。RLCConfig.EntityType; rlcChannelConfigStruct.LogicalChannelID = simParameters.LCHConfig.LCID;

根据3GPP TS 38.323设置最大RLC SDU长度(字节)

simParameters。maxRLCSDULength = 9000;

根据ue与gNB的距离计算ue可达到的最大CQI值

maxecqis = 0 (simParameters. maxecqis = 0)NumUEs, 1);用于存储终端可达到的最大CQI值ueIdx = 1:simParameters。NumUEs%根据UE到gNB的距离,在CQIvsDistance映射中找到匹配行matchingRowIdx = find(simParameters. find)CQIvsDistance(:, 1) > simParameters.UEPosition(ueIdx,1));如果isempty(matchingRowIdx) maxecqis (ueIdx) = simParameters。CQIvsDistance (, 2);其他的maxUECQIs(ueIdx) = simParameters.CQIvsDistance(matchingRowIdx(1), 2);结束结束

将初始UL和DL信道质量定义为N × P矩阵,其中“N”是ue的数量,“P”是运营商带宽中RBs的数量。对于每个UE,每个RB的CQI初始值是随机给定的,并受UE到gNB的距离所对应的最大可达CQI值的限制。

simParameters。InitialChannelQualityUL = 0 (simParameters。NumUEs simParameters.NumRBs);%在不同终端的RBs上保存当前UL CQI值simParameters。InitialChannelQualityDL = 0 (simParameters。NumUEs simParameters.NumRBs);在不同终端的RBs上存储当前DL CQI值ueIdx = 1:simParameters。NumUEs为RBs分配随机的CQI值,以最大可达到的CQI值为限simParameters。InitialChannelQualityUL(ueIdx,:) = randi([1 maxUECQIs(ueIdx)], 1, simParameters.NumRBs);最初,DL和UL CQI值被假定为相等simParameters。InitialChannelQualityDL(ueIdx,:) = simParameters。InitialChannelQualityUL (ueIdx:);结束

gNB和ue安装

创建gNB和UE对象,初始化UE的通道质量信息,并在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(RR),hNRSchedulerProportionalFair.m(PF),hNRSchedulerBestCQI.m(最佳CQI)。所有调度器都继承自基类hNRScheduler.m其中包含核心调度功能。对于RLC层,两者都有hNRGNB.m而且hNRUE.m使用hNRUMEntity.m实现RLC发射机和接收机的功能。实现了终端与gNB之间的PHY层直通hNRUEPassThroughPhy.m而且hNRGNBPassThroughPhy.m,分别。

创建gNB节点并添加调度器

gNB = hNRGNB(simParameters);开关(simParameters.SchedulerStrategy)情况下“农达”轮询调度程序调度器= hNRSchedulerRoundRobin(simParameters);情况下“PF”比例公平调度程序调度器= hnrschedulerproporalfair (simParameters);情况下“BestCQI”%最佳CQI调度器调度器= hNRSchedulerBestCQI(simParameters);结束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);问题{ueIdx}。PhyEntity = hNRUEPassThroughPhy(simParameters, ueIdx);添加直通PHYconfigurePhy(问题{ueIdx}, simParameters);setPhyInterface(用正餐{ueIdx});%设置接口为PHY层在gNB调度程序上初始化UL CQI值channelQualityInfoUL = struct(“RNTI”ueIdx,医院药学部的“, simParameters。InitialChannelQualityUL (ueIdx:));updateChannelQualityUL (gNB.MACEntity。调度器,channelQualityInfoUL);在gNB调度程序上初始化DL CQI值channelQualityInfoDL = struct(“RNTI”ueIdx,医院药学部的“, simParameters。InitialChannelQualityDL (ueIdx:));updateChannelQualityDL (gNB.MACEntity。调度器,channelQualityInfoDL);初始化UE处的DL CQI值,用于包错误概率估计updateChannelQualityDL(用正餐{ueIdx}。MACEntity channelQualityInfoDL);为终端在gNB上设置逻辑通道configureLogicalChannel(gNB, ueIdx, rlcChannelConfigStruct);在UE上设置逻辑通道configureLogicalChannel(ue {ueIdx}, ueIdx, rlcChannelConfigStruct);为开关网络流量模式创建一个对象,并将其添加到指定UE的%。该对象用于生成终端上行链路(UL)数据流量ulApp = networkTrafficOnOff(“GeneratePacket”,真的,...“定时”, simParameters。NumFramesSim/100,“停止时间”0,“DataRate”ulAppDataRate (ueIdx));问题{ueIdx}。addApplication (ueIdx simParameters.LCHConfig。LCID ulApp);为指定的开关网络流量模式创建一个对象% UE,并将其添加到gNB。该节点用于生成下行链路(DL)数据UE在gNB上的流量百分比dlApp = networkTrafficOnOff(“GeneratePacket”,真的,...“定时”, simParameters。NumFramesSim/100,“停止时间”0,“DataRate”dlAppDataRate (ueIdx));gNB。addApplication (ueIdx simParameters.LCHConfig。LCID dlApp);结束

建立包分发机制。

设置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跟踪。

如果enableTraces simlclogger = hNRRLCLogger(simParameters, lchInfo);simSchedulingLogger = hNRSchedulingLogger(simParameters);为CQI和RB网格可视化创建一个对象如果simParameters。CQIVisualization || simParameters。RBVisualizationgridVisualizer = hNRGridVisualizer(simParameters,“MACLogger”, simSchedulingLogger);结束结束

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

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

运行处理循环。

slotNum = 0;tickGranularity = 1;%执行模拟中的所有符号symbolNum = 1: tickGranularity: numSymbolsSim symbolType = currentSymbolType(gNB.MACEntity);获取当前符号类型:DL/UL/Guard如果mod(symbolNum - 1,14) == 0 slotNum = slotNum + 1;结束运行gNB的MAC和PHY层运行(gNB);运行终端的MAC和PHY层ueIdx = 1:simParameters。NumUEs运行(用正餐{ueIdx});结束如果enableTraces% RLC测井(仅在槽边界)如果mod(symbolNum - 1,14) == 0 logCellRLCStats(simRLCLogger, gNB, UEs);结束% MAC测井logCellSchedulingStats(simSchedulingLogger, symbolNum, gNB, UEs);结束%的可视化检查槽边界如果symbolNum > 1 && (simParameters. simParameters. simParameters. simParameters. simParameters. simParameters. simParameters. simParameters. simParameters。SchedulingType==1&& mod(symbolNum, 14) == 0) || (simParameters.SchedulingType == 0 && mod(symbolNum-1, 14) == 0))如果达到更新周期,在槽边界绘制RLC指标和调度器指标如果mod(slotNum, simParameters.MetricsStepSize) == 0 plotLiveMetrics(metricsVisualizer);结束结束%通过'tickGranularity'符号为gNB和UEs计时advanceTimer (gNB tickGranularity);ueIdx = 1:simParameters。NumUEs%适用于所有终端advanceTimer(问题{ueIdx}, tickGranularity);结束结束

在仿真结束时,将系统性能指标的实现值与它们的理论峰值进行比较(考虑零开销)。显示的性能指标包括已实现的数据速率(UL和DL)和已实现的频谱效率(UL和DL)。峰值按3GPP TR 37.910计算。

displayPerformanceIndicators (metricsVisualizer);
最高UL吞吐量:14.22 Mbps。每个终端实现的UL吞吐量:[1.87 2.03 0.92 0.98]实现的Cell UL Goodput: 5.21 Mbps每个终端实现的UL Goodput:[1.66 1.83 0.82 0.89]峰值UL频谱效率:2.84 bits/s/Hz。cell的UL频谱效率:1.04 bits/s/Hz峰值DL吞吐量:16.00 Mbps。实现小区DL吞吐量:5.39 Mbps每个终端的DL吞吐量:[1.72 1.9 0.85 0.92]实现小区DL Goodput: 4.89 Mbps每个终端的DL Goodput:[1.55 1.73 0.77 0.83]峰值DL频谱效率:3.20 bits/s/Hz。实现小区的DL频谱效率:0.98比特/秒/赫兹

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

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

仿真可视化

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

  • 在PUSCH或PDSCH带宽上显示终端的CQI值:有关详细信息,请参见“渠道质量可视化”图。

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

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

  • DL调度度量图显示:与上行度量图一样,“下行调度器性能度量”显示DL方向的相应子图。性能指标图更新为每metricsStepSize

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

模拟日志

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

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

每行包含以下信息:

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

  • 框架:帧号。

  • :框中的槽位号。

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

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

  • 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]表示带宽有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或PDSCH传输的调制和编码方案(MCS)指标。例如,[10 12 8 -1]表示只有UE-1、UE-2和UE-3为该符号分配了UL资源(符号类型为'UL'),并分别使用MCS值10、12和8。

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

  • 抗利尿:长度的行向量N,在哪里N为ue的数目。该值为PUSCH或PDSCH传输分配中的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'表示UE没有分配PUSCH或PDSCH资源。例如:['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)对应于UE与RNTI的CQI值在RBj

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

  • 吞吐量字节:长度的行向量N,在哪里N为ue的数目。这些值表示该符号中ue传输或为ue传输的UL或DL MAC字节。注意,完整的PUSCH或PDSCH传输的总吞吐量字节显示在与传输的第一个符号对应的行中。

  • Goodput字节:长度的行向量N,在哪里N为ue的数目。这些值表示该符号中ue传输或为ue传输的新的UL或DL传输MAC字节。与吞吐量一样,完整PUSCH或PDSCH的所有goodput字节都显示在与传输的第一个符号对应的行中。

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

调度分配日志:所有的调度任务和相关信息都记录在这个表中。每行是一个UL或DL赋值。日志格式的详细信息,请参见《模拟日志》章节NR软驱调度性能评估的例子。

RLC日志:有关RLC日志格式的详细信息,请参见NR PUSCH软驱调度

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

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

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

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

进一步的探索

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

自定义调度

您可以修改已存在的调度策略,创建新的调度策略。在系统级模拟中插入自定义调度器示例说明如何创建自定义调度策略并将其插入系统级模拟。

使用5G Toolbox™物理层

您还可以通过使用创建PHY对象来从直通PHY层切换到5G Toolbox™物理层处理hNRGNBPhy.m而且hNRUEPhy.m.有关详细信息,请参见“gNB和UEs设置”部分基于物理层集成的NR电池性能评估

使用RLC AM

您还可以通过修改输入结构字段将RLC实体的工作模式从UM切换到确认模式(AM)EntityType而且SeqNumFieldLengthconfigureLogicalChannel的函数hNRNode.m.更多细节,见“进一步探索”部分NR软驱调度性能评估

基于所选择的调度策略,本示例演示了gNB将UL和DL资源分配给多个ue。UL和DL调度性能基于终端的吞吐量、goodput、资源共享公平性和未决缓冲区状态的运行时图进行分析。通过使用保存的日志进行更彻底的后期模拟分析,提供了在每个符号或每个槽基础上发生的操作的详细图像。

参考文献

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

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

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

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

相关的话题