主要内容

NR基于TDD象征调度性能评估

这个例子展示了如何实现一个基于符号调度方案在时分双工(TDD)方式分配上行(UL)和下行(DL)资源和评估网络的性能。基于符号资源调度允许短传输时间跨越几个符号的位置。您还可以切换到基于位置的安排。在TDD模式下,物理上行共享通道(PUSCH)和物理下行共享信道(PDSCH)在同一频带传输计划在时间域分离。调度策略中使用的例子可以定制评估性能。透传的物理(体育)层没有任何使用物理层处理,采用概率方法模型包接收失败。调度策略的性能评价方面取得了吞吐量和资源共享的公平性。

介绍

gNB中的例子考虑以下操作问题,促进UL和DL传输和招待会。

完成PUSCH或PDSCH数据包传输分配的第一个象征符号集。接收机处理数据包在刚刚过去的符号象征符号集分配。

这个示例模型:

  • 可配置的TDD DL-UL模式。

  • 基于槽和象征DL和UL调度。UL调度程序确保问题得到所需PUSCH准备时间。

  • 非连续分配频域资源的资源块组(篮板)。

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

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

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

  • RLC在嗯运营模式。

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

跟踪控制数据包认为是发送带即不需要资源传输和保证无误接待:UL任务,DL任务,缓冲状态报告(BSR),医院药学部PDSCH反馈和报告。这些控制数据包遵循TDD DL和UL计时。例如,BSR和PDSCH反馈发送UL时间资源分配在DL时间发送。

TDD DL-UL模式配置

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

  1. 在女士DL-UL传输周期性。

  2. 参考副载波间距计算的槽数DL-UL模式。在本例中,它被认为是实际副载波间距一样用于传输。

  3. 的连续完整的DL名额每个DL-UL模式的开始。

  4. 一些连续DL的象征,在去年全DL槽槽后。

  5. 的连续完整的UL名额每个DL-UL模式的终结。

  6. 一些连续UL的象征,最后槽前的第一个完整的UL槽。

示例模型不灵活的符号,所以未指明的象征的符号类型被认为保护段。这里是结果的一个例子TDD DL-UL模式基于这些参数。这个DL-UL模式重复的时间表。

  • reference_scs= 15千赫(例如1槽女士),DLULPeriodicity=5女士,numDLSlots=3,numDLSyms=7,numULSlots=1,numULSyms= 5

DL-UL周期性的插槽数量对参考SCS 15 kHz,NumSlotsDLULPeriodicity= 5

NumberOfGuardSymbols = TotalSymbolsInPattern - TotalSymbolsWithTypeSpecified

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

= 2符号

调度器

UL和DL调度器分别分发UL和DL资源问题。你可以选择任何一个实现的调度策略:比例公平(PF)、医院药学部最好,或者轮循(RR)。各种支持输入显示调度器的金宝app调度策略,考虑他们。

UL和DL调度程序运行开始时槽当第一个符号是一种DL的象征。调度器在DL运行时间,以便作业(UL和DL)可以立即送到DL方向的问题。调度器算法的运行时间以及传播延迟是假定为零。调度操作的输出是一组作业。每个任务包含的信息字段完全定义一个PUSCH或PDSCH传播。

  • UL调度器

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

  1. 选择时段安排:这个示例中使用的标准选择所有即将到来的槽(包括现在)包含计划外UL标志必须预定。等槽必须安排现在他们不能安排在接下来的槽与DL符号,根据PUSCH准备时间的价值问题的能力。它确保了UL资源计划尽可能接近实际的传输时间。

下面是两个例子来解释UL槽选择在本例中为调度、基于PUSCH准备时间。

(我)假设问题需要PUSCH准备时间相当于10个符号,在槽UL调度程序运行时,它不选择任何调度。因为安排在下一个槽(即b槽口)提供足够PUSCH准备时间(符号)14日Slot-C UL传输。后来,在b槽口UL调度程序运行时,它选择Slot-C和Slot-D调度。Slot-D计划b槽口本身(而不是在Slot-C)因为Slot-C是完整的UL槽,因此没有任何DL符号发送作业DL的方向。

(2)假设问题需要PUSCH准备时间相当于16个符号,Slot-C预计在槽本身。因为在b槽口调度只能提供14符号Slot-C PUSCH准备开始传播。在b槽口Slot-D计划。

2。资源调度:如果任何时段选择在第一步中,给这些插槽的UL资源分配问题。

  • DL调度器

DL调度程序运行在每个槽开始DL的象征和分配资源的第一即将槽包含DL符号。所以,当槽的DL调度程序运行开始时,它计划b槽口的DL资源。

基于符号调度

NR允许创科实业开始在任何符号在槽中的位置与创科实业粒度和符号。如图所示UL调度器的方式运行在这个例子中安排UL标志的槽与创科实业粒度的两个符号。包含六个UL标志所示的位置。调度程序完成迭代UL标志的三个迭代每个迭代分配两个符号的频率资源。DL调度器也遵循类似的方法对DL调度。

场景配置

设置参数模拟。

rng (“默认”);%重置随机数发生器simParameters = [];%明显simParameters变量simParameters。NumFramesSim = 100;%仿真时间的10 ms帧的数量%的问题模拟。问题被假定顺序广播%网络临时标识符(RNTIs)从1到NumUEs。如果你改变%的数量问题,确保以下仿真参数数组%的长度等于NumUEs: simParameters.UEDistance,% simParameters。ULPacketPeriodicityUEs, simParameters.ULPacketSizesUEs,% simParameters。戴斯。莱纳姆:PacketPeriodicityUEs, simParameters.DLPacketSizesUEssimParameters。NumUEs = 4;simParameters。UEDistance = [100;150;300;400);%的距离问题从gNB(单位:米)%设置调度类型的值为0(基于槽的调度)或1%(基于符号调度)。如果没有设置值,默认值是0simParameters.SchedulingType=1;%设置最低时域赋值符号持续时间。%只适用的基于符号的调度。基于位置的安排,符号%总是满槽(14)simParameters。TTIGranularity = 4;%定义TDD DL-UL模式。参考副载波间距%计算槽时间模式被认为是与实际相同%副载波间距simParameters.SCS定义的用于传输。%只保留符号用于保护DLULPeriodicity时期% (DL或UL)型不明simParameters。戴斯。莱纳姆:ULPeriodicity = 5;%在女士DL-UL模式的持续时间simParameters。NumDLSlots = 2;%的连续完整的DL名额每个DL-UL模式的开始%定义的数量连续DL符号后完整的DL插槽%的数量连续UL标志前完整的UL插槽。在%槽基于调度的情况下,只有simParameters。NumDLSyms是%适用,它定义了DL符号开始的时候%槽,其余槽是假定为分配的象征%护段simParameters。NumDLSyms = 8;%的开始的连续DL符号槽后最后完整的DL槽simParameters。NumULSyms = 4;%的连续UL标志的槽前第一个完整UL槽simParameters。NumULSlots = 2;%的连续完整的UL名额每个DL-UL模式的终结% gNB距离之间的映射(第一列米)和最大医院药学部%达到UL值(第二列)。例如,如果一个问题是700%从gNB米之外,它可以实现医院药学部最多8的价值%距离落在(501、1000)米范围内,根据映射。%设置距离增加医院药学部秩序和最大可实现的价值%递减顺序simParameters。CQIvsDistance = [200 15;300 12;500年10;1000 8;1200 7];%设置周期性UL和DL应用程序流量模式问题simParameters。ULPacketPeriodicityUEs = [20; 30; 20; 30];% (ms)的周期性的UL数据包所产生的问题simParameters。ULPacketSizesUEs = [4000; 6000; 5500; 4000];% UL数据包的大小(以字节为单位)所产生的问题simParameters。戴斯。莱纳姆:PacketPeriodicityUEs = [20; 15; 15; 20];% (ms)的周期性的DL数据包生成gNB问题simParameters。戴斯。莱纳姆:PacketSizesUEs = [6000; 5000; 10000; 8000];% DL生成数据包的大小(以字节为单位)在gNB问题%的介质访问控制(MAC)配置simParameters。调度器Strategy =“PF”;%支金宝app持调度策略:“PF”、“农达”和“BestCQI”% PUSCH准备时间。收到gNB确保PUSCH作业%问题PUSCHPrepTime的传输时间simParameters。PUSCHPrepTime = 200;%在微秒%最大苏格兰皇家银行分配给PUSCH和PDSCH传输(限制的问题%适用于新传输作业和不重发)simParameters。RBAllocationLimitUL = 15;%为PUSCHsimParameters。RBAllocationLimitDL = 15;%为PDSCHsimParameters。BSRPeriodicity = 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秒所有苏格兰皇家银行的问题。通道是否%条件为特定问题改善或恶化是随机的%确定:RB_CQI = RB_CQI + / - CQIDeltasimParameters。通道UpdatePeriodicity = 0.2;%的交会simParameters。CQIDelta = 1;%的日志和可视化的配置医院药学部%的标志来启用或禁用运行时可视化simParameters.CQIVisualization=真正的;%的旗帜来启用或禁用运行时的可视化RB任务。如果启用,%然后基于槽调度更新每一帧(10 ms)显示RB%分配问题的不同时段的最后一帧。为基于%符号的调度,它更新每个槽RB分配%的问题在不同的符号最后槽simParameters.RBVisualization=假;%的输出指标地块内的定期更新NumMetricsSteps倍%的仿真时间simParameters。NumMetricsSteps = 20;% mat文件写日志。他们是用于仿真分析和可视化simParameters.ParametersLogFile=“simParameters”;%用于日志记录仿真参数simParameters.SimulationLogFile=“simulationLogs”;%用于日志记录仿真日志hNRSchedulingTDDValidateConfig (simParameters);%验证仿真配置

导出参数

基于主配置参数,计算得到的参数。此外,设置一些特定的常量的例子。

simParameters。DuplexMode = 1;% TDD(例如特定常数)simParameters。NCellID = 1;%的身体细胞IDsimParameters。GNBPosition = (0 0 0);% gNB的位置坐标(x, y, z)simParameters。NumLogicalChannels = 1;% 1逻辑信道是假定在每一个问题(例如特定常数)slotDuration = 1 / (simParameters.SCS / 15);槽时间百分比numSlotsFrame = 10 / slotDuration;%的插槽数量10 msnumSlotsSim = simParameters。NumFramesSim * numSlotsFrame;%仿真时间单位的持续时间numSymbolsSim = numSlotsSim * 14;%仿真时间在单位符号持续时间%的间隔标准可视化更新的数量%插槽。确保MetricsStepSize是整数simParameters。MetricsStepSize =装天花板(numSlotsSim / simParameters.NumMetricsSteps);如果国防部(numSlotsSim simParameters.NumMetricsSteps) ~ = 0%更新NumMetricsSteps参数如果numSlotsSim不是%完全整除simParameters。NumMetricsSteps = floor(numSlotsSim / simParameters.MetricsStepSize);结束% DL和UL包周期的研究议题的插槽的数量appPeriodicityUEsSlotsUL = simParameters。ULPacketPeriodicityUEs。/ slotDuration;appPeriodicityUEsSlotsDL = simParameters。DLPacketPeriodicityUEs。/ slotDuration;%之间的映射逻辑信道和逻辑通道组标识符(LCGID)simParameters.LCHConfig。LCGID = (simParameters。NumUEs, simParameters.NumLogicalChannels);%每个逻辑信道的优先级simParameters.LCHConfig。Priority = ones(simParameters.NumUEs, simParameters.NumLogicalChannels);%优先比特率(PBR)的每个逻辑通道(千字节每秒)simParameters.LCHConfig。PBR = 8*ones(simParameters.NumUEs, simParameters.NumLogicalChannels);%桶大小持续时间(BSD)的每个逻辑通道(女士)。然而,优先级,% PBR和BSD与单一的逻辑逻辑信道是不相关的%通道假设在这个例子simParameters.LCHConfig。BSD = 10 * 1 (simParameters。NumUEs, simParameters.NumLogicalChannels);%的逻辑通道id(逻辑通道的id数据广播持有者从4)simParameters.LCHConfig。LCID = (simParameters。NumUEs, simParameters.NumLogicalChannels) .* (4:4+simParameters.NumLogicalChannels-1);% RLC实体方向。值0表示DL, 1%代表UL, 2代表UL和DL%的方向。设置实体方向有UL和DLsimParameters.RLCConfig。EntityDir = 2 * (simParameters。NumUEs, simParameters.NumLogicalChannels);% RLC记录器的构造信息lchInfo = repmat(结构体(“LCID”[],“EntityDir”[]),[simParameters。NumUEs 1]);idx = 1: simParameters。NumUEs lchInfo (idx)。LCID = simParameters.LCHConfig。LCID (idx:);lchInfo (idx)。EntityDir = simParameters.RLCConfig。EntityDir (idx:);结束%最大RLC信号分配装置长度(字节)根据3 gpp TS 38.323simParameters。maxRLCSDULength = 9000;%计算最大医院药学部实现值问题根据他们的距离%的gNB(simParameters maxUECQIs = 0。NumUEs, 1);%存储医院药学部的最大可实现的价值问题ueIdx = 1: simParameters.NumUEs%从gNB基于问题的距离,找到匹配的行CQIvsDistance映射matchingRowIdx =找到(simParameters。CQIvsDistance (: 1) > simParameters.UEDistance (ueIdx));如果isempty (matchingRowIdx) maxUECQIs (ueIdx) = simParameters。CQIvsDistance (, 2);其他的maxUECQIs (ueIdx) = simParameters.CQIvsDistance (matchingRowIdx (1), 2);结束结束%定义初始UL和DL通道质量作为N-by-P矩阵,%,“N”问题和“P”的数量是苏格兰皇家银行在承运人的数量%的带宽。为每个RB医院药学部的初始值,对于每个问题,%随机和相对应的最大的医院药学部可实现的价值是有限的从gNB %的距离问题simParameters。在我tialChannelQualityUL = zeros(simParameters.NumUEs, simParameters.NumRBs);%在苏格兰皇家银行存储当前医院药学部UL值不同的问题simParameters。在我tialChannelQualityDL = zeros(simParameters.NumUEs, simParameters.NumRBs);%在苏格兰皇家银行存储当前医院药学部DL值不同的问题ueIdx = 1: simParameters.NumUEs苏格兰皇家银行、医院药学部%分配随机值限制医院药学部的最大可实现的价值simParameters。在我tialChannelQualityUL(ueIdx, :) = randi([1 maxUECQIs(ueIdx)], 1, simParameters.NumRBs);医院药学部%最初,DL和UL值被认为是相等的simParameters。在我tialChannelQualityDL(ueIdx, :) = simParameters.InitialChannelQualityUL(ueIdx, :);结束%更新周期的RB作业可视化槽数如果~ isfield (simParameters“SchedulingType”)| | simParameters。SchedulingType = = 0%如果没有指定调度类型或基于位置的指定调度rbAssignmentPlotPeriodicity = numSlotsFrame;%更新每一帧(10 ms)其他的%符号基于调度rbAssignmentPlotPeriodicity = 1;%更新每一个槽结束

gNB和议题设置

创建gNB和发行对象,初始化问题和设置的信道质量信息的逻辑通道gNB和问题。辅助类hNRGNB.mhNRUE.m分别创建gNB和问题节点,包含RLC和MAC层。对MAC层,hNRGNB.m使用辅助类hNRGNBMAC.m实现gNB MAC功能和hNRUE.m使用hNRUEMAC.mMAC功能实现问题。调度器实现在hNRSchedulerRoundRobin.m(RR),hNRSchedulerProportionalFair.m(PF),hNRSchedulerBestCQI.m医院药学部(最佳)。所有的调度程序从基类继承hNRScheduler.m它包含核心调度功能。对RLC层,hNRGNB.mhNRUE.m使用hNRUMTransmitter.m实现RLC发射机的功能hNRUMReceiver.m实现RLC接收机的功能。透传的问题和实现gNB PHY层hNRUEPassThroughPhy.mhNRGNBPassThroughPhy.m,分别。

simParameters。Position = simParameters.GNBPosition; gNB = hNRGNB(simParameters);%创建gNB节点%创建和添加调度器开关(simParameters.SchedulerStrategy)情况下“农达”%轮循调度程序调度器= hNRSchedulerRoundRobin (simParameters);情况下“PF”%比例公平调度程序调度器= hNRSchedulerProportionalFair (simParameters);情况下“BestCQI”医院药学部%最好调度器调度器= hNRSchedulerBestCQI (simParameters);结束addScheduler (gNB,调度器);%增加gNB调度器gNB。PhyEntity = hNRGNBPassThroughPhy(simParameters);%增加透传体育configurePhy (gNB simParameters);setPhyInterface (gNB);%设置界面PHY层%创建问题的节点的集合问题=细胞(simParameters。NumUEs, 1);ueIdx = 1: simParameters.NumUEssimParameters。Position = [simParameters.UEDistance(ueIdx) 0 0];%的位置问题问题{ueIdx} = hNRUE (simParameters ueIdx);问题{ueIdx}。PhyEntity = hNRUEPassThroughPhy(simParameters, ueIdx);%增加透传体育configurePhy(问题{ueIdx}, simParameters);setPhyInterface(用正餐{ueIdx});%设置界面PHY层%初始化在gNB医院药学部UL值updateChannelQuality (gNB simParameters。在我tialChannelQualityUL(ueIdx, :), 1, ueIdx);% 1的UL%初始化在gNB医院药学部DL值和问题。医院药学部DL值%帮助gNB调度,并在分组错误概率估计问题updateChannelQuality (gNB simParameters。在我tialChannelQualityDL(ueIdx, :), 0, ueIdx);% 0为DLsimParameters updateChannelQuality(问题{ueIdx}。InitialChannelQualityDL (ueIdx:));%设置逻辑信道和添加应用程序流量lcIdx = 1: simParameters.NumLogicalChannels%创建RLC通道配置结构rlcChannelConfigStruct。EntityType=simParameters.RLCConfig。EntityDir (ueIdx lcIdx);rlcChannelConfigStruct。LogicalChannelID = simParameters.LCHConfig。LCID (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);%设置逻辑通道问题configureLogicalChannel(问题{ueIdx}, ueIdx rlcChannelConfigStruct);%添加数据流量模式发电机gNB和问题节点ulPacketSize = simParameters.ULPacketSizesUEs (ueIdx);%计算数据速率(kbps)断断续续的交通模式使用%数据包大小(以字节为单位)和包间隔(女士)ulDataRate =装天花板(1000 / simParameters.ULPacketPeriodicityUEs (ueIdx)) * ulPacketSize * 8 e - 3;%生成的应用程序包的大小限制为最大的RLC%信号分配装置的尺寸。支持的最大RLC信号分配金宝app装置大小是9000字节如果ulPacketSize > simParameters。maxRLCSDULength ulPacketSize = simParameters.maxRLCSDULength;结束%为开关网络流量模式创建一个对象并将其添加到%指定的问题。这个对象生成上行(UL)数据流量问题ulApp = networkTrafficOnOff (“PacketSize”ulPacketSize,“GeneratePacket”,真的,“定时”simParameters.NumFramesSim / 100,“停止时间”0,“DataRate”,ulDataRate);问题{ueIdx}。addApplication (ueIdx simParameters.LCHConfig。LCID (ueIdx lcIdx) ulApp);dlPacketSize = simParameters.DLPacketSizesUEs (ueIdx);dlDataRate =装天花板(1000 / simParameters.DLPacketPeriodicityUEs (ueIdx)) * dlPacketSize * 8 e - 3;如果dlPacketSize > simParameters。maxRLCSDULength dlPacketSize = simParameters.maxRLCSDULength;结束%为开关网络流量模式创建一个对象的指定%问题,并将它添加到gNB。这个对象生成下行(DL)数据%的gNB交通问题dlApp = networkTrafficOnOff (“PacketSize”dlPacketSize,“GeneratePacket”,真的,“定时”simParameters.NumFramesSim / 100,“停止时间”0,“DataRate”,dlDataRate);gNB。addApplication (ueIdx simParameters.LCHConfig。LCID (ueIdx lcIdx) dlApp);结束结束%设置UL和DL包分配机制simParameters。MaxReceivers = simParameters.NumUEs;%创建DL包分配对象dlPacketDistributionObj = hNRPacketDistribution (simParameters 0);% 0为DL%创建UL包分配对象ulPacketDistributionObj = hNRPacketDistribution (simParameters, 1);% 1的ULhNRSetUpPacketDistribution (gNB simParameters,问题,dlPacketDistributionObj ulPacketDistributionObj);

处理循环

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

  • 运行MAC层和物理层gNB层

  • 运行MAC层和物理层层问题

  • 层特定日志和可视化

  • 提前的计时器节点。每1毫秒也将触发发送给应用程序和RLC层。应用程序层和RLC层执行其预定业务基于1毫秒计时器触发。

%为每个符号存储以下问题指标:吞吐量字节%传播,传播goodput字节,和等待缓冲区字节%(用于日志记录的目的)。goodput字节的数量计算%扣除总传输的重发。完整的%传播被认为是在第一个传输的象征。%指标对DL方向符号类型是DL(同样,UL%符号)(simParameters UEMetrics = 0。NumUEs 3);医院药学部%来存储当前值在苏格兰皇家银行问题的日志记录(simParameters channelQuality = 0。NumUEs simParameters.NumRBs);%保存的当前值最后收到NDI国旗HARQ进程%的问题日志记录。NDI值为DL HARQ进程,如果符号类型是DL%(同样,UL标志)(simParameters HARQProcessStatus = 0。NumUEs 16);%的RLC统计存储日志ueRLCStats =细胞(simParameters。NumUEs, 1);gNBRLCStats =细胞(simParameters。NumUEs, 1);%为MAC调度和RLC创建日志和可视化对象simSchedulingLogger = hNRSchedulingLogger (simParameters);simRLCLogger = hNRRLCLogger (simParameters lchInfo);如果~ isfield (simParameters“SchedulingType”)| | simParameters。SchedulingType = = 0%如果没有指定调度类型或基于位置的指定调度tickGranularity = 14;%操作只在槽边界。模拟从一个插槽边界跳到下一个其他的%符号基于调度tickGranularity = 1;%操作可以在边界标志。模拟移动symbol-by-symbol结束slotNum = 0;%执行所有的符号仿真symbolNum = 1: tickGranularity: numSymbolsSim UEMetrics (:) = 0;HARQProcessStatus (:) = 0;symbolType = currentSymbolType (gNB);%得到当前符号类型:DL / UL /警卫如果国防部(symbolNum - 14) = = 0 slotNum = slotNum + 1;结束%运行MAC层和物理层gNB层运行(gNB.MACEntity);运行(gNB.PhyEntity);%运行MAC层和物理层层问题ueIdx = 1: simParameters.NumUEs%读最后收到NDI旗帜HARQ进程%日志(读它之前被运行MAC)的函数覆盖如果symbolType = = 0% DLHARQProcessStatus (ueIdx:) = getLastNDIFlagHarq(问题{ueIdx}。MACEntity, 0);% 0为DL其他的HARQProcessStatus (ueIdx:) = getLastNDIFlagHarq(问题{ueIdx}。MACEntity, 1);% 1的UL结束运行(问题{ueIdx} .MACEntity);运行(问题{ueIdx} .PhyEntity);结束% RLC日志(只有在槽边界)如果国防部(symbolNum - 14) = = 0%ueIdx = 1: simParameters.NumUEs%为所有问题%得到RLC统计ueRLCStats {ueIdx} = getRLCStatistics(用正餐{ueIdx}, ueIdx);gNBRLCStats {ueIdx} = getRLCStatistics (gNB ueIdx);结束logRLCStats (simRLCLogger ueRLCStats gNBRLCStats);%更新RLC统计日志结束% MAC日志%读UL和DL作业由gNB MAC调度器%在当前时间。调度器(返回的资源分配% UL或DL)为空,如果调度器不是调度运行%当前时间或没有资源计划[resourceAssignmentsUL, resourceAssignmentsDL] = getCurrentSchedulingAssignments (gNB.MACEntity);%阅读每个问题和goodput字节发送的吞吐量如果symbolType = = 0% DL[UEMetrics (: 1) UEMetrics (:, 2)] = getTTIBytes (gNB);UEMetrics (:, 3) = getBufferStatus (gNB);%读gNB等待缓冲区(以字节为单位),对所有的问题结束ueIdx = 1: simParameters.NumUEs如果symbolType = = 0% DL%读DL通道质量问题channelQuality (ueIdx:) = getChannelQuality (gNB 0 ueIdx);% 0为DL其他的%读UL通道质量问题channelQuality (ueIdx:) = getChannelQuality (gNB 1 ueIdx);% 1的UL%读吞吐量和goodput字节传送的问题在当前创科实业[UEMetrics ueIdx, 1), UEMetrics (ueIdx, 2)] = getTTIBytes(用正餐{ueIdx});UEMetrics (ueIdx 3) = getBufferStatus(用正餐{ueIdx});%读等待缓冲问题(以字节为单位)结束结束%更新日志基于当前运行的问题和gNB象征logScheduling (simSchedulingLogger symbolNum [resourceAssignmentsUL resourceAssignmentsDL], UEMetrics, channelQuality, HARQProcessStatus, symbolType);%的可视化% RB作业可视化(如果启用)如果simParameters.RBVisualization如果symbolNum > 1 & & (simParameters。SchedulingType = = 1 & & (mod (symbolNum 14) = = 0)) | | (simParameters。SchedulingType = = 0&& (mod(slotNum, rbAssignmentPlotPeriodicity) == 0))%的情节在槽边界,如果更新周期%达到plotRBGrids (simSchedulingLogger);结束结束医院药学部%网格可视化(如果启用)如果simParameters.CQIVisualization如果symbolNum > 1 & &国防部(symbolNum-1 14) = = 0 & &国防部(slotNum numSlotsFrame) = = 0%的阴谋在帧边界plotCQIRBGrids (simSchedulingLogger);结束结束%的阴谋调度器指标和RLC指标可视化槽%的边界,如果更新周期如果symbolNum > 1 & &国防部(symbolNum-1 14) = = 0 & &国防部(slotNum simParameters.MetricsStepSize) = = 0 plotMetrics (simSchedulingLogger);plotMetrics (simRLCLogger);结束%预付计时器滴答gNB和问题由“tickGranularity”符号advanceTimer (gNB tickGranularity);ueIdx = 1: simParameters.NumUEs%为所有问题advanceTimer(问题{ueIdx}, tickGranularity);结束结束

仿真可视化

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

  • 医院药学部的显示值问题在PUSCH或PDSCH带宽:,信道质量可视化的图。

  • 显示的网格资源分配问题:二维时频网格显示了资源分配的问题。基于位置的安排,每10毫秒更新(帧长度),并显示了RB分配问题在前面的框架。基于符号的调度,它更新每一个槽,显示了RB分配前槽的象征。详情,请参阅网格资源分配图。

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

  • 显示DL调度指标的情节:像上行指标情节,下行调度性能指标的显示相应的次要情节DL方向。性能指标图更新每一个metricsStepSize

  • 显示RLC指标图:RLC吞吐量可视化的图显示了选中的RLC逻辑信道的吞吐量问题。更新每一个情节的RLC指标metricsStepSize槽。

模拟日志

用于模拟和仿真的参数日志保存在mat文件后仿真分析和可视化。仿真参数与文件名保存在MAT-file配置参数的值simParameters.ParametersLogFile。每个时间步日志、调度任务日志和RLC日志保存在MAT-filesimParameters.SimulationLogFile。仿真后,打开负载TimeStepLogs,SchedulingAssignmentLogs,RLCLogs在工作区中。

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

每一行包含以下信息:

  • 框架:帧数。

  • :帧槽数量。

  • 象征:象征在槽(只有基于符号调度)。

  • 类型:符号(或槽)类型作为“DL”,“UL”或“后卫”。基于槽调度、类型只能DL / UL。作为包含警卫队符号的位置被认为是一种DL槽与符号的位置。

  • 篮板分配图:N-by-P位图矩阵,N问题的数量和吗P是带宽的篮板数。如果一个篮板被分配给一个特定的问题,相应的位设置为1。例如,[0 0 1 1 0 1 0 1 0 1 0 0 0;1 1 0 0 0 0 0 0 0 0 1 0 0;0 0 0 0 1 0 1 0 1 0 0 1 1;0 0 0 0 0 0 0 0 0 0 0 0 0]意味着,分配的带宽有13个篮板和UE-1篮板指数2,3,5,7,9;UE-2分配篮板指数:0、1和10;UE-3分配篮板指数:4,6,8,11日和12;和UE-4没有分配任何篮板。

  • MCS:行向量的长度N在哪里N是数量的问题。每个值对应的调制和编码方案(MCS)指数PUSCH或PDSCH传播。例如,[10 12 8 1]意味着只有UE-1 UE-2,和资源分配UE-3 UL(符号类型是“UL”)这个符号和使用MCS值10,12日和8位。

  • HARQ过程:行向量的长度N,在哪里N是数量的问题。问题所使用的值是HARQ进程ID PUSCH传播或使用gNB PDSCH传输。例如,[0 3 6 1]意味着只有UE-1 UE-2,和资源分配UE-3 UL(符号类型是“UL”)这个符号,并使用HARQ进程id 0, 3和6。

  • 抗利尿:行向量的长度N,在哪里N是数量的问题。中的值是NDI标志值分配PUSCH或PDSCH传播。例如,[0 0 1 1]意味着只有UE-1 UE-2,和资源分配UE-3 UL标志和使用NDI标志值(确定一个新的传输或重新传输完成)是0,0,1,分别。

  • Tx型:Tx类型指定传输类型(新传输或重传)。行向量的长度N,在哪里N是数量的问题。可能的值是“newTx”,“reTx”或“noTx”。“noTx”意味着问题不是分配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带宽是苏格兰皇家银行的数量。一个矩阵元素的位置(i, j)医院药学部对应值与RNTI问题在RBj

  • HARQ NDI状态:N-by-P矩阵,N问题的数量和吗P是HARQ进程的数量。一个矩阵元素的位置(i, j)在问题是最后收到NDI国旗吗DL或UL HARQ进程IDj。新传输,这个值在PUSCH NDI国旗或者PDSCH赋值必须为HARQ进程切换任务。

  • 吞吐量字节:行向量的长度N,在哪里N是数量的问题。代表UL或DL MAC字节传送的值或在这个符号问题。注意,完整的总吞吐量字节PUSCH或PDSCH传播所示的行对应于第一象征传播。

  • Goodput字节:行向量的长度N,在哪里N是数量的问题。的值代表新UL或DL传输通过MAC字节或问题的这个符号。喜欢吞吐量,goodput字节完成PUSCH或PDSCH所示的行对应于第一象征传播。

  • 缓冲区的状态问题:行向量的长度N,在哪里N是数量的问题。值代表的UL方向等待缓冲区在问题(或DL方向等待缓冲区在gNB问题)。

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

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

您可以运行脚本NRPostSimVisualization一篇日志的仿真可视化。在仿真脚本后,您提供变量isLogReplay这些选项,它提供了可视化的网格资源分配和信道质量可视化数据。

  • isLogReplay真正的为模拟日志的重演。

  • isLogReplay分析一个特定的框架的细节或特定位置的一个框架。在网格资源分配的窗口中,输入帧数和槽号形象化的资源分配特定的插槽,如果调度类型是基于符号的。基于槽调度,输入帧数来可视化资源分配整个框架。在这里输入的帧数控制的帧数的信道质量可视化的图。

%读日志和写他们mat文件%的日志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-file日志保存(simParameters.ParametersLogFile,“simParameters”);%保存MAT-file仿真参数

进一步的探索

你可以用这个例子来进一步探索这些选项。

自定义调度

您可以修改现有的调度策略来实现一个自定义。指“进一步研究”的部分NR FDD调度性能评估例子的步骤。

使用5 g工具箱™物理层

你也可以从透传PHY层切换到5 g工具箱™和物理层层处理通过创建对象使用hNRGNBPhy.mhNRUEPhy.m。更多细节,请参阅“gNB和议题设置”部分NR细胞与物理层性能评估集成。仿真参数设置simParameters.SchedulingType为0,hNRGNBPhy.mhNRUEPhy.m只支持基于金宝app位置的安排。

基于所选择的调度策略,这个例子演示了UL和DL资源的分配到多个gNB问题。UL和DL调度性能分析是基于运行时的吞吐量,goodput,资源共享公平性,等待缓冲区状态的问题。更彻底的仿真分析后通过使用保存的日志提供了详细的图片的操作发生在每符号或槽的基础上。

使用RLC我

您还可以切换操作模式的RLC实体嗯承认模式(AM)通过修改字段的输入结构EntityTypeSeqNumFieldLengthconfigureLogicalChannel的函数hNRNode.m。更多细节,请参阅“进一步研究”部分NR FDD调度性能评估

附录

本例使用这些辅助函数和类:

引用

[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)协议规范。”第三代合作伙伴项目;技术规范集团无线接入网络

相关的话题