主要内容

基于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= 15 kHz(即1毫秒),dlulperiodicity=5女士numdlslots.=3.numDLSyms=7.鸣禽=1DUMULSYMS.= 5

关于15 kHz的参考SCS的DL-UL周期性的槽数,numslotsdlulperperiodicity.= 5

numbumofguardsymbols = totalsymbolsinpattern - totalalymbolswithtypespecificed

=(14 *numslotsdlulperperiodicity.) - (numdlslots.* 14 +numDLSyms+DUMULSYMS.+鸣禽* 14)

= 2个符号

调度程序

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

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

  • UL调度程序

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

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

以下是解释在该示例中选择UL插槽的示例,基于PUSCH准备时间。

(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准备时间,Slot-C在插槽A本身中调度。因为Slot-B中的调度将仅提供14个符号的PUSCH准备时间来在Slot-C中开始传输。slot-d计划在slot-b中。

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

  • DL调度器

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

基于符号的计划

NR允许TTI从插槽中的任何符号位置开始,并且在符号中具有TTI粒度。该图示出了UL调度器在该示例中运行的方式,以将具有TTI粒度的插槽的UL符号进行两种符号。所示的插槽包含六个UL符号。调度程序在三个迭代中完成UL符号的迭代,每次迭代都分发了两个符号的频率资源。DL调度程序还遵循类似的DL调度方法。

场景配置

设置模拟参数。

rng (“默认”);%重置随机数发生器simparameters = [];%清除simParameters变量simParameters。NumFramesSim = 100;10 ms帧数的仿真时间%模拟终端数。假设终端具有顺序无线电%网络临时标识符(RNTI)从1到NUMUES。如果你改变了%UE数,确保以下仿真参数是数组长度的%等于NumUEs: simParameters。UEDistance,% simParameters。ULP.acketPeriodicityUEs, simParameters.ULPacketSizesUEs,% simParameters。DL.P.acketPeriodicityUEs, simParameters.DLPacketSizesUEssimParameters。NumUEs = 4;simParameters。UEDistance = [100;150;300;400);来自GNB的UE的距离(以米为单位)%将调度类型的值设置为0(基于插槽的调度)或1%(之平衡调度)。如果未设置value,则默认值为0simparameters.schedulingtype = 1;%根据符号持续时间设置时域分配。如果数量的%符号(DL或UL)对于这个粒度是不够的,然后一个更小的选择%有效粒度。仅适用于基于符号的调度。%对于基于槽位的调度,槽位中可能的最大粒度为%选择simParameters。TTIGranularity = 4;%定义TDD DL-UL模式。用于的参考子载波间距假设模式计算图案的时隙持续时间与实际相同%子载波间距用于传输,如SimParameters.scs所定义。%仅在达列普利期期间保持用于保护期间的符号%,类型(DL或UL)未指定simParameters。DL.ULP.eriodicity = 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值(第二列)。例如,如果UE是700远离GNB的%米,它可以实现最大的8个值8根据映射,%距离落在[501,1000]米范围内。%按递增顺序设置距离和可达到的最大CQI值%按顺序递减simParameters。CQIvsDistance = [200 15;300 12;500年10;1000 8;1200 7];%设置UE的定期UL和DL应用程序流量模式simParameters。ULP.acketPeriodicityUEs = [20; 30; 20; 30];%终端生成UL包的周期,单位为mssimParameters。ULP.acketSizesUEs = [4000; 6000; 5500; 4000];%终端生成的UL报文大小,单位为字节simparameters.dlpacketperiodicicitues = [20;15;15;20];在GNB处为UE生成DL数据包的%周期度(在MS中)simparameters.dlpacketsizeue = [6000;5000;10000;8000];%在gNB终端生成的DL包大小,单位为字节%介质访问控制(Mac)配置simParameters。调度程序Strategy =“PF”%支金宝app持的调度策略:'pf','rr'和'bestcqi'% push准备时间。gNB确保PUSCH分配在% UEs PUSCHPrepTime提前传输时间simparameters.puschpreptime = 200;%在微秒分配给UE的最大RBS用于PUSCH和PDSCH传输(限制是%适用于新的传输分配而不是重新传输)simParameters。RBAllocationLimitUL = 15;%为PUSCHsimParameters。RBAllocationLimitDL = 15;%为PDSCHsimparameters.bsrperiodicity = 1;%缓冲区状态报告传输周期(单位毫秒)simParameters。DMRSTypeAPosition = 2;%PUSCH DM-RS配置simparameters.puschdmrsadditionalpostypeb = 0;simparameters.puschdmrsadditionalpostypea = 0;simparameters.puschdmrsconfiguringtype = 1;% PDSCH DM-RS配置simParameters。P.DSCHDMRSAdditionalPosTypeB = 0; simParameters.PDSCHDMRSAdditionalPosTypeA = 0; simParameters.PDSCHDMRSConfigurationType = 1;%PHY层和频道配置% RB计数5 MHz频带与15 kHz子载波间隔(SCS)。完整的%带宽被假定分配给PUSCH或PDSCHsimparameters.numrbs = 25;SimParameters.scs = 15;%kHz.simParameters。DL.Bandwidth = 5e6;%赫兹simparameters.ulbandwidth = 5e6;%赫兹simparameters.dlcarrierfreq = 2.595e9;%赫兹simparameters.ulcarrierfreq = 2.595e9;%赫兹%配置参数以更新UE的通道条件。渠道每次Cqidetta都会定期改善%质量或恶化% channelUpdatePeriodicity秒的所有RBs的一个UE。通道是否特定UE的%条件改善或恶化是随机的%确定:rb_cqi = rb_cqi +/- cqidettasimparameters.cannelupdateperiodicity = 0.2;%秒simparameters.cqidetta = 1;%日志和可视化配置%标志以启用或禁用运行时CQI可视化simparameters.cqivisualization = true;%标志以启用或禁用RB分配的运行时间可视化。如果启用,%然后对于基于槽的调度,它每帧(10毫秒)更新一次以显示RB对于最后帧的不同插槽的UE分配%。为了基于符号的调度,它更新每个槽以显示RB分配给UE在上一个插槽的不同符号上的UEsimparameters.rbvisualization = false;控件中的NumMetricsSteps时间会定期更新输出指标图%的仿真时间simparameters.nummetricssteps = 20;%mat文件写入日志。它们用于仿真分析和可视化后simParameters。P.arametersLogFile ='simparameters'用于记录模拟参数的%simparameters.simulationLogfile ='simulationlogs'%用于记录仿真日志hnrschedulingtdddvalidateconfig(Simparameters);%验证模拟配置

导出参数

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

simparameters.duplexmode = 1;%TDD(示例特定常数)如果simParameters。SchedulingType%之平衡调度simParameters。P.USCHMappingType =“B”;simParameters。P.DSCHMappingType =“B”别的%基于插槽的调度simParameters。P.USCHMappingType =“一个”;simParameters。P.DSCHMappingType =“一个”结尾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 =楼层(numslotssim / simparameterm.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.priority = 1;每个逻辑信道的%优先级rlcChannelConfigStruct。PBR = 8;%每个逻辑通道的优先比特率(PBR),单位为千字节/秒rlcchannelconfigstruct.bsd = 10;%每个逻辑通道的桶大小持续时间(BSD),单位为msrlcChannelConfigStruct。EntityType=simParameters。RLCConfig.EntityDir; rlcChannelConfigStruct.LogicalChannelID = simParameters.LCHConfig.LCID;每3GPP TS 38.323,%最大RLC SDU长度(以字节为单位)simParameters。maxRLCSDULength = 9000;%根据终端距离计算可达到的最大CQI值来自GNB的%maxuecqis = zeros(simparameters.numues,1);%以存储UE的最大可实现的CQI值为了ueIdx = 1: simParameters。NumUEs%根据UE到gNB的距离,在CQIvsDistance映射中找到匹配行matchingrowidx = find(simparameters.cqivsdistance(:, 1)> simparameters.upedistance(UEIDX));如果isempty(matchingrowidx)maxuecqis(ueidx)= simparameters.cqivsdistance(结束,2);别的maxecqis (ueIdx) = simParameters.CQIvsDistance(matchingRowIdx(1), 2);结尾结尾定义初始UL和DL通道质量为n × p矩阵,%'n'是UE的数量和'p'是载体中的RB数量%的带宽。给出了每个RB、每个UE的CQI的初始值%随机,并受到相应的最大可实现的CQI值的限制%到UE到gNB的距离simParameters。(simParameters InitialChannelQualityUL = 0。NumUEs simParameters.NumRBs);%将当前UL CQI值存储在RBS上的不同UEsimparameters.initialChannelqualityDL = Zeros(SimParameters.numues,SimParameters.numrbs);%在不同的终端上存储当前的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,:);结尾%根据槽数更新RB赋值可视化的周期性如果~ isfield (simParameters'schedulingtype')||simparameters.schedulingtype == 0.%不指定调度类型或指定基于槽位的调度rbassignmentplotperiodicity = numslotsframe;%更新每个帧(10 ms)别的%之平衡调度rbAssignmentPlotPeriodicity = 1;更新每个插槽结尾

GNB和UES设置

创建GNB和UE对象,初始化UE的信道质量信息,并在GNB和UE处设置逻辑信道。辅助课程hNRGNB.mHNRUE.M.创建GNB和UE节点,分别包含RLC和MAC层。对于Mac层,hNRGNB.m使用helper类hNRGNBMAC.m实现gNB MAC功能HNRUE.M.使用HNRuemac.m.实现UE MAC功能。调度员在中实施hNRSchedulerRoundRobin.m(rr),HNRSchedulerProportionalfair.m.(PF),hnrschedulerbestcqi.m.m.医院药学部(最佳)。所有的调度器都继承自基类hNRScheduler.m其中包含核心调度功能。对于RLC层,都是hNRGNB.mHNRUE.M.使用hnrimentity.m.实现RLC发射机和接收机的功能。实现了UE和gNB的直通PHY层hnruepassthroughphy.m.m.HNRGNBPASSTHROUCHPHY.M.M.,分别。

simparameters.position = simparameters.gnbposition;gnb = hnrgnb(simparameters);%创建GNB节点%创建和添加计划程序开关(simParameters.SchedulerStrategy)情况下'rr'轮询调度程序调度器= hNRSchedulerRoundRobin (simParameters);情况下“PF”%比例公平调度员Scheduler = HNRSchedulerProportionalFair(SimParameters);情况下'bestcqi'最好的CQI调度程序调度器= hNRSchedulerBestCQI (simParameters);结尾Addscheduler(GNB,调度程序);添加调度程序到gNBgnb.phyentity = hnrgnbpassthroughphy(simparameters);%加入passthrough phyconfigurephy(gnb,simparameters);setphyInterface(GNB);%设置接口为PHY层%创建UE节点集UES = Cell(SimParameters.numues,1);为了ueIdx = 1: simParameters。NumUEs simParameters。P.osition = [simParameters.UEDistance(ueIdx) 0 0];UE的%位置UES {UEIDX} = HNRUE(SIMPPARAMETERS,UEIDX);UES {UEIDX} .Phyentity = HNRuePassthRoughHerhy(SimParameters,UEIDX);%加入passthrough 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在调度中,以及在数据包错误概率估计中的UEUpdateChannelquality(GNB,SimParameters.InitialChannelqualityDL(UEIDX,:),0,UEIDX);% 0表示DLUpdateChannelquality(UES {UEIDX},SimParameters.InitialChannelqualityDL(UEIDX,:));%为终端在gNB设置逻辑通道configureLogicalChannel (gNB ueIdx rlcChannelConfigStruct);在终端上设置逻辑通道configurelogicalChannel(UE {UEIDX},UEIDX,RLCCHANNELCONFIGSTRUCT);%在gNB和UE节点中添加数据流量模式生成器ulPacketSize = simParameters.ULPacketSizesUEs (ueIdx);%计算开关流量模式的数据速率(以kbps)%包大小(字节)和包间隔(毫秒)uldatarate = ceil(1000 / simparameters.ulpacketperiodicicitues(UEIDX))* Ulpacketsize * 8E-3;%限制生成的应用报文大小为最大RLC%SDU大小。最大支持的RLC SDU金宝app大小为9000字节如果ulPacketSize > simParameters。maxRLCSDULength ulPacketSize = simParameters.maxRLCSDULength;结尾%创建开关网络流量模式的对象,并将其添加到%指定UE。此对象在UE上生成上行链路(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层的UE

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

  • 提前节点的计时器。每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 Logging.logcellschedulingstats(simschedulinglogger,symbolnum,gnb,ues);%的可视化检查槽边界如果symbolnum> 1 &&((simparameters.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帧边界的%绘图plotcqirbrids(simschedulinglogger);结尾结尾%在槽处绘制调度指标和RLC指标可视化%边界,如果达到更新周期如果mod(slotnum,simparameters.metricsstepsize)== 0 plotmetrics(可视化器,slotnum);结尾结尾%aved timer为gnb和ueS的“划分”符号勾选advanceTimer (gNB tickGranularity);为了ueIdx = 1: simParameters。NumUEs%用于所有ueadvanceTimer(问题{ueIdx}, tickGranularity);结尾结尾

图频道质量可视化包含UIControl类型的轴和其他对象。具有标题通道质量可视化的轴为单元ID-1包含80个类型的矩形对象。

模拟可视化

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

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

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

  • UL调度指标图显示:“上行链路调度程序性能度量标准”图包括:UL吞吐量(每个UE和单元格),UL Nutput(每个UE和单元),UE之间的资源共享百分比(从总UL资源中)来传达调度的公平性,并且暂停UE的UL缓冲状态,以显示UE是否获得足够的资源。UL吞吐量的最大可实现的数据速率值是metricsStepSize槽。以吞吐量和良品图中的虚线显示。性能指标绘图按每一个更新metricsStepSize槽。

  • DL调度指标图的显示:与上行链路指标绘图一样,“下行链路调度程序性能度量标准”显示DL方向的相应子图标。性能指标绘图更新每个metricsStepSize插槽

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

仿真日志

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

时间步骤日志:该表显示了一个示例时间步骤条目。表中的每一行代表一个符号或一个槽,基于所选的调度类型(基于符号或基于槽)。如果符号(或槽)的类型为,则一行中的信息为DLDL..同样的,对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 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]方法,即带宽具有13个RBGS,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,并使用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。UE-1和UE-2从指定的HARQ进程发送新数据包,而UE-3重新转发指定HARQ进程的缓冲区中的数据包。

  • CQI for UES.N-by-P矩阵,N和的号码是多少P.是带宽中的RB数量。位置的矩阵元素(I,J)对应于带有RNTI的UE的CQI值一世在RB.j

  • HARQ NDI状态N-by-P矩阵,N和的号码是多少P.是HARQ进程的个数。位置的矩阵元素(I,J)是UE上最后收到的NDI国旗一世对于DL或UL HARQ进程IDj.对于新的传输,PUSCH或PDSCH分配中的该值和NDI标志必须在分配中切换HARQ进程。

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

  • 净化字节:长度的行向量n,在哪里N为终端号码。该值代表由此符号中的UE传输或为UE发送的新UL或DL传输MAC字节。与吞吐量一样,完整的PUSCH或PDSCH的所有购买字节都显示在对应于传输的第一符号的行中。

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

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

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

您可以运行脚本NRPostSimVisualization获取日志的后模拟可视化。在仿真脚本中,您将提供变量isLogReplay,它提供了这些选项可视化“资源网格分​​配”和“通道质量可视化”数字。

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

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

%读取日志并写入MAT-files%获取日志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;保存(SimParameters.simulationLogfile,'simulationlogs');%保存仿真日志在Mat文件中保存(simParameters。ParametersLogFile,'simparameters');%将模拟参数保存到mat文件中

进一步的探索

您可以使用此示例来进一步探索这些选项。

定制调度

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

使用5G Toolbox™物理层

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

使用rlc上午

您还可以通过修改输入结构字段将RLC实体的操作模式从UM切换到确认模式(AM)EntityTypeSeqNumFieldLengthconfigureLogicalChannel功能HNRNode.m..有关更多详细信息,请参阅“进一步探索”部分NR FDD调度性能评估

基于所选择的调度策略,该示例演示了GNB向多个UE分配UL和DL资源。基于UE的吞吐量,净化,资源共享公平性和待处理缓冲区状态的运行时曲线分析UL和DL调度性能。使用已保存的日志更全面的仿真分析,提供了每个符号或每个插槽发生的操作的详细图片。

附录

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

参考文献

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

[2]3GPP TS 38.321。“NR;媒体访问控制(MAC)协议规范。“第三代合作伙伴计划;技术规范集团无线电接入网络

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

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

相关的话题