主要内容

NR FDD调度绩效评估

本示例以FDD (frequency division duplexing)模式下的DL (downlink)和UL (uplink)资源调度为模型,衡量网络性能。该示例包括三种不同的调度策略,并展示了如何集成自定义调度程序。为了评估不同数据流量模式下的网络性能,该示例还使用逻辑信道优先级(LCP)程序对未确认模式下的无线链路控制层(RLC-UM)进行建模。为了对PHY进行建模,使用了一个没有任何信号处理的基于概率的直通物理层(PHY)。您可以切换到5G工具箱™PHY层进行高保真建模。从实现的吞吐量和资源共享的公平性来评价调度策略的性能。

介绍

此示例显示了如何调度策略(由GNB控制)如何在UE之间分配UL和DL资源。该示例考虑了GNB和UE中的以下操作,促进UL和DL传输和接收。

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

调度程序(UL和DL)在每个p插槽分配UL和DL资源,在哪里p是已配置的调度程序的周期。在每次运行中,调度的槽数等于调度程序运行的周期性,p

UL调度器

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

  • Run-1:调度程序在a插槽开始运行时,从c插槽开始调度3个插槽,因为对于a插槽和b插槽,终端没有得到足够的PUSCH准备时间(终端在a插槽开始时得到0个符号,在b插槽开始时得到14个符号)。对于Slot-C, ue得到28个PUSCH准备符号,满足PUSCH准备时间能力。因此,Slot-C、D和E在这次运行中被调度。

  • Run-2:当调度程序在Slot-D的开始运行时,它调度从Slot-F (Slot-F, G,和H)开始的下3个连续的slot。

DL Scheduler.

第一个槽,在p在一次运行中要调度的插槽,是紧接的下一个插槽。

  • Run-1:当调度程序在Slot-A的开始时运行时,它会安排3连续插槽Slot-B,C和D.

  • Run-2:当调度程序在Slot-D开始运行时,调度3个连续的Slot-E, F, G。

您可以选择任何实现的调度策略:比例公平(PF),最佳CQI或循环(RR)。UL调度程序的各种支持的万博1manbetx输入与考虑它们的调度策略一起列出。

所需要的控制数据包被假定发送到带外,而不需要传输资源。控制报文包括UL分配、DL分配、BSR (buffer status report)和PDSCH反馈。

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

此示例模型:

  • 基于时隙的基于符号的DL和UL调度。

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

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

  • UL和DL中的异步自适应混合自动重复请求(HARQ)机制。

  • 多个逻辑通道,以支持不同类型的应用程序。万博1manbetx

  • 逻辑通道优先级(LCP)将接收到的分配分配给每个UE的UL和DL的逻辑通道。

场景配置

设置模拟参数。

rng (“默认”);重置随机数生成器simparameters = [];%清除模拟参数simParameters。NumFramesSim = 100;10 ms帧数的仿真时间simParameters。SchedulingType = 0;%将值设置为0(基于插槽的调度)或1(基于符号的调度)%模拟终端数。假设终端具有顺序无线电%网络临时标识符(RNTI)从1到NUMUES。如果你改变了%终端个数,请确保simParameters的长度。UEDistance等于NumUEssimparameters.numues = 4;simparameters.upedistance = [100 250 700 750];来自GNB的UE的距离(以米为单位)%通道带宽设置为30mhz,子载波间距设置为153GPP TS 38.104第5.3.2节中定义的%KHz。完整的ul和假设为PUSCH和PDSCH分配了% DL带宽。的假设% UL和DL载波具有对称通道%的带宽simparameters.dlbandwidth = 30e6;%赫兹simParameters。ULBandwidth = 30 e6;%赫兹simParameters。NumRBs = 160;simParameters。SCS = 15;%千赫simParameters。DLCarrierFreq = 2.635 e9;%赫兹simparameters.ulcarrierfreq = 2.515e9;%赫兹%配置参数以更新gNB和DL的UL通道质量%在gNB和UE的信道质量。通道条件周期性地每种通道upateperiodicity的Cqidetta%改善或恶化%秒为一个终端的所有RBs。是否有特定的通道条件%UE改善或恶化是随机确定的%rbcqi = rbcqi +/- cqideltasimparameters.cannelupdateperiodicity = 0.2;%的交会simparameters.cqidetta = 2;%到gNB的距离(第一列为米)和最大值之间的映射%可实现的UL CQI值(第二列)。例如,如果UE是700当距gNB % m时,其最大CQI值可达10%距离在[501,800]米范围内,根据地图。%按递增顺序设置距离,并在中设置最大可达到的CQI值%减少订单simParameters。CQIvsDistance = [200 15;500 12;800年10;1000 8;1200 7];simParameters。BSRPeriodicity = 5;%的女士simparameters.enableharq = true;%启用或禁用HARQ标志。如果禁用,则没有重传simParameters。NumHARQ = 16;% HARQ进程数%根据插槽的数量设置调度程序的运行周期。值必须%小于10毫秒帧中的槽位数simParameters。SchedulerPeriodicity = 4;simParameters。SchedulerStrategy =“PF”%支万博1manbetx持调度策略:'PF', 'RR'和'BestCQI'%在[0,1]范围内移动平均参数以计算平均%数据率为一个终端在UL和DL方向。该值用于PF调度策略。参数值越接近1表示越多%权重在瞬时数据速率上。参数值接近0%表示在过去的数据率上有更多的权重% AverageDataRate = ((1 - MovingAvgDataRateWeight) * PastDataRate) + (MovingAvgDataRateWeight * InstantaneousDataRate)simparameters.movi​​ngavgdataratewight = 0.5;% gNB确保PUSCH分配在UEs PUSCHPrepTime提前接收传输时间的%simparameters.puschpreptime = 200;%在微秒%最大RB分配给UE中的UE,用于UL和DL%传输(限制适用于新的PUSCH和PDSCH任务和%不是重传)simParameters。RBAllocationLimitUL = 100;%为PUSCHsimParameters。RBAllocationLimitDL = 100;%为PDSCH

加载逻辑通道配置表。表中的每一行表示一个逻辑通道,并将这些属性作为列。

  • rti - UE的无线网络临时标识符。

  • LogicalChannelID—逻辑通道标识符。

  • LCGID -逻辑通道组标识符。

  • SeqNumFieldLength -定义序列号字段长度。需要6个或12个。

  • maxtxbuffersdu -最大Tx缓冲区大小(以包的数量为单位)。

  • ReassemblyTimer -定义重组定时器(单位:毫秒)。

  • EntityType -定义RLC实体类型。它的值为0、1和2,分别表示RLC UM实体是单向DL、单向UL还是双向UM。

  • 优先级—逻辑通道的优先级。

  • PBR优先比特率(每秒以千字节为单位)。

  • BSD -桶大小持续时间(单位毫秒)。

负载('nrfddrlcchannelconfig.mat') simParameters。RLCChannelConfig = RLCChannelConfig;

加载包含这些字段的应用程序配置表。表中的每一行表示一个应用程序,并将这些属性作为列。

  • PacketInterval -连续两次报文生成的间隔时间(单位毫秒)。

  • PacketSize -数据包的大小(单位为字节)。

  • HostDevice -用指定的配置定义安装应用程序的设备(UE或gNB)。设备取值为0、1或2。取值说明该应用是在gNB侧、UE侧配置的,或者分别在UE和gNB侧配置。

  • rti - UE的无线网络临时标识符。这将标识安装应用程序的终端。

  • LCID逻辑通道标识符。

负载(“NRFDDAppConfig.mat”);simParameters。AppConfig = AppConfig;

日志记录和可视化配置

% CQIVisualization和RBVisualization参数控制显示%这些可视化:(i) CQI可视化RBs (ii) RB赋值%的可视化。默认情况下,这些图是禁用的。你可以启用它们%设置为“true”simParameters。CQIVisualization = false;simparameters.rbvisualization.= false;控件中的NumMetricsSteps时间会定期更新输出指标图%的仿真时间simparameters.nummetricssteps = 20;要写入日志的% mat文件。它们用于后期仿真分析和可视化simParameters。ParametersLogFile =“simParameters”%用于记录模拟参数simparameters.simulationLogfile =.'simulationlogs'%用于记录仿真日志验证模拟配置hNRSchedulingFDDValidateConfig (simParameters);

派生参数

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

simParameters。DuplexMode = 0;% FDD%以RBs数量表示的CQI报告子频带的大小(仅供使用)5G工具箱™PHY层处理启用时%)simParameters。SubbandSize = 16;simParameters。NumCells = 1;%单元格数simParameters。NCellID = 1;%物理单元IDsimparameters.gnbposition = [0 0 0];GNB中的%位置(x,y,z)坐标%在10毫秒帧中选择的插槽持续时间和插槽数量slotduration = 1 /(simparameters.scs / 15);%的女士numSlotsFrame = 10 / slotDuration;%每10毫秒帧的插槽数numSlotsSim = simParameters。NumFramesSim * numSlotsFrame;仿真中的斜槽数量%根据终端距离计算可达到的最大CQI值%的gNB(simParameters maxUECQIs = 0。NumUEs, 1);%存储ue可实现的最大CQI值UEIDX = 1:SimParameters.numues%根据UE到gNB的距离,找到匹配的行% CQIvsDistance映射matchingrowidx = find(simparameters.cqivsdistance(:, 1)> simparameters.upedistance(UEIDX));如果isempty(matchingRowIdx) maxecqis (ueIdx) = simParameters. isempty(matchingRowIdx)CQIvsDistance (, 2);别的maxecqis (ueIdx) = simParameters.CQIvsDistance(matchingRowIdx(1), 2);结尾结尾%间隔,其数量可视化更新%插槽。由于一个槽是仿真的最优时间粒度,因此%确定MetricsStepSize是一个整数simParameters。= cell (numSlotsSim / simParameters.NumMetricsSteps);如果mod(numslotssim,simparameters.nummetricssteps)〜= 0%如果NumSlotsSim不是,则更新NumMetricsSteps参数%完全可被它划分simParameters。NumMetricsSteps = floor(numSlotsSim / simParameters.MetricsStepSize);结尾%将初始UL和DL信道质量定义为N逐个P矩阵,%'n'是UE的数量和'p'是载体中的RB数量%的带宽。给出了每个RB、每个UE的CQI的初始值%,并受相应可达到的最大CQI值的限制从GNB到UE的距离simParameters。(simParameters InitialChannelQualityUL = 0。NumUEs simParameters.NumRBs);%在不同终端的RBs上存储当前的UL CQI值simparameters.initialChannelqualityDL = Zeros(SimParameters.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:);结尾%以存储每个UE关联的逻辑信道信息lchInfo = repmat(结构体(“RNTI”,[],“LCID”,[],“EntityDir”[]), [simParameters。NumUEs 1]);UEIDX = 1:SimParameters.Numues Lchinfo(UEIDX).rnti = UEIDX;lchinfo(UEIDX).lcid = simparameters.rlcchannelconfig.logicalChannelid(SimParameters.AppConfig.rnti == UEIDX);Lchinfo(UEIDX).entityDir = SimParameters.rlcchannelconfig.entitytype(SimParameters.AppConfig.rnti == UEIDX);结尾如果〜Isfield(SimParameters,“SchedulingType”) | | simParameters。SchedulingType = = 0%不指定调度类型或指定基于槽位的调度rbassignmentplotperiodicity = numslotsframe;%更新RB分配可视化每个帧(10 ms)tickGranularity = 14;simParameters。PUSCHMappingType =“一个”;simParameters。PDSCHMappingType =“一个”别的基于符号的调度rbassignmentplotperiodicity = 1;%更新RB分配可视化每个插槽tickGranularity = 1;simParameters。PUSCHMappingType =“B”;simParameters。PDSCHMappingType =“B”结尾

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医院药学部(最佳)。所有的调度器都继承自基类hNRScheduler.m其中包含核心调度功能。对于RLC层,两者都有hNRGNB.mhNRUE.m采用hNRUMEntity.m实现RLC发射器和接收器的功能。UE和GNB的Passthrough PHY层hnruepassthroughphy.m.m.hNRGNBPassThroughPhy.m,分别。

simParameters。位置= simParameters.GNBPosition;gNB = hNRGNB (simParameters);%创建gNB节点%创建并添加调度程序转变(simParameters.SchedulerStrategy)情况下“农达”轮询调度程序Scheduler = HNRScheduleRoundrobin(SimParameters);情况下“PF”%比例公平调度调度器= hNRSchedulerProportionalFair (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.Ufudistance(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:));结尾%设置逻辑信道(simParameters lchInfoIdx = 1:大小。rlcChannelConfigStruct = table2struct(simParameters. config, 1);RLCChannelConfig (lchInfoIdx:));ueIdx = simParameters.RLCChannelConfig.RNTI (lchInfoIdx);%在gNB和UE上设置逻辑通道gNB。configureLogicalChannel (ueIdx rlcChannelConfigStruct);问题{ueIdx}。configureLogicalChannel (ueIdx rlcChannelConfigStruct);结尾%将数据流量模式生成器添加到GNB和UE节点appidx = 1:size(simparameters.appconfig,1)device = simparameters.appconfig.hostdevice(appidx);rnti = simparameters.appconfig.rnti(appidx);lcid = simparameters.appconfig.lcid(appidx);catchetsize = simparameters.appconfig.packetsize(appidx);packetinterval = simparameters.appconfig.packetinterval(appidx);%使用命令计算开-关流量模式的数据速率(kbps)%包大小(字节)和包间隔(毫秒)Datarate = CEIL(1000 / PacketInterval)*数据包* 8E-3;%限制生成的应用报文大小为最大RLC%SDU大小。最大支持的RLC SDU万博1manbetx大小为9000字节如果packetSize = 9000;结尾%创建开关网络流量模式的对象,并将其添加到%指定UE。该对象在UE上生成上行链路数据流量如果设备== 1 || device == 2 ulApp = networkTrafficOnOff(“PacketSize”,包,'generatepacket',真的,...'准时', simParameters。NumFramesSim / 100,“停止时间”0,'数据速率', dataRate);问题{rnti}。addApplication (rnti lcid ulApp);结尾%为指定的开关网络流量模式创建一个对象% UE,并将其加入gNB。产生下行数据%用于终端的gNB流量如果设备== 0 || device == 2 dlApp = networkTrafficOnOff(“PacketSize”,包,'generatepacket',真的,...'准时', simParameters。NumFramesSim / 100,“停止时间”0,'数据速率', dataRate);gnb.adapplication(RNTI,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;numSymbolsSim = numSlotsSim * 14;%以符号持续时间为单位的模拟时间%在模拟中执行所有符号symbolNum = 1: tick粒度:numSymbolsSim如果mod(symbolNum - 1,14) == 0 slotNum = slotNum + 1;结尾%运行gNB的MAC和PHY运行(gNB);%运行ue的MAC和PHYUEIDX = 1:SimParameters.numuesrun(UEs{ueIdx});结尾% RLC日志记录(仅在插槽边界)如果(simParameters。SchedulingType == 1 && mod(symbolNum, 14) == 0)SchedulingType = = 0&& mod(symbolNum-1, 14) == 0) logCellRLCStats(simRLCLogger, gNB, UEs);结尾%Mac Logging.logcellschedulingstats(simschedulinglogger,symbolnum,gnb,ues);%的可视化检查槽边界如果symbolNum > 1 && ((simParameters. simparameter))SchedulingType == 1 && mod(symbolNum, 14) == 0)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结尾结尾%高级计时器为GNB和UE的Ticks 14个符号advanceTimer (gNB tickGranularity);UEIDX = 1:SimParameters.numuesadvanceTimer(UEs{ueIdx}, tickGranularity);结尾结尾

仿真可视化

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

  • 在PUSCH和PDSCH带宽上显示终端的CQI值:您可以启用此可视化日志记录和可视化配置部分。有关详细信息,请参见中“通道质量可视化”图形描述NR PUSCH FDD调度的例子。

  • 向UES显示资源网格分​​配:二维时频网格显示终端的资源分配情况。您可以在日志记录和可视化配置部分。有关详细信息,请参阅“资源网格分​​配”图中NR PUSCH FDD调度的例子。

  • 显示UL调度度量图:四块显示在“上行调度性能指标”图代表:UL吞吐量(每个问题和细胞),UL goodput(每个问题和细胞),资源之间共享比例问题(总UL的资源)来传达调度的公平性,并等待UL buffer-status问题显示问题是否能够得到足够的资源。最大可实现的数据率值为UL吞吐量显示在吞吐量和货物图的虚线。性能指标图为每个metricsStepSize槽。

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

  • 显示RLC指标图:“RLC度量标准可视化”图显示了每个UE的RLC层(每个逻辑信道)发送的字节数。RLC度量标准绘制每一个更新metricsStepSize槽。

模拟日志

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

时间步骤日志:DL和UL时间步长日志格式相同。有关日志格式的详细信息,请参见“模拟日志”一节NR PUSCH FDD调度

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

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

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

  • isLogReplay对模拟日志的重放为真。

  • isLogReplay分析某一特定帧的细节。在“资源网格分配”窗口中,输入帧号以可视化整个帧的资源分配。这里输入的帧号也控制“通道质量可视化”图的帧号。

%获取日志simulationLogs =细胞(1,1);logInfo =结构('dltimesteplogs',[],'ultimesteplogs',[],“SchedulingAssignmentLogs”[],“RLCLogs”[]);[logInfo。DLTimeStepLogs logInfo。ULTimeStepLogs] = getSchedulingLogs(simSchedulingLogger); logInfo.SchedulingAssignmentLogs = getGrantLogs(simSchedulingLogger);%调度分配日志logInfo。rlclogs.= getRLCLogs(simRLCLogger); simulationLogs{1} = logInfo; save(simParameters.ParametersLogFile,“simParameters”);%将模拟参数保存到mat文件中保存(simParameters。SimulationLogFile,'simulationlogs');%保存仿真日志在Mat文件中

进一步的探索

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

自定义调度

您可以修改已有的调度策略,以实现自定义的调度策略。执行以下步骤来完成此任务。

创建自定义计划程序类

创建一个新课程自定义..和继承hNRScheduler.m.实现类的构造函数来调用基类构造函数,如下所示。的构造函数hNRSchedulerRoundRobin.mHNRSchedulerProportionalfair.m.hNRSchedulerBestCQI.m更多细节。

功能obj = customStrategy(param) obj = obj@hNRScheduler(simParameters);%调用超类构造函数来初始化属性初始化特定于此自定义调度策略的任何属性结尾

实现自定义UL调度

覆盖sentureulresourcesslot.通过在类中实现基本类的功能自定义...函数。

功能uplinkGrants = scheduleULResourcesSlot(obj, slotNum)%实现自定义UL调度以填充输出'上行值'结尾

第一次输入obj.是自定义调度程序对象。凭借继承,它包含基类的上下文hNRScheduler.m这可以用作占用调度决策的输入。第二个输入slotNum是正在调度UL资源的10ms帧中的槽位号。注意,UL调度器运行的不是当前槽,而是正在调度的槽。使用上下文obj.,执行自定义调度并填充输出upladgrants.此功能具有有效的UL调度分配数组。upladgrants.可以每个UE最大一分配。该阵列中的每个元素都是UE的PUSCH分配。此外,根据在UL分配中分配的HARQ进程ID,更新UL HARQ进程的上下文。看看sentureulresourcesslot.功能在hNRScheduler.m更多细节。

实现自定义DL调度

遵循自定义UL调度之类的过程来覆盖scheduleDLResourcesSlot通过在类中实现基本类的功能自定义...函数。

创建并安装自定义调度程序

要在本例中使用自定义调度器,请创建它的对象并将其安装到gNB和UEs设置部分。

调度器= customScheduler (simParameters);Addscheduler(GNB,调度程序);添加调度程序到gNB

使用5G Toolbox™物理层

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

根据所选择的调度策略,本示例展示了gNB将UL和DL资源分配给多个终端的过程。资源网格的运行时可视化显示提供了关于分配给每个UE的RBs和分配给传输的HARQ进程ID的详细信息。基于吞吐量和货量、资源共享公平性和终端上挂起缓冲区状态的运行时图,分析了终端和终端的UL和DL调度性能。通过使用保存的日志进行更彻底的后模拟分析,可以详细地了解在每个槽上发生的操作。

使用RLC我

您还可以通过修改输入结构字段,将RLC实体的操作模式从UM切换到确认模式(AM)EntityTypeSeqNumFieldLengthconfigureLogicalChannel功能HNRNode.m..设置EntityType到3和SeqNumFieldLength12岁或18岁。你也可以添加和设置以下字段到输入结构,以探索RLC AM功能:

  • PollRetransmitTimer: RLC AM实体的发送端用来重传轮询的定时器

  • PollPDU:RLC AM实体的​​发送侧使用的参数触发基于PDU的轮询

  • Pollbyte.: RLC AM实体发送端根据SDU字节数触发轮询的参数

  • MaxRetransmissions: RLC SDU的最大重传数,包括它的段

  • StatusProhibitTimer:RLC AM实体的​​接收方使用的计时器,以禁止频繁传输状态PDU

附录

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

参考文献

[1]3GPP TS 38.104。“NR;基站(BS)无线电传输和接收。“第三代合作伙伴计划;技术规范集团无线电接入网络

[2]3GPP TS 38.214。“NR;物理层数据用于数据。“第三代合作伙伴计划;技术规范集团无线电接入网络

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

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

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

相关的话题