主要内容

NR FDD调度性能评估

这个示例建模下行链路(DL)和上行链路(UL)资源的调度,并在频分双工(FDD)模式下度量网络性能。该示例包括三种不同的调度策略,您还可以集成自定义调度策略。为了评估不同数据流量模式下的网络性能,该示例还使用逻辑通道优先级(LCP)过程对未确认模式(RLC-UM)下的无线电链路控制层建模。为了对PHY建模,使用了一个基于概率的直通物理层(PHY),而不进行任何信号处理。您可以切换到5G Toolbox™PHY层进行高保真建模。调度策略的性能是根据实现的吞吐量和资源共享的公平性来评估的。

简介

这个例子展示了调度策略(由gNB控制)如何在终端之间分配UL和DL资源。该示例考虑在gNB和ue中进行以下操作,以促进UL和DL的传输和接收。

完整的PUSCH或PDSCH包以其分配的符号集的第一个符号传输。接收方处理符号中的包,该包紧跟在已分配符号集中的最后一个符号之后。

调度器(UL和DL)每天运行p插槽分配UL和DL资源,其中p调度器的配置周期。在每次运行中,计划的槽数等于调度器运行的周期,p

UL调度器

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

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

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

DL调度器

第一个位置,在p要在运行中调度的槽位,是立即的下一个槽位。

  • Run-1:当调度程序在Slot-A的开始处运行时,它调度Slot-B、C和D三个相邻的槽位。

  • Run-2:当调度程序在Slot-D的开始处运行时,它调度Slot-E、F和G三个相邻的槽位。

您可以选择任何一个实现的调度策略:比例公平(PF)、最佳CQI或循环(RR)。列出了对UL调度器支持的各种输入以及考虑这些输入的调度策略。

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

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

这个例子建模了:

  • 基于槽位和基于符号的DL和UL调度。

  • 按照资源块组(rbg)对频域资源进行不连续分配。

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

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

  • 多个逻辑通道(LCHs)以支持不同类型的应用程序。

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

场景配置

配置仿真参数simParameters结构。

rng (“默认”);重置随机数生成器simParameters = [];清除模拟参数simParameters。NumFramesSim= 100;%以10毫秒帧数计算的模拟时间

指定单元中终端的数量,假设终端具有顺序无线网络临时标识符(rnti)1simParameters。NumUEs.如果更改终端的数量,请确保在simParameters。UEPosition参数等于的值simParameters。NumUEs

simParameters。NumUEs = 4;分配位置给终端假设gNB在(0,0,0)。n × 3%矩阵,其中'N'是终端的数量。每一行有(x, y, z)的位置% a UE(单位:米)simParameters。UEPosition= [100 0 0; 250 0 0; 700 0 0; 750 0 0];验证终端位置validateattributes (simParameters。UEPosition, {“数字”}, {“非空的”“真实”的“nrows”, simParameters。NumUEs,“ncols”3,“有限”},“simParameters。UEPosition”“UEPosition”);

设置通道带宽为30 MHz,子载波间距(SCS)为15 kHz,定义在3GPP TS 38.104节5.3.2。假定全部带宽分配给PUSCH或PDSCH。

simParameters。DLBandwidth = 30e6;%赫兹simParameters。ULBandwidth = 30e6;%赫兹simParameters。NumRBs = 160;simParameters。SCS = 15;%千赫simParameters。DLCarrierFreq = 2.635e9;%赫兹simParameters。ULCarrierFreq = 2.515e9;%赫兹

通过配置参数,可以更新gNB的UL通道质量和gNB和终端的DL通道质量。对于终端的所有RBs,每channelUpdatePeriodicity秒,CQIDelta会周期性地改善或恶化通道条件。特定终端的通道条件是改善还是恶化是随机决定的。

RBCQI = RBCQI +/- cqiddelta

simParameters。ChannelUpdatePeriodicity = 0.2;%秒simParameters。CQIDelta = 2;

配置到gNB的距离(第一列为米)和最大可实现UL CQI值(第二列为米)的映射关系。例如,如果一个UE距离gNB 700米,根据映射,当距离在[501,800]米范围内时,它可以获得最大CQI值10。按递增顺序设置距离,按递减顺序设置可达到的最大CQI值。此映射仅适用于使用直通PHY时。

simParameters。CQIvsDistance = [200 15;500 12;800年10;1000 8;1200 7];

配置BSR周期和HARQ实体配置。

simParameters。BSRPeriodicity = 5;%单位毫秒simParameters。EnableHARQ = true;启用或禁用HARQ标志。如果禁用,则没有重传simParameters。NumHARQ = 16;% HARQ进程数

配置调度器运行周期(根据插槽数量)、调度器类型(基于插槽或基于符号)以及用于分配PUSCH/PDSCH资源的调度器策略。当配置比例公平调度时,指定移动平均参数在[0,1]范围内,计算终端在UL和DL方向的平均数据速率。参数值越接近1,表示对瞬时数据速率的权重越大。参数值越接近0,表示对过去数据速率的权重越大。

平均值= ((1 - MovingAvgDataRateWeight) * PastDataRate) + (MovingAvgDataRateWeight * InstantaneousDataRate)

simParameters。SchedulerPeriodicity = 4;%值必须小于10毫秒帧中的槽位数simParameters。SchedulingType = 0;将值设置为0(基于槽位的调度)或1(基于符号的调度)simParameters。SchedulerStrategy =“PF”支持的调度策略:'PF', 'RR'和'BestCQI'simParameters。MovingAvgDataRateWeight = 0.5;

设置PUSCH准备参数。gNB确保至少在终端收到PUSCH分配PUSCHPrepTime在传输时间之前。

simParameters。PUSCHPrepTime= 200;%以微秒为单位

指定分配给PDSCH和PUSCH的RBs的最大限制。传输限制只适用于新传输,而不适用于重传输。

simParameters。RBAllocationLimitUL = 100;% For PUSCHsimParameters。RBAllocationLimitDL = 100;%为PDSCH

逻辑通道配置

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

  • RNTI -终端无线网络临时标识符。

  • LogicalChannelID—逻辑通道标识。

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

  • SeqNumFieldLength—定义序列号字段的长度。要么6个要么12个。

  • MaxTxBufferSDUs—根据上层业务数据单元(sdu)的数量来确定的最大Tx缓冲区大小。

  • reassemytimer -定义重组定时器(以毫秒为单位)。

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

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

  • 策略路由-优先比特率(千字节/秒)。

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

负载(“NRFDDRLCChannelConfig.mat”) simParameters。RLCChannelConfig = rlcchannel;

应用流量配置

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

  • DataRate -应用程序流量生成速率(以千比特/秒为单位)。

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

  • HostDevice -定义指定配置安装应用程序的设备(终端或gNB)。设备接受的值为0或1。该值表示应用程序在gNB侧配置,在UE侧配置。

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

  • LCID—逻辑通道标识符。

负载(“NRFDDAppConfig.mat”);验证配置的应用程序的主机设备类型validateattributes (AppConfig。HostDevice, {“数字”}, {“非空的”“整数”“> =”0,“< =”1},AppConfig。HostDevice”“HostDevice”);

日志记录和可视化配置

CQIVisualization而且RBVisualization参数分别控制CQI可视化和RB分配可视化的显示。默认情况下,这些图是禁用的。您可以通过将各自的标志设置为true来启用它们。

simParameters。CQIVisualization = false;simParameters。RBVisualization = false;

设置enableTraces作为真正的记录跟踪。如果enableTraces设置为,然后CQIVisualization而且RBVisualization自动禁用,并且在模拟中不会记录跟踪。要加速模拟,请设置enableTraces

enableTraces = true;

该示例定期更新度量图。设置模拟期间的更新次数。

simParameters。NumMetricsSteps = 20;

将日志写入mat文件。该示例使用这些日志进行模拟后分析和可视化。

parametersLogFile =“simParameters”%用于记录模拟参数simulationLogFile =“simulationLogs”用于记录模拟跟踪simulationMetricsFile =“simulationMetrics”%用于记录模拟度量

导出参数

根据主要配置参数,计算派生参数。此外,设置一些特定的示例常量。

simParameters。双工模式= 0;% FDD%以RBs数量表示的CQI报告子带的大小(仅使用启用5G Toolbox™PHY层处理时%)simParameters。SubbandSize = 16;simParameters。NumCells = 1;%单元数simParameters。NCellID = 1;%物理单元IDsimParameters。GNBPosition = [0 0 0];% gNB在(x,y,z)坐标中的位置

计算模拟中的槽数。

numSlotsSim = (simParameters.)NumFramesSim* 10 * simParameters.SCS)/15;

根据终端与gNB的距离,计算终端可达到的最大CQI值。

maxecqis = 0 (simParameters. maxecqis = 0)NumUEs, 1);%存储终端可达到的最大CQI值ueIdx = 1:simParameters。NumUEsueDistance = norm(simParameters.UEPosition(ueIdx, :) - simParameters.GNBPosition);%根据终端到gNB的距离,在中找到匹配行CQIvsDistance映射matchingRowIdx = find(simParameters。CQIvsDistance(:, 1) > ueDistance);如果isempty(matchingRowIdx) maxecqis (ueIdx) = simParameters. isempty(matchingRowIdx) maxecqis (ueIdx) = simParameters。CQIvsDistance (, 2);其他的maxecqis (ueIdx) = simParameters.CQIvsDistance(matchingRowIdx(1), 2);结束结束

将初始UL和DL信道质量定义为一个N × P矩阵,其中'N'是ue的数量,'P'是载波带宽中的RBs的数量。

simParameters。simParameters. initalchannelqualitydl = 0NumUEs simParameters.NumRBs);将当前DL CQI值存储在不同终端的RBs上ueIdx = 1:simParameters。NumUEs为RBs分配随机的CQI值,受可达到的最大CQI值限制simParameters。InitialChannelQualityDL(ueIdx,:) = randi([1 maxecqis (ueIdx)], 1, simParameters.NumRBs);结束最初,DL和UL CQI值假设相等simParameters。InitialChannelQualityUL = simParameters.InitialChannelQualityDL;

获取每个终端关联的逻辑通道信息。这些信息有助于RLC度量记录和可视化。

lchInfo = repmat(struct)“RNTI”[],“LCID”[],“EntityDir”, []), [simParameters. .NumUEs 1]);ueIdx = 1:simParameters。NumUEs lchInfo (ueIdx)。RNTI = ueIdx;lchInfo (ueIdx)。LCID = simParameters.RLCChannelConfig. logicalchannelidRNTI == ueIdx);lchInfo (ueIdx)。EntityDir = simParameters.RLCChannelConfig. entitytype (simParameters.RLCChannelConfig. entitytype)RNTI == ueIdx);结束

请根据配置的调度类型设置映射类型。

如果~ isfield (simParameters“SchedulingType”) ||scheduletype == 0%,如果不指定调度类型或指定基于槽位的调度simParameters。PUSCHMappingType =“一个”;simParameters。PDSCHMappingType =“一个”其他的%基于符号的调度simParameters。PUSCHMappingType =“B”;simParameters。PDSCHMappingType =“B”结束

根据槽的数量设置示例更新度量可视化的间隔。由于此示例使用一个槽位的时间粒度,因此MetricsStepSize字段必须为整数。

simParameters。MetricsStepSize = celll (numSlotsSim / simParameters.NumMetricsSteps);

安装gNB和UEs

创建对象gNB和UE,初始化终端的通道质量信息,并在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(RR),hNRSchedulerProportionalFair.m(PF),hNRSchedulerBestCQI.m医院药学部(最佳)。所有调度程序都继承自基类hNRScheduler.m其中包含核心调度功能。对于RLC层,两者都有hNRGNB.m而且hNRUE.m使用hNRUMEntity.m实现了RLC发射机和接收机的功能。实现了终端与gNB的PHY直通层hNRUEPassThroughPhy.m而且hNRGNBPassThroughPhy.m,分别。

simParameters。位置= simParameters.GNBPosition;gNB = hNRGNB(simParameters);创建gNB节点创建并添加调度器开关(simParameters.SchedulerStrategy)情况下“农达”循环调度程序调度器= hNRSchedulerRoundRobin(simParameters);情况下“PF”%比例公平调度程序调度器= hnrschedulerproportion (simParameters);情况下“BestCQI”%最好的CQI调度器调度器= hNRSchedulerBestCQI(simParameters);结束addScheduler (gNB,调度器);将调度器添加到gNBgNB。PhyEntity = hNRGNBPassThroughPhy(simParameters);添加直通PHYconfigurePhy (gNB simParameters);setPhyInterface (gNB);设置接口为PHY层创建UE节点集UEs = cell(simParameters. cell)NumUEs, 1);ueIdx = 1: simParameters。NumUEs simParameters。Position = simParameters。UEPosition (ueIdx:);UE位置%UEs{ueIdx} = hNRUE(simParameters, ueIdx);问题{ueIdx}。PhyEntity = hNRUEPassThroughPhy(simParameters, ueIdx);添加直通PHYconfigurePhy(问题{ueIdx}, simParameters);setPhyInterface(用正餐{ueIdx});设置接口为PHY层在gNB调度程序上初始化UL CQI值channelQualityInfoUL = struct(“RNTI”ueIdx,医院药学部的“, simParameters。InitialChannelQualityUL (ueIdx:));updateChannelQualityUL (gNB.MACEntity。调度器,channelQualityInfoUL);在gNB调度程序上初始化DL CQI值channelQualityInfoDL = struct(“RNTI”ueIdx,医院药学部的“, simParameters。InitialChannelQualityDL (ueIdx:));updateChannelQualityDL (gNB.MACEntity。调度器,channelQualityInfoDL);在UE初始化DL CQI值,用于包错误概率估计updateChannelQualityDL(用正餐{ueIdx}。MACEntity channelQualityInfoDL);结束%设置逻辑通道lchInfoIdx = 1:size(simParameters.)RLCChannelConfig, 1) rlcChannelConfigStruct = table2struct(simParameters。RLCChannelConfig (lchInfoIdx:));ueIdx = simParameters.RLCChannelConfig.RNTI(lchInfoIdx);在gNB和UE上设置逻辑通道gNB。configureLogicalChannel (ueIdx rlcChannelConfigStruct);问题{ueIdx}。configureLogicalChannel (ueIdx rlcChannelConfigStruct);结束为gNB和UE节点添加数据流量模式生成器appIdx = 1 (AppConfig, 1)为On-Off网络流量模式创建一个对象app = networkTrafficOnOff(“PacketSize”AppConfig.PacketSize (appIdx),“GeneratePacket”,真的,...“定时”, simParameters。NumFramesSim/100,“停止时间”0,“DataRate”AppConfig.DataRate (appIdx));如果AppConfig.HostDevice(appIdx) == 0添加产生下行流量的流量模式。addApplication(gNB, AppConfig.RNTI(appIdx), AppConfig.LCID(appIdx), app);其他的%添加上行链路产生流量的流量模式addApplication(UEs{AppConfig.RNTI(appIdx)}, AppConfig.RNTI(appIdx), AppConfig.LCID(appIdx), app);结束结束

模拟

初始化无线网络模拟器nrNodes = [{gNB};问题);networkSimulator = hWirelessNetworkSimulator(nrNodes);

创建对象来记录RLC和MAC跟踪。

如果enableTraces每1个插槽持续时间记录% RLC度量simRLCLogger = hNRRLCLogger(simParameters, lchInfo, networkSimulator, gNB, UEs);visualizationFlag = 2;simSchedulingLogger = hNRSchedulingLogger(simParameters, networkSimulator, gNB, UEs);为CQI和RB网格可视化创建一个对象如果simParameters。CQIVisualization || simParameters。RBVisualizationgridVisualizer = hNRGridVisualizer(simParameters,“MACLogger”, simSchedulingLogger);结束结束

为RLC和MAC指标可视化创建一个对象。

metricsVisualizer = hNRMetricsVisualizer(simParameters“EnableSchedulerMetricsPlots”,真的,“EnableRLCMetricsPlots”,真的,“LCHInfo”lchInfo,“NetworkSimulator”networkSimulator,“GNB”gNB,“问题”、问题);

运行指定的模拟NumFramesSim帧。

从'NumFramesSim'计算模拟持续时间(以秒为单位)simulationTime = simParameters。NumFramesSim * 1 -2;%运行模拟运行(networkSimulator simulationTime);

获取模拟指标并将其保存在一个mat文件中。模拟指标保存在一个mat文件中,文件名为simulationMetricsFile

metrics = getMetrics(metricsVisualizer);保存(simulationMetricsFile,“指标”);

仿真可视化

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

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

  • 显示资源网格分配给终端:二维时频网格显示终端的资源分配情况。您可以在“日志记录和可视化配置”部分启用此可视化。有关详情,请参阅中“资源网格分配”图NR PUSCH软驱调度的例子。

  • 显示UL调度指标图:上行调度器性能指标(Uplink Scheduler Performance Metrics)图中显示的四个图分别表示:UL吞吐量(每个终端和小区)、UL goodput(每个终端和小区)、各终端之间的资源共享百分比(占UL总资源的比例),以传达调度的公平性,以及终端的未决UL缓冲状态,以显示终端是否获得了足够的资源。UL吞吐量的最大可实现数据速率值在吞吐量和吞吐量图中用虚线表示。性能度量图为每metricsStepSize槽。

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

  • 显示RLC度量图:“RLC度量可视化”图显示了每个终端的RLC层(每个逻辑通道)传输的字节数。RLC的参数图更新每metricsStepSize槽。

模拟日志

用于仿真的参数和仿真日志保存在mat文件中,用于后期仿真分析和可视化。仿真参数保存在一个mat文件中,文件名作为配置参数的值parametersLogFile.每时间步日志、调度分配日志和RLC日志保存在mat文件中simulationLogFile.模拟之后,打开要加载的文件DLTimeStepLogsULTimeStepLogsSchedulingAssignmentLogs,RLCLogs在工作区中。

时间步长日志:DL和UL时间步日志的格式相同。关于日志格式的详细信息,请参见NR PUSCH软驱调度

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

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

您可以运行该脚本NRPostSimVisualization以获得日志的模拟后可视化。在后模拟脚本中,为您提供了变量isLogReplay,提供这些选项以可视化“资源网格分配”和“渠道质量可视化”图表。

  • isLogReplay对于模拟日志的重放设置为true。

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

如果enableTraces%获取日志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; save(parametersLogFile,“simParameters”);将模拟参数保存在mat文件中保存(simulationLogFile,“simulationLogs”);将模拟日志保存在mat文件中结束

进一步的探索

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

自定义调度

您可以修改已有的调度策略,实现自定义调度策略。在系统级模拟中插入自定义调度器示例解释了如何创建自定义调度策略并将其插入到系统级模拟中。

使用5G Toolbox™物理层

您还可以从直通PHY层切换到5G Toolbox™物理层处理,通过使用hNRGNBPhy.m而且hNRUEPhy.m.更多详情,请参阅“gNB和UEs设置”一节基于物理层集成的NR电池性能评估

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

使用RLC AM

您还可以通过修改输入结构字段,将RLC实体的工作模式从UM切换到确认模式(AM)EntityType而且SeqNumFieldLengthconfigureLogicalChannel的函数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]3gpp ts 38.322。“NR;无线电链路控制(RLC)协议规范。”第三代伙伴关系项目;技术规范组无线电接入网

[5]3gpp ts 38.331。“NR;无线电资源控制(RRC)协议规范。第三代伙伴关系项目;技术规范组无线电接入网

相关的话题

Baidu
map