本示例以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.movingavgdataratewight = 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和UE对象,初始化UE的信道质量信息,并在GNB和UE处设置逻辑信道。辅助课程hNRGNB.m和HNRUE.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.m和HNRUE.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
您还可以通过使用phy对象从Passthrough PHY层切换到5G工具箱™物理层处理hNRGNBPhy.m和hNRUEPhy.m。有关更多详细信息,请参阅“GNB和UES设置”部分NR细胞性能评估与物理层集成。
基于所选择的调度策略,该示例显示了GNB向多个UE的UL和DL资源的分配。资源网格的运行时可视化显示提供关于分配给每个UE的RB的详细信息以及分配用于传输的HARQ进程ID。基于吞吐量和良品,资源共享公平性以及UE上的待处理缓冲区状态的运行时曲线分析UL和DL调度性能。使用保存的日志更全面的仿真分析,提供了每个插槽发生的操作的详细图片。
您还可以通过修改输入结构字段将RLC实体的操作模式从UM切换到确认模式(AM)EntityType
和seqnumfieldlength.
在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
该示例使用这些辅助功能和类:
Hwirelessnode.m.:无线节点基类
HNRNode.m.:GNB和UE的NR节点基类
hNRGNB.m:GNB节点功能
HNRUE.M.: UE节点功能
helperApplication.m:应用层功能
hnrrlcentity.m: RLC UM和AM实体的基类
hNRUMEntity.m:RLC UM功能
hnramentity.m:RLC AM功能
hnrrlcdatapduinfo.m.m.:创建RLC PDU信息对象
hNRRLCBufferStatus.m:生成RLC缓冲区状态信息对象
hNRRLCDataReassembly.m:创建RLC SDU重新组装信息对象
hNRMAC.m:NR MAC基类功能
hNRGNBMAC.m:GNB MAC功能
HNRuemac.m.:UE MAC功能
HNRScheduler.m.:核心MAC调度器功能
hnrschedulerbestcqi.m.m.:实现最佳CQI调度策略
HNRSchedulerProportionalfair.m.:实施比例公平调度策略
hnrschedulerroundrobin.m.:实现循环调度策略
HNRMACBSR.M.:生成缓冲区状态报告
hNRMACBSRParser.m:解析缓冲区状态报告
hnrmacsubpdu.m.m.:生成Mac Subpdu
hNRMACPaddingSubPDU.m:使用填充生成Mac Subpdu
HNRMACMULTIPLEP.M.:生成Mac PDU
hnrmacpduparser.m.:Parses Mac PDU
Hnewharqprocesses.m.:创建新的HARQ进程
hUpdateHARQProcess.m:更新HARQ进程
hnrphyInterface.m.:PHY层接口类
HNRGNBPASSTHROUCHPHY.M.M.:GNB Passthrough PHY层
hnruepassthroughphy.m.m.:UE Passthrough Phy层
hNRGNBPhy.m:GNB PHY功能
hNRUEPhy.m:UE PHY功能
hNRPUSCHInfo.m:PUSCH信息结构通过MAC传递给PHY层
hNRPDSCHInfo.m:PDSCH信息结构通过MAC传递给PHY层
hnrrxindicationInfo.m.:通过PHY层传递给Mac的信息结构以及Mac PDU
hNRUplinkGrantFormat.m:UL格式格式
hnrdownlinkgrantformat.m.: DL授权格式
hnrpacketdistribution.m.:创建报文分发对象
hnrphyrxbuffer.m.:创建PHY信号接收缓冲区对象
hSkipWeakTimingOffset.m:跳过正时偏移估计,相关性弱
hnrrlclogger.m.:实现RLC统计日志记录和可视化功能
hnrschedulinglogger.m:实现调度信息日志记录和可视化功能
hnrphylogger.m.:实现上行链路和下行链路块错误率记录和可视化功能
hNRSetUpPacketDistribution.m:设置包分发功能
hnrpacketwriter.m.:捕获MAC数据包
hnrpacketinfo.m.:捕获MAC数据包的元数据格式
hNRMetricsVisualizer.m:实现度量标准可视化功能
nrpostsimvisualization.m.:后仿真可视化脚本
[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)协议规范。“第三代合作伙伴计划;技术规范集团无线电接入网络。