主要内容

NR PUSCH FDD调度

本示例通过评估在频分双工(FDD)模式与无线电链路控制(RLC)层的上行链路(UL)调度策略集成的吞吐量和资源共享公平性的性能。UL调度策略的物理上行链路共享信道资源(PUSCH)的资源分配给一组连接到GNB用户设备(UE)的。该示例使用RLC层和直通物理(PHY)层的非确认模式(UM)。直通PHY层不涉及任何物理层处理,并采用基于概率的方式来模型包接收失败。该示例会记录在模拟的事件,也显示了运行时的可视化观察网络性能。

介绍

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

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

调度程序运行每个P.插槽分配UL资源,在哪里P.是调度程序的配置周期性。在每个运行中,计划的时隙数等于调度程序运行的周期性,P..第一个插槽,其中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个连续插槽。

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

假设两个控制数据包,缓冲状态报告(BSR)和UL分配,而不需要传输资源的频带。

解调参考信号(DM-RS)在此示例中未建模。但是,在PUSCH分配中,将一个符号保持未使用。

这个示例模型:

  • 基于插槽和符号的UL调度。UL调度员确保终端获得所需的PUSCH准备时间。

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

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

  • 异步UL混合自动重复请求(HARQ)机制。

  • 使用UL分配中存在的新数据指示符(NDI)标志UE的UL接收成功或失败检测。

  • 多个逻辑信道支持不同的应用程序流量模式。金宝app

  • UE处的逻辑信道优先级(LCP)以在逻辑信道中分发所接收的UL分配。

  • 定期UL应用程序流量模式。

  • RLC以UM模式运行。

场景配置

有关模拟,请设置这些关键配置参数:

  • 模拟时间

  • UE的数

  • UE来自GNB的距离(影响UE的UL CQI值)

  • 在终端上应用流量模式生成流量

  • 在终端和gNB上分别为Tx和Rx实体配置RLC

  • UE和GNB的逻辑信道配置

  • 调度策略:PF,最佳CQI,RR

  • UE发送的BSR的周期性通知GNB关于待处理的缓冲金额

  • 脓液准备时间为UE

  • 按资源块数量(RBs)计算的PUSCH带宽

  • 子载波间距

  • RBG大小配置类型

  • 初始UL信道质量及其更新机制

RNG('默认');%重置随机数发生器simparameters = [];%清除模拟参数simParameters。NumFramesSim = 200;10 ms帧数的仿真时间simparameters.schedulingtype = 0;%设置值为0(基于插槽调度)或1(基于符号调度)。模拟中%的UE数。假设UES有顺序无线电%网络临时标识符(RNTI)从1到NUMUES。如果你改变了%数量的UE,确保模拟参数%simparameters.uppatistance和simparameters.packetperiodicityues是%的长度数量等于NUMUES;和simparameters.packetsize,simParameters.RLCConfig和simParameters.LCHConfig的%属性%由等于numUEs的行数组成。simparameters.numues = 4;每个UE中的逻辑信道数量。如果更改数量%逻辑信道,确保模拟参数%simparameters.packetsize,simparameters.rlcconfig的属性和%simparameters.lchconfig由等于的列数由%numlogicalChannels。与数据无线承载相关联的逻辑信道%使用逻辑信道标识符(LCID)从4.因此,假设%逻辑信道具有从4到NumlogicalChannels + 3开始的LCID。simparameters.numlogicalChannels = 3;simparameters.upedistance = [100;250;700;750]% ue到gNB的距离(单位米)%设置UE的应用程序流量模式。例如,向量%在索引4元素值10表示,对于每个逻辑的UE-4的%通道,每10毫秒生成一个数据包simparameters.packetperiodicicitues = [30;20;30;10];%周期性在哪些UE生成的逻辑信道的分组(毫秒)%n逐个p矩阵表示UE生成的分组的大小%每个逻辑通道,其中“N”表示终端数量,“P”表示终端数量%表示逻辑信道的数量。位置(i,j)处的矩阵元素%表示由UE与RNTI 'I' 产生了用于LCID 'J + 3' 分组大小(以字节为单位)。%例如,索引(3,1)处的值12000表示分组UE-3为LCID 4生成的大小12000字节的百分比simParameters.PacketSizesUEs = [4000 6000 8000;500 8000 8000;12000 8000 4000;1000 8000 4000];%RLC配置rlcconfig的%每个属性必须是n逐个p矩阵,其中'n'表示UE的数量%和'P'表示逻辑通道的数量。位置的矩阵元素% (i, j)对应于一个带有RNTI 'i'和LCID 'j+3'的UE的属性值。每个UE用于其逻辑信道的%序列号(SN)字段长度(以位为单位)simparameters.rlcconfig.snfieldlength = [6 6 12;6 6 12;6 12 6;6 6 12];%重组计时器由每个UE以用于他们的逻辑信道被用于simparameters.rlcconfig.reassemblytimer = [5 10 15;5 5 10;5 5 5;5 10 15];的在Tx服务数据单元(SDU)%最大数目缓冲每个逻辑信道的(建模Tx缓存溢出)simparameters.rlcconfig.maxtxbuffersdus = [4 3 11;3 5 4;6 1 3;11 6 26];%逻辑信道(LCH)配置%LCHCONFIG的每个属性必须是n逐个p矩阵,其中'n'表示UE的数量%和'P'表示逻辑通道的数量。位置的矩阵元素% (i, j)对应于一个带有RNTI 'i'和LCID 'j+3'的UE的属性值。逻辑信道和逻辑信道组(LCG)ID之间的映射%simparameters.lchconfig.lcgid = [1 3 2;1 2 2;1 2 3;5 1 2];每个逻辑信道的%优先级simparameters.lchconfig.priority = [1 5 8;1 1 6;4 10 4;10 11 13];每个逻辑信道的%优先比特率(PBR)(每秒以千字节为单位)simparameters.lchconfig.pbr = [8 16 32;8 128 32;8 16 32;8 16 32];每个逻辑通道的%桶大小持续时间(BSD)(在MS中)simparameters.lchconfig.bsd = [5 10 50;5 20 20;5 5 5;5 10 20];%介质访问控制(Mac)配置%在插槽数量中设置调度程序运行周期性。价值必须是%小于10 ms帧中的插槽数simParameters.SchedulerPeriodicity = 4;simparameters.schedulerstrategy ='pf';%支金宝app持的调度策略:'pf','rr'和'bestcqi'%的范围内移动平均的权重参数[0,1]计算UE的%平均数据速率。该值用于PF调度策略。较近1的%参数值意味着瞬时的重量% 数据速率。更接近0的参数值意味着过去的重量% 数据速率%Avaligageatarate =((1  -  overvavgdatarateweight)* Pastdatarate)+(overvgdataratewight * InstantanialYdatarate)simparameters.movi​​ngavgdataratewight = 0.5;simparameters.bsrperiodicity = 5;百分比simParameters。EnableHARQ = true;%标志来启用或禁用HARQ。如果禁用,没有重发simparameters.numharq = 16;每个UE中的HARQ进程数%PUSCH准备时间。GNB确保收到PUSCH分配% UEs PUSCHPrepTime提前传输时间simparameters.puschpreptime = 200;微秒内%%最大RBS分配给UE中的一个用于PUSCH传输的插槽(限制是%适用于新的PUSCH分配,而不是重新定义)simparameters.rballocationlimitul = 15;%PHY层和频道配置具有15 kHz子载波间距(SCS)的5 MHz频段%RB计数。完整假定%UL带宽配发用于PUSCHsimparameters.numrbs = 25;SimParameters.scs = 15;%kHz.simparameters.ulbandwidth = 5e6;%赫兹simParameters。ULCarrierFreq = 2.515 e9;%赫兹%将RBG大小配置设置为1(Configuration-1 RBG表)或2%(Configuration-2 RBG表),如3GPP TS 38.214部分所定义%5.1.2.2.1simParameters。RBGSizeConfig = 1;%配置参数以更新UE的通道条件。渠道每次Cqidetta都会定期改善%质量或恶化UE所有RB的%ChannelUpdatePeriodicity秒。是否渠道特定UE的%条件改善或恶化是随机的%确定:RBCQI = RBCQI +/- CQIDeltaSimparameters.ChannelupdatePeriodicity = 0.5;%秒simparameters.cqidetta = 1;%从GNB(以米为单位的第一列)和最大距离之间的映射%可实现的UL CQI值(第二列)。例如,如果UE是700远离GNB的%米,可以实现最大的CQI值10根据映射,%距离在[501,800]米范围内。放递减顺序增加的距离和可实现的CQI值减少% 命令simParameters。CQIvsDistance = [200 15;500 12;800年10;1000 8;1200 7];%日志和可视化配置%标志以启用或禁用运行时CQI可视化simparameters.cqivisualization = true;%标志以启用或禁用RB分配的运行时间可视化。如果启用,%,则用于基于槽调度它更新每帧(10ms),以显示RB对于最后帧的不同插槽的UE分配%。simparameters.rbvisualization = true;%输出度量标准图是在模拟期间更新NUMMetricsSteps的时间simparameters.nummetricssteps = 20;%MAT文件用于后仿真可视化simparameters.ParametersLogfile =.'simparameters';用于记录模拟参数的%simparameters.simulationLogfile =.'simulationlogs';用于记录模拟日志的%hNRULSchedulingValidateConfig(simParameters);%验证模拟配置

导出参数

基于主要配置参数,计算派生参数。

simparameters.ncellid = 1;%物理单元IDsimparameters.dlcarrierfreq = 2.635e9;%赫兹simParameters。DLBandwidth = 10 e6;%赫兹simParameters。GNBPosition = [0 0 0];GNB中的%位置(x,y,z)坐标所选SCS的%插槽持续时间和10 ms帧中的插槽数slotduration = 1 /(simparameters.scs / 15);在MS%插槽时间numslotsframe = 10 / slotduration;% 10ms帧内槽位数numslotssim = simparames.numframessim * numslotsframe;仿真中的斜槽数量%最大RLC SDU长度(以字节为单位)simparameters.maxrlcsdulength = 9000;%RLC实体方向。值0仅表示下行链路,1%仅表示UL,2表示UL和下行链路%方向。设置实体方向只有ULsimparameters.rlcconfig.entitydir = simer(simparameters.numues,simparameters.numlogicalChannels);%LCID(数据无线电承载的LCID从4开始)simparameters.lchconfig.lcid = in(simparameters.numues,simparameters.numlogicalchels)。*(4:4 + simparameters.numlogicalChannels-1);RLC记录器和Visualizer的%构造信息lchinfo = repmat(结构('rnti'[],'lcid'[],'entitydir',[]),[simparameters.numues 1]);为了idx = 1:simparameters.numues lchinfo(idx).rnti = idx;lchinfo(idx).lcid = simparameters.lchconfig.lcid(idx,:);lchinfo(idx).entitydir = simparameters.rlcconfig.entitydir(Idx,:);结尾基于从他们的距离的UE%查找最大可达到的CQI值%的gNBmaxuecqis = zeros(simparameters.numues,1);%以存储UE的最大可实现的CQI值为了ueIdx = 1: simParameters。NumUEs%根据UE到gNB的距离,找到匹配的行%cqivsdistance mapping.matchingrowidx = find(simparameters.cqivsdistance(:, 1)> simparameters.upedistance(UEIDX));如果isempty(matchingrowidx)maxuecqis(ueidx)= simparameters.cqivsdistance(结束,2);别的maxuecqis(ueidx)= simparameters.cqivsdistance(matchingrowidx(1),2);结尾结尾%将初始UL信道质量定义为n逐个p矩阵,%'n'是UE的数量和'p'是载体中的RB数量%带宽。给出每个RB的CQI的初始值,每个UE%随机,并受到相应的最大可实现的CQI值的限制%到UE到gNB的距离simparameters.initialChannelqualityul = Zeros(SimParameters.numues,SimParameters.numrbs);%将当前UL CQI值存储在RBS上的不同UE为了ueIdx = 1: simParameters。NumUEs%分配随机的CQI值的RB的,由最大可达到的CQI值的限制simparameters.initialChannelQualityul(UEIDX,:) = RANDI([1 maxuecqis(UEIDX)],1,SimParameters.numrbs);结尾%间隔,其数量可视化更新%插槽。确保MetricsStepsize是一个整数simparameters.metricsstepsize = ceil(numslotssim / simparameters.nummetricssteps);如果mod(numSlotsSim, simParameters.NumMetricsSteps) ~= 0如果numslotssim不是,%更新nummetricssteps参数%完全被它整除simparameters.nummetricssteps =楼层(numslotssim / simparameterm.metricsstepsize);结尾如果~ isfield (simParameters'schedulingtype')||simparameters.schedulingtype == 0.%如果没有指定调度类型或指定基于插槽的调度rbassignmentplotperiodicity = numslotsframe;%每帧更新RB分配可视化(10毫秒)Tickgranularity = 14;simparameters.puschmappeType =.'一种';simparameters.pdschmapptype =.'一种';别的基于%符号的调度rbAssignmentPlotPeriodicity = 1;%更新RB分配可视化每个插槽tickgranularity = 1;simparameters.puschmappeType =.'B';simparameters.pdschmapptype =.'B';结尾

GNB和UES设置

创建GNB和UE对象,初始化GNB的UE的UL信道条件信息,并在GNB和UE处设置逻辑信道。辅助课程HNRGNB.M.HNRUE.M.分别创建GNB和UE节点,包含RLC和MAC层。对于MAC层HNRGNB.M.使用辅助课HNRGNBMAC.M.实现GNB MAC功能和HNRUE.M.用途HNRuemac.m.实现UE MAC功能。调度员在中实施hnrschedulerroundrobin.m.(循环),HNRSchedulerProportionalfair.m.(比例公平),hnrschedulerbestcqi.m.m.医院药学部(最佳)。所有的调度器都继承自基类HNRScheduler.m.其中包含核心调度功能。对于RLC层,都是HNRGNB.M.HNRUE.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调度程序Scheduler = HNRSchedulerbestcqi(SimParameters);结尾Addscheduler(GNB,调度程序);%为GNB添加调度程序gnb.phyentity = hnrgnbpassthroughphy(simparameters);%创建直通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);simparameters.initialChannelqualityDL = SimParameters.InitialChannelqualityul;UES {UEIDX} .Phyentity = HNRuePassthRoughHerhy(SimParameters,UEIDX);%加入passthrough phyconfigurephy(ue {ueidx},simparameters);setphyInterface(UE {UEIDX});%设置接口为PHY层%在gNB上初始化UL CQI值UpdateChannelquality(GNB,SimParameters.InitialChannelQualityul(UEIDX,:),1,UEIDX);UL的%1%设置逻辑通道为了lcIdx = 1: simParameters。NumLogicalChannels%创建RLC通道配置结构rlcchannelconfigstruct.entitytype = simparameters.rlcconfig.entitydir(UEIDX,LCIDX);rlcchannelconfigstruct.logicalchannelid = simparameters.lchconfig.lcid(ueidx,lcidx);rlcchannelconfigstruct.seqnumfieldlength = simparameters.rlcconfig.snfieldlength(Ueidx,lcidx);rlcchannelconfigstruct.maxtxbuffersdus = simparameters.rlcconfig.maxtxbuffersdus(Ueidx,lcidx);rlcchannelconfigstruct.reassemblytimer = simparameters.rlcconfig.reassemblytimer(UEIDX,LCIDX);rlcchannelconfigstruct.entitytype = simparameters.rlcconfig.entitydir(UEIDX,LCIDX);rlcchannelconfigstruct.lcgid = simparameters.lchconfig.lcgid(ueidx,lcidx);rlcchannelconfigstruct.priority = simparameters.lchconfig.priority(UEIDX,LCIDX);rlcchannelconfigstruct.pbr = simparameters.lchconfig.pbr(ueidx,lcidx);rlcchannelconfigstruct.bsd = simparameters.lchconfig.bsd(ueidx,lcidx);%为终端在gNB设置逻辑通道configurelogicalChannel(GNB,UEIDX,RLCChannelConfigstruct);UE的%设置逻辑通道configurelogicalChannel(UE {UEIDX},UEIDX,RLCCHANNELCONFIGSTRUCT);%将数据流量模式生成器添加到UE节点。应用程序数据%被泵送到RLC层按所安装的流量模式packetsize = simparameters.packetsize(UEIDX,LCIDX);%计算开关流量模式的数据速率(以kbps)%数据包大小(以字节为单位)和数据包间隔(在MS中)Datarate = CEIL(1000 / SIMPExameters.PacketPeriodicityues(UEIDX))*数据包* 8E-3;%将生成的应用程序包的大小限制为最大值%RLC SDU的大小。最大支持的RLC SDU金宝app大小为9000字节如果数据包> SimParameters.maxrlcsdulength packetsize = simparameters.maxrlcsdulength;结尾%创建开关网络流量模式的对象,并将其添加到%指定UE。此对象在UE上生成上行链路(UL)数据流量app = networktrafficonoff('包中',包,'generatepacket', 真的,......'准时', simParameters。NumFramesSim/100,'反转',0,“DataRate”, 数据速率);UES {UEIDX} .addapplication(UEIDX,SimParameters.lchconfig.lcid(UEIDX,LCIDX),APP);结尾结尾%设置UL和DL分组分发机制simparameters.maxreceivers = simparameters.numues;%创建DL数据包分发对象dlpacketdistributionobj = hnrpacketdistribution(simparameters,0);%创建UL数据包分发对象ulPacketDistributionObj = hNRPacketDistribution(simParameters, 1);hNRSetUpPacketDistribution(simParameters, gNB, UEs, dlPacketDistributionObj, ulPacketDistributionObj);

处理循环

模拟通过插槽运行插槽。在每个插槽中,执行这些操作:

  • 运行gNB的MAC层和PHY层

  • 运行MAC和PHY层的UE

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

  • 提前节点的计时器。每1毫秒它还向应用程序和RLC层发送触发器。应用层和RLC层基于1ms定时器触发器执行预定的操作。

%为MAC调度信息创建一个对象可视化和日志记录(UL方向表示为1)simschedulinglogger = hnrschedulinglogger(simparameters,1);%创建RLC统计日志记录对象simrlclogger = hnrrlclogger(simparameters,lchinfo);%创建度量标准可视化对象(UL方向表示为1)视觉型的人= hNRMetricsVisualizer (simParameters,'RLCLogger',simrlclogger,'lchinfo',lchinfo,“MACLogger”,simschedulinglogger,'VisualizationFlag',1);%运行处理循环slotnum = 0;numsymbolssim = numslotssim * 14;以符号持续时间为单位的仿真时间%在模拟中执行所有符号为了symbolnum = 1:划分:numsymbolssim如果mod(symbolNum - 1,14) == 0 slotNum = slotNum + 1;结尾%运行MAC和PHY的GNB运行(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);%更新RLC统计日志结尾%Mac Logging.logcellschedulingstats(SimschedulingLogger,Symbornum,GNB,UE,1);%对于UL%的可视化%检查插槽边界如果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帧边界的%绘图plotCQIRBGrids (simSchedulingLogger);结尾结尾%如果达到更新周期,则绘图调度器度量和RLC度量标准可视化槽边界的%如果mod(slotnum,simparameters.metricsstepsize)== 0 plotmetrics(可视化器,slotnum);结尾结尾%高级计时器为GNB和UE的Ticks 14个符号Advancetimer(GNB,划分);为了UEIDX = 1:SimParameters.Numues Advancetimer(UE {UEIDX},秒表);结尾结尾

图资源网格分​​配包含UIControl类型的轴和其他对象。带有标题资源网格分​​配的轴用于单元ID  -  1包含232型文本,行的对象。

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

模拟可视化

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

  • 在PUSCH带宽上显示UE的CQI值:有关详细信息,请参阅“通道质量可视化”图以获取更多详细信息。

  • 向UES显示资源网格分​​配:2-D时间频率网格每10毫秒更新(帧长度),并显示前一帧中的UE的RB分配。PUSCH分配的HARQ过程也与UE的RNTI一起显示。新的传输在黑色和重传中示出了使用每个UE的HARQ进程ID以蓝色示出,可以将重传分配映射到其先前的故障传输。有关详细信息,请参阅“资源网格分​​配”图以获取更多详细信息。

  • UL调度度量地块显示:在“上行链路调度效果指标”数字包括的曲线图:UL吞吐量(每UE和小区),(每个UE和小区)UL实际吞吐量,UE之间资源共享的百分比(出总UL资源)来传达调度的公平性和待定UL缓冲UE的状态显示的UE是否得到足够的资源。用于UL的吞吐量被示为具有在吞吐量和实际吞吐量的曲线的虚线可达到的最大数据速率值。每一个性能指标曲线更新MetricsStepsize.老虎机。

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

仿真日志

用于模拟和模拟日志的参数保存在MAT文件中,用于模拟分析和可视化。使用文件名作为配置参数的值保存在Mat文件中的模拟参数simparameters.parameterslogfile..在每个时间步骤日志,调度分配日志和RLC日志保存在MAT文件simparameters.simulationlogfile..模拟完成后,打开文件进行加载ultimesteplogs.schedulingassignmentlogs.RLCLogs在工作区。

时间步骤日志:该表显示了采样时间步骤条目。表中的每一行代表了一个插槽。

表中的每一行代表一个插槽并包含以下信息:

  • 时间戳:自模拟开始以来的时间(以毫秒为单位)。

  • 框架:帧号。

  • :框架中的插槽号。

  • RBG分配位图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]表示UL带宽有13个RBG和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传输的调制和编码方案(MCS)索引。例如,[10 12 8 -1]意味着仅为该时隙分配UE-1,UE-2和UE-3,并分别使用MCS值10,12和8。

  • HARQ过程:长度的行矢量n,在哪里N为终端号码。值是用于PUSCH传输中使用由用户设备的HARQ进程ID。例如,[0 3 6 -1],只有UE-1,UE-2和UE-3分别分配UL资源此插槽和使用的HARQ进程ID 0,3,和6的装置。

  • 抗利尿:长度的行矢量n,在哪里N为终端号码。此值为PUSCH传输的UL分配中的NDI标志值。例如,[0 0 1 -1]意味着只有UE-1、UE-2和UE-3为这个插槽分配UL资源,并分别使用NDI标志值(决定是使用新的传输还是重传)0,0和1。

  • Tx型:TX类型指定传输类型(新传输或重传)。长度的行矢量n,在哪里N为终端号码。可能的值是'纽约','RETX.', 或者 'noTx'。'noTx“意味着UE未分配PUSCH资源。例如, ['纽约''纽约''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)对应于UE与RNTI的UL CQI值一世在RB.j

  • HARQ NDI状态N-by-P矩阵,其中N是你的数量和P.是UE上的HARQ进程数。位置的矩阵元素(I,J)是UE上最后收到的NDI国旗一世对于HARQ进程IDj.对于新的传输,PUSCH分配中的此值和NDI标志必须切换。例如,在调度日志中描述的帧5的插槽1中,UE-1在UE-1处使用HARQ ID 0和HARQ ID 0的最后NDI标志值是1.表示新传输,NDI标志值PUSCH分配中的0更改为0。

  • 吞吐量字节:长度的行矢量n,在哪里N为终端号码。该值表示在此插槽中由UE传输的MAC字节。

  • 净化字节:长度的行矢量n,在哪里N为终端号码。表示该槽位终端新发送的MAC字节数。

  • UE的缓冲状态:长度的行矢量n,在哪里N为终端号码。这些值表示UES处的待处理缓冲区的数量。

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

RLC日志:RLC日志中的每一行代表一个插槽并包含此信息:

  • 时间戳:时间戳(毫秒)

  • 框架:帧号。

  • :框架中的插槽号。

  • 问题RLC统计N-By-P细胞,在哪里N是UE数量和逻辑信道数量的乘积,以及P.是收集的统计数据的数量。每行代表UE中逻辑信道的统计信息。最后一行包含整个模拟的累积RLC统计信息。

  • GNB RLC统计数据N-By-P细胞,在哪里N是UE数量和逻辑信道数量的乘积,以及P.是收集的统计数据的数量。每行代表GNB处的UE逻辑信道的统计信息。最后一行包含整个模拟的累积RLC统计信息。

UE和GNB RLC统计表的每一行表示UE的逻辑通道,并包含:

  • RNTI:UE的无线电网络临时标识符。

  • lecid.:逻辑信道标识符。

  • txdatapdu.:RLC发送到MAC层的数据PDU数。

  • TxDataBytes: RLC发送到MAC层的数据字节数。

  • RetxDatapdu.: RLC重传到MAC层的数据pdu数。

  • RetxDatabytes.: RLC向MAC层重传的数据字节数。

  • txcontrolpdu.: RLC发送到MAC层的控制pdu数量。

  • txcontrolbytes.:RLC到MAC层发送的控制字节数。

  • TXPacketsDropped:由于TX缓冲区溢出,RLC丢弃的RLC SDU数。

  • txbytesdropped:由于TX缓冲区溢出,RLC丢弃的字节数。

  • timerpollretransmittimedout.:轮询重传计时器过期的次数。

  • rxdatapdu.:数据PDU数从MAC层接收到的RLC通过。

  • rxdatabytes.:RLC从MAC层接收的数据字节数。

  • rxdatapdudropped.:从RLC层丢弃的Mac接收数据PDU的数量。

  • rxdatabytesdropped:由RLC层丢弃的Mac接收数据字节数。

  • RxDataPDUDuplicate:RLC从MAC层接收的重复PDU数。

  • rxdatabytesduplate:RLC从MAC层接收的重复数据字节数。

  • RxControlPDU: RLC从MAC层接收到的控制pdu数量。

  • rxcontrolbytes.:RLC从MAC层接收的控制字节数。

  • timerreassemblytimedout.:重组定时器已过期的次数。

  • timerstatusprohibittimedout.:状态禁止定时器过期的次数。

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

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

  • isLogReplay错误的分析模拟日志并输入帧号以可视化特定帧的调度信息

%读取日志并将它们保存在mat文件中simulationLogs = cell(1,1);simulationLogs{1} =结构('ultimesteplogs',[],'schedulingassignmentlogs',[]“RLCLogs”,[]);[〜,simulationlogs {1} .ultimesteplogs] = getSchedulinglogs(SimschedulingLogger);%UL时间步调度日志simulationlogs {1} .schedulingassignmentlogs = getgrantlogs(simschedulinglogger);计划分配日志simulationLogs{1}。RLCLogs= getRLCLogs(simRLCLogger);%RLC统计日志保存(SimParameters.simulationLogfile,'simulationlogs');%保存仿真日志在Mat文件中保存(SimParameters.ParametersLogfile,'simparameters');%在MAT文件中保存模拟参数

附录

该示例使用这些辅助功能和类:

参考

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

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

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

相关的话题