主要内容

NR FDD调度性能评估

此示例模型调度下行链路(DL)和上行链路(UL)资源,并测量频分双工(FDD)模式下的网络性能。该示例包括三种不同的调度策略,并显示如何集成自定义调度程序。为了评估具有不同数据流量模式的网络性能,该示例还通过逻辑信道优先级(LCP)过程在未确认的模式(RLC-UM)中模拟无线电链路控制层。为了模拟PHY,使用没有任何信号处理的基于概率的柱柱物理(PHY)层。您可以切换到5G Toolbox™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个连续插槽。

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调度。

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

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

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

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

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

场景配置

设置模拟参数。

RNG('默认');%重置随机数发生器simparameters = [];%清除模拟参数simParameters。NumFramesSim = 100;10 ms帧数的仿真时间simparameters.schedulingtype = 0;%设置值为0(基于插槽调度)或1(基于符号调度)。%模拟终端数。假设终端具有顺序无线电%网络临时标识符(RNTIs)从1到NumUEs。如果你改变%数量的UE,确保SimParameters的长度等于NUMUESsimParameters。NumUEs = 4;simParameters。UEDistance = [100 250 700 750];来自GNB的UE的距离(以米为单位)%通道带宽设置为30mhz,子载波间距设置为15%千赫定义在3GPP TS 38.104节5.3.2。完整的UL和假设为PUSCH和PDSCH分配了% DL带宽。的假设% UL和DL载波具有对称通道%的带宽simparameters.dlbandwidth = 30e6;%赫兹simParameters。ULBandwidth = 30 e6;%赫兹simParameters。NumRBs = 160;simParameters。SCS = 15;%千赫simparameters.dlcarrierfreq = 2.635e9;%赫兹simParameters。ULCarrierFreq = 2.515 e9;%赫兹%配置参数以更新gNB和DL的UL通道质量GNB和UE处的%信道质量。信道条件是定期的CQIDelta每个channelUpdatePeriodicity改进或恶化的%%秒为一个终端的所有RBs。是否有特定的通道条件%UE改善或恶化是随机确定的% RBCQI = RBCQI +/- CQIDeltasimParameters。ChannelUpdatePeriodicity = 0.2;%秒simparameters.cqidetta = 2;%映射到从GNB的距离(以米为单位)和最大值%可实现的UL CQI值(第二列)。例如,如果UE是700远离GNB的%米,可以实现最大的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]以计算平均值UE在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的百分比

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

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

  • LogicalChannelid - 逻辑信道标识符。

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

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

  • maxtxbuffersdus - 最大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)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)坐标%在10毫秒帧中选择的插槽持续时间和插槽数量slotduration = 1 /(simparameters.scs / 15);%的女士numslotsframe = 10 / slotduration;%每10毫秒帧的插槽数numslotssim = simparames.numframessim * numslotsframe;%模拟中的槽数%根据终端距离计算可达到的最大CQI值%GNB.maxuecqis = zeros(simparameters.numues,1);%存储ue可实现的最大CQI值为了ueIdx = 1: simParameters。NumUEs%基于UE来自GNB的距离,找到匹配的行%cqivsdistance mapping.matchingRowIdx =找到(simParameters。CQIvsDistance(:, 1) > simParameters.UEDistance(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值的限制%到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:);结尾%以存储每个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对象,初始化终端的通道质量信息,在gNB和UE上建立逻辑通道。辅助类hNRGNB.mHNRUE.M.分别创建GNB和UE节点,包含RLC和媒体访问控制(MAC)层。对于Mac层,hNRGNB.m使用helper类HNRGNBMAC.M.实现gNB MAC功能HNRUE.M.用途HNRuemac.m.实现终端MAC功能。调度程序在hNRSchedulerRoundRobin.m(RR),hNRSchedulerProportionalFair.m(PF),hNRSchedulerBestCQI.m医院药学部(最佳)。所有的调度器都继承自基类hNRScheduler.m其中包含核心调度功能。对于RLC层,两者都有hNRGNB.mHNRUE.M.使用hNRUMEntity.m实现RLC发射器和接收器的功能。UE和GNB的Passthrough PHY层hNRUEPassThroughPhy.mHNRGNBPASSTHROUCHPHY.M.M., 分别。

simparameters.position = simparameters.gnbposition;gnb = hnrgnb(simparameters);%创建GNB节点%创建并添加调度程序开关(SimParameters.Schedulerstrategy)情况下'rr'%循环调度程序Scheduler = HNRScheduleRoundrobin(SimParameters);情况下“PF”%比例公平调度员Scheduler = 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.UEDistance(ueIdx) 0 0];UE的%位置ue {ueIdx} = hNRUE(simParameters, ueIdx);问题{ueIdx}。PhyEntity = hNRUEPassThroughPhy(simParameters, ueIdx);%添加直通PHYconfigurephy(ue {ueidx},simparameters);setphyInterface(UE {UEIDX});%将接口设置为phy图层%在gNB上初始化UL CQI值UpdateChannelquality(GNB,SimParameters.InitialChannelQualityul(UEIDX,:),1,UEIDX);UL的%1%初始化GNB和UE处的DL CQI值。DL CQI值%帮助gNB进行调度,UE用于包错误概率估计UpdateChannelquality(GNB,SimParameters.InitialChannelqualityDL(UEIDX,:),0,UEIDX);%0对于DLUpdateChannelquality(UES {UEIDX},SimParameters.InitialChannelqualityDL(UEIDX,:));结尾%设置逻辑通道为了lchinfoidx = 1:size(simparameters.rlcchannelconfig,1)rlcchannelconfigstruct = table2struct(simparameters.rlcchannelconfig(lchinfoidx,:));UEIDX = SimParameters.rlcchannelconfig.rnti(lchinfoidx);%设置GNB和UE的逻辑通道gnb.configurelogicalChannel(UEIDX,RlcchannelConfigstruct);UES {UEIDX} .configurelogicalChannel(UEIDX,RLCChannelConfigstruct);结尾%在gNB和UE节点中添加数据流量模式生成器为了(simParameters appIdx = 1:大小。1) device = simParameters.AppConfig.HostDevice(appIdx);rnti = simParameters.AppConfig.RNTI (appIdx);lcid = simParameters.AppConfig.LCID (appIdx);packetSize = simParameters.AppConfig.PacketSize (appIdx);packetInterval = simParameters.AppConfig.PacketInterval (appIdx);%计算开关流量模式的数据速率(以kbps)%包大小(字节)和包间隔(毫秒)dataRate = cell (1000/packetInterval) * packetSize * 8e-3;%将生成的应用程序包的大小限制为最大RLC%信号分配装置的尺寸。RLC SDU最大支持9金宝app000字节如果数据包> 9000包= 9000;结尾%创建用于开关网络流量模式的对象并将其添加到%指定的问题。在终端上生成上行数据流量如果设备== 1 ||Device == 2 Ulapp = NetworkTrafficonoff(“PacketSize”,包,'generatepacket', 真的,......'准时',simparames.numframessim / 100,“停止时间”,0,“DataRate”, dataRate);UES {RNTI} .AddApplication(RNTI,LCID,ULAPP);结尾%为指定的开关网络流量模式创建一个对象% UE,并将其加入gNB。产生下行数据%用于终端的gNB流量如果设备== 0 ||设备== 2 dlapp = networktrafficonoff(“PacketSize”,包,'generatepacket', 真的,......'准时',simparames.numframessim / 100,“停止时间”,0,“DataRate”, dataRate);gNB。addApplication (rnti lcid dlApp);结尾结尾%设置UL和DL数据包分发机制simparameters.maxreceivers = simparameters.numues;%创建DL数据包分发对象dlPacketDistributionObj = hNRPacketDistribution(simParameters, 0);%0对于DL%创建UL包分发对象ulpacketdistributionobj = hnrpacketdistribution(simparameters,1);UL的%1hnrsetuppacketdistribution(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: tick粒度:numSymbolsSim如果mod(symbolnum  -  1,14)== 0 slotnum = slotnum + 1;结尾%运行gNB的MAC和PHY运行(GNB);%运行ue的MAC和PHY为了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.Numues Advancetimer(UE {UEIDX},秒表);结尾结尾

模拟可视化

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

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

  • 资源网格分配到终端的显示:2D时频网格显示对UE的资源分配。您可以启用此可视化日志和可视化配置部分。有关详细信息,请参见中“资源网格分配”图NR PUSCH FDD调度的例子。

  • 显示UL调度指标图:在“上行链路调度程序性能度量标准”图中显示的四个图表示:UL吞吐量(每个UE和单元格),UL吞吐量(每个UE和单元格),资源共享UE之间的百分比(超出总UL资源)来传达公平性调度和挂起UL缓冲区 - UE的状态,以显示UE是否获得足够的资源。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.mhNRSchedulerProportionalFair.mhNRSchedulerBestCQI.m更多细节。

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

实现自定义UL调度

覆盖scheduleULResourcesSlot在类中实现基类的函数自定义...功能。

函数uplinkgrants = sentureulresourcesslot(obj,slotnum)%实现自定义UL调度,以填充输出“uplinkGrants”结尾

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

实现自定义DL调度

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

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

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

Scheduler = CustomScheduler(SimParameters);Addscheduler(GNB,调度程序);添加调度程序到gNB

使用5g工具箱™物理层

您还可以通过使用创建PHY对象来从直通PHY层切换到5G Toolbox™物理层处理HNRGNBPHY.M.hNRUEPhy.m.有关更多详细信息,请参阅“GNB和UES设置”部分基于物理层集成的NR电池性能评估

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

使用rlc上午

您还可以通过修改输入结构字段将RLC实体的操作模式从UM切换到确认模式(AM)entitytype.SeqNumFieldLength在里面configurelogicalChannel.功能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]3 gpp TS 38.321。“NR;介质访问控制(MAC)协议规范。第三代合作伙伴计划;技术规范集团无线电接入网络

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

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

相关话题