主要内容

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个插槽的资源。所有UE的PUSCH准备时间能力被认为是大于1个插槽(14个符号)但小于2个插槽(28个符号)。

  • Run-1:当调度程序在Slot-A开始时运行时,它将从Slot-C开始的3个插槽,因为对于插槽A和Slot-B,UE不会获得足够的PUSCH准备时间(UE获得0的时间在Slot-B开始时的插槽A和14个符号开始时的符号)。对于Slot-C,UES获得PUSCH制剂的28个符号,这满足了PUSCH准备时间能力。因此,在此运行中调度Slot-C,D和E.

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

DL Scheduler.

第一个插槽,其中P.在运行中要安排的插槽是下一个下一个插槽。

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

  • Run-2:当调度程序在SLOT-D开始时运行时,它会调度3个连续的槽位槽-e,f和g。

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

假设所需的控制分组被发送出频带,而无需传输资源。控制数据包是UL分配,DL分配,缓冲状态报告(BSR)和PDSCH反馈。

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

此示例模型:

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

  • 在资源块组(RBG)方面的频率域资源的非连续分配。

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

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

  • 多个逻辑信道支持不同类型的应用程序。金宝app

  • 逻辑信道优先级(LCP)以将接收的分配分配UE和DL的每个UE之间的逻辑信道。

场景配置

设置模拟参数。

rng (“默认”);%重置随机数发生器simparameters = [];%清除模拟参数simparameters.numframessim = 100;10 ms帧数的仿真时间simparameters.schedulingtype = 0;%将值设置为0(基于时隙的调度)或1(基于符号的调度)模拟中%的UE数。假设UES有顺序无线电%网络临时标识符(RNTI)从1到NUMUES。如果你改变了%终端个数,请确保simParameters的长度。UEDistance等于NumUEssimparameters.numues = 4;simparameters.upedistance = [100 250 700 750];来自GNB的UE的距离(以米为单位)%将信道带宽设置为30 MHz和子载波间距(SCS)至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;%kHz.simparameters.dlcarrierfreq = 2.635e9;%赫兹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 ms帧中的插槽数simParameters。SchedulerPeriodicity = 4;simParameters。SchedulerStrategy =“PF”%支金宝app持的调度策略:'pf','rr'和'bestcqi'在范围内的%移动平均参数[0,1]以计算平均值%数据率为一个终端在UL和DL方向。该值用于PF调度策略。参数值越接近1表示越多%权重在瞬时数据速率上。参数值接近0%暗示过去数据速率的重量更多% AverageDataRate = ((1 - MovingAvgDataRateWeight) * PastDataRate) + (MovingAvgDataRateWeight * InstantaneousDataRate)simparameters.movi​​ngavgdataratewight = 0.5;%GNB可确保在UES PUSCHPREPTIME之前收到PUSCH分配传输时间的%simparameters.puschpreptime = 200;%在微秒%最大RB分配给UE中的UE,用于UL和DL%传输(限制适用于新的PUSCH和PDSCH任务和%不是重传)simParameters。RBAllocationLimitUL = 100;PUSCH的百分比simparameters.rballocationlimitdl = 100;PDSCH的百分比

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

  • RNTI - 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 -连续两次报文生成的间隔时间(单位毫秒)。

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

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

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

  • LCID - 逻辑通道标识符。

加载('nrfddappconfig.mat');simParameters。AppConfig = AppConfig;

日志记录和可视化配置

%参数CQivisualization和RBVIsualization控制显示这些可视化的百分比:(i)rbs(ii)rb分配的CQI可视化%的可视化。默认情况下,这些图是禁用的。你可以启用它们%通过设置为“真”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)坐标所选SCS的%插槽持续时间和10 ms帧中的插槽数slotduration = 1 /(simparameters.scs / 15);百分比numslotsframe = 10 / slotduration;%每10毫秒帧的插槽数numSlotsSim = simParameters。NumFramesSim * numSlotsFrame;仿真中的斜槽数量%基于它们的距离计算UE的最大可实现的CQI值%GNB.maxuecqis = zeros(simparameters.numues,1);%存储ue可实现的最大CQI值为了UEIDX = 1:SimParameters.numues%基于UE来自GNB的距离,找到匹配的行%cqivsdistance mapping.matchingrowidx = find(simparameters.cqivsdistance(:, 1)> simparameters.upedistance(UEIDX));如果isempty(matchingRowIdx) maxecqis (ueIdx) = simParameters. isempty(matchingRowIdx)CQIvsDistance (, 2);别的maxuecqis(ueidx)= simparameters.cqivsdistance(matchingrowidx(1),2);结尾结尾%间隔,其数量可视化更新%插槽。由于一个插槽是模拟的最佳时间粒度,使%确定MetricsStepsize是一个整数simParameters。= cell (numSlotsSim / simParameters.NumMetricsSteps);如果mod(numslotssim,simparameters.nummetricssteps)〜= 0%如果NumSlotsSim不是,则更新NumMetricsSteps参数%完全可被它划分simparameters.nummetricssteps =楼层(numslotssim / simparameterm.metricsstepsize);结尾%将初始UL和DL信道质量定义为N逐个P矩阵,%'n'是UE的数量和'p'是载体中的RB数量%带宽。给出每个RB的CQI的初始值,每个UE%,并受相应可达到的最大CQI值的限制从GNB到UE的距离simparameters.initialChannelqualityul = Zeros(SimParameters.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,:);结尾%以存储每个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.m.医院药学部(最佳)。所有的调度器都继承自基类HNRScheduler.m.其中包含核心调度功能。对于RLC层,都是hNRGNB.mHNRUE.M.hNRUMEntity.m实现RLC发射器和接收器的功能。UE和GNB的Passthrough PHY层hnruepassthroughphy.m.m.HNRGNBPASSTHROUCHPHY.M.M., 分别。

simparameters.position = simparameters.gnbposition;gnb = hnrgnb(simparameters);%创建GNB节点%创建和添加计划程序转变(SimParameters.Schedulerstrategy)情况下'rr'轮询调度程序Scheduler = HNRScheduleRoundrobin(SimParameters);情况下“PF”%比例公平调度员Scheduler = HNRSchedulerProportionalFair(SimParameters);情况下“BestCQI”最好的CQI调度程序Scheduler = 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.Position = [SimParameters.Ufudistance(UEIDX)0 0];UE的%位置ue {ueIdx} = hNRUE(simParameters, ueIdx);问题{ueIdx}。PhyEntity = hNRUEPassThroughPhy(simParameters, ueIdx);%加入passthrough phyconfigurephy(ue {ueidx},simparameters);setphyInterface(UE {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,:));结尾%设置逻辑信道为了(simParameters lchInfoIdx = 1:大小。rlcChannelConfigStruct = table2struct(simParameters. config, 1);RLCChannelConfig (lchInfoIdx:));ueIdx = simParameters.RLCChannelConfig.RNTI (lchInfoIdx);%设置GNB和UE的逻辑通道gnb.configurelogicalChannel(UEIDX,RlcchannelConfigstruct);UES {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金宝app大小为9000字节如果数据包> 9000包= 9000;结尾%创建用于开关网络流量模式的对象并将其添加到%指定UE。该对象在UE上生成上行链路数据流量如果设备== 1 || device == 2 ulApp = networkTrafficOnOff(“PacketSize”,包,'generatepacket',真的,......'准时',simparames.numframessim / 100,“停止时间”,0,'数据速率', 数据速率);UES {RNTI} .AddApplication(RNTI,LCID,ULAPP);结尾%为指定的开关网络流量模式创建一个对象%UE并将其添加到GNB中。该对象生成下行链路数据为UE的GNB上的%流量如果设备== 0 || device == 2 dlApp = networkTrafficOnOff(“PacketSize”,包,'generatepacket',真的,......'准时',simparames.numframessim / 100,“停止时间”,0,'数据速率', 数据速率);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层基于1毫秒定时器触发执行其预定的操作。

%为Mac(UL和DL)调度信息可视化和日志创建一个对象simSchedulingLogger = hNRSchedulingLogger (simParameters);%创建RLC统计日志记录对象simrlclogger = hnrrlclogger(simparameters,lchinfo);%为RLC和MAC指标创建可视化对象Visualizer = HNRMetricsVisualizer(SimParameters,'rlclogger',simrlclogger,“LCHInfo”,lchinfo,'麦克洛格',simschedulinglogger);%运行处理循环slotnum = 0;numsymbolssim = numslotssim * 14;以符号持续时间为单位的仿真时间%在模拟中执行所有符号为了symbolnum = 1:划分:numsymbolssim如果mod(symbolnum  -  1,14)== 0 slotnum = slotnum + 1;结尾%运行gNB的MAC和PHY运行(GNB);%运行Mac和Phy的UE为了UEIDX = 1:SimParameters.Numues运行(UE {UEIDX});结尾%RLC日志记录(仅在插槽边界)如果(SimParameters.schedulingtype == 1 && mod(symbolnum,14)== 0)||(SimParameters.schedulingtype == 0 && mod(symbolnum-1,14)== 0)logcellrlcstats(Simrlcogger,GNB,UE);结尾%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);结尾结尾%高级计时器为GNB和UE的Ticks 14个符号Advancetimer(GNB,划分);为了UEIDX = 1:SimParameters.numuesadvanceTimer(UEs{ueIdx}, tickGranularity);结尾结尾

模拟可视化

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

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

  • 向UES显示资源网格分​​配:2D时频网格显示对UE的资源分配。您可以启用此可视化日志记录和可视化配置部分。有关详细信息,请参阅“资源网格分​​配”图中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。仿真后,打开文件加载dltimesteplogs.ultimesteplogs.schedulingassignmentlogs., 和rlclogs.在工作区中。

时间步骤日志:DL和UL时间步数日志都遵循相同的格式。有关日志格式的详细信息,请参阅“模拟日志”部分NR PUSCH FDD调度

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

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

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

  • islogreplay.为代码重播模拟日志。

  • islogreplay.假到分析特定帧的细节。在“资源网格分​​配”窗口中,输入帧号以可视化整个帧的资源分配。此处输入的帧号码控制“通道质量可视化”图的帧编号。

%获取日志Simulationlogs = Cell(1,1);loginfo = struct('dltimesteplogs',[],'ultimesteplogs',[],'schedulingassignmentlogs'[],'rlclogs',[]);[loginfo.dltimesteplogs,loginfo.ultimesteplogs] = getSchedulinglogs(SimschedulingLogger);loginfo.schedulingassignmentlogs = getgrantlogs(simschedulinglogger);%调度分配日志loginfo.rlclogs = getrlclogs(simrlclogger);SimulationLogs {1} = LoginFo;保存(SimParameters.ParametersLogfile,'simparameters');%在MAT文件中保存模拟参数保存(SimParameters.simulationLogfile,'simulationlogs');%保存仿真日志在Mat文件中

进一步的探索

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

定制调度

您可以修改现有的调度策略以实现自定义。Peform以下步骤完成此操作。

创建自定义计划程序类

创建一个新课程自定义..并继承自从HNRScheduler.m.。实现类的构造函数来调用基类构造函数,如下所示。的构造函数hnrschedulerroundrobin.m.HNRSchedulerProportionalfair.m.hnrschedulerbestcqi.m.m.更多细节。

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

实现自定义UL调度

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

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

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

实现自定义DL调度

按照定制UL调度这样的过程来覆盖scheduleDLResourcesSlot通过在类中实现基本类的功能自定义..。功能。

创建并安装自定义计划程序

要在此示例中使用自定义调度程序,请创建其对象并在GNB上安装它gNB和UEs设置部分。

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

使用5G Toolbox™物理层

您还可以通过使用phy对象从Passthrough PHY层切换到5G工具箱™物理层处理hNRGNBPhy.mhNRUEPhy.m。有关更多详细信息,请参阅“GNB和UES设置”部分NR细胞性能评估与物理层集成

基于所选择的调度策略,该示例显示了GNB向多个UE的UL和DL资源的分配。资源网格的运行时可视化显示提供关于分配给每个UE的RB的详细信息以及分配用于传输的HARQ进程ID。基于吞吐量和良品,资源共享公平性以及UE上的待处理缓冲区状态的运行时曲线分析UL和DL调度性能。使用保存的日志更全面的仿真分析,提供了每个插槽发生的操作的详细图片。

使用rlc上午

您还可以通过修改输入结构字段将RLC实体的操作模式从UM切换到确认模式(AM)EntityTypeseqnumfieldlength.configureLogicalChannel功能HNRNode.m.。设定EntityType到3和seqnumfieldlength.12岁或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]3GPP TS 38.331。“NR;无线电资源控制(RRC)协议规范。“第三代合作伙伴计划;技术规范集团无线电接入网络

相关话题