主要内容

NR软驱调度性能评估

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

简介

这个示例展示了调度策略(由gNB控制)如何在ue之间分配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, ue没有足够的PUSCH准备时间(ue在Slot-A开始的时间为0个符号,在Slot-B开始的时间为14个符号)。对于Slot-C, UEs获得28个符号用于PUSCH制备,这满足了PUSCH制备时间的能力。因此,Slot-C、D和E在这次运行中被调度。

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

DL调度器

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

  • Run-1:当scheduler运行在Slot-A的开始位置时,它调度3个相邻的slot Slot-B, C, D。

  • Run-2:当scheduler在Slot-D的开始处运行时,它调度3个相邻的slot Slot-E, F和G。

您可以选择任意一种已实现的调度策略:比例公平(PF)、最佳CQI或轮询(RR)。列出了UL调度器支持的各金宝app种输入,以及考虑它们的调度策略。

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

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

这个例子建模:

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

  • 频域资源在资源块组(rbg)方面的不连续分配。

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

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

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

  • 逻辑通道优先级(LCP),将接收到的任务分配到UL和DL的每个UE的逻辑通道中。

场景配置

中配置仿真参数simParameters结构。

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

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

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

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

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

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

RBCQI = RBCQI +/- CQIDelta

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表示对过去数据速率的权重更大。

AverageDataRate = ((1 - MovingAvgDataRateWeight) * PastDataRate) + (MovingAvgDataRateWeight * InstantaneousDataRate)

simParameters。SchedulerPeriodicity = 4;%值必须小于10ms帧中的槽数simParameters。SchedulingType = 0;将该值设置为0(基于插槽的调度)或1(基于符号的调度)simParameters。SchedulerStrategy =“PF”%支金宝app持的调度策略:'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缓冲区大小。

  • ReassemblyTimer -定义重组定时器(毫秒)。

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

  • Priority -逻辑通道的优先级。

  • PBR -优先级比特率(单位:千字节每秒)。

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

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

应用流量配置

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

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

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

  • HostDevice -定义应用程序安装在指定配置的设备(UE或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-files。该示例使用这些日志进行模拟后分析和可视化。

parametersLogFile =“simParameters”用于记录模拟参数simulationLogFile =“simulationLogs”用于记录模拟跟踪simulationMetricsFile =“simulationMetrics”用于记录模拟指标

导出参数

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

simParameters。DuplexMode = 0;% FDDCQI报告中以RBs数量表示的子带大小%(仅使用启用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;

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

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

将初始UL和DL信道质量定义为N × P矩阵,其中“N”是ue的数量,“P”是运营商带宽中RBs的数量。

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

获取每个UE关联的逻辑通道信息。这些信息有助于RLC指标记录和可视化。

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

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

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

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

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

gNB和ue安装

创建gNB和UE对象,初始化UE的通道质量信息,并在gNB和UE上设置逻辑通道。辅助类hNRGNB.m而且hNRUE.m分别创建gNB和UE节点,包含RLC层和MAC (medium access control)层。对于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”比例公平调度程序调度器= hnrschedulerproporalfair (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。UEPosition (ueIdx:);UE位置%ue {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. size)RLCChannelConfig, 1) rlcChannelConfigStruct = table2struct(simParameters, 1)RLCChannelConfig (lchInfoIdx:));ueIdx = simParameters.RLCChannelConfig.RNTI(lchInfoIdx);在gNB和UE上设置逻辑通道gNB。configureLogicalChannel (ueIdx rlcChannelConfigStruct);问题{ueIdx}。configureLogicalChannel (ueIdx rlcChannelConfigStruct);结束在gNB和UE节点上添加数据流量模式生成器appIdx = 1:size(AppConfig, 1)为开关网络流量模式创建一个对象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“EnableSchedulerMetricsPlots”,真的,“EnableRLCMetricsPlots”,真的,“LCHInfo”lchInfo,“NetworkSimulator”networkSimulator,“GNB”gNB,“问题”、问题);

运行指定的模拟NumFramesSim帧。

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

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

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

仿真可视化

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

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

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

  • 显示UL调度指标图:“上行调度器性能指标”图中显示的四个图分别表示: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对象来从直通PHY层切换到5G Toolbox™物理层处理hNRGNBPhy.m而且hNRUEPhy.m.有关详细信息,请参见“gNB和UEs设置”部分基于物理层集成的NR电池性能评估

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

使用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;无线电链路控制协议规范。第三代伙伴计划;技术规范集团无线接入网

[5]3gpp ts 38.331。“NR;无线电资源控制协议规范。第三代伙伴计划;技术规范集团无线接入网

相关的话题