NR FDD调度性能评估
这个示例模型调度的下行(DL)网络性能和上行(UL)资源和措施在频分双工(FDD)模式。评估网络性能与不同的数据流量模式,无线链路控制层的模型示例还未答复的模式(RLC-UM)逻辑信道优先级(LCP)过程。本例使用link-to-system-mapping-based文摘物理层(体育)。调度策略的性能评价的吞吐量和资源共享的公平实现。
介绍
分配DL和UL资源,这个示例使用了轮循调度程序。调度器将资源分配决策基于这些输入:等待重发,缓冲状态和信道质量问题。
这个示例模型:
Slot-based DL和UL调度。
多个逻辑通道(禄)来支持不同的应用程序。万博1manbetx
逻辑信道优先级(LCP)分发收到任务之间的逻辑通道每问题UL和DL。
控制发送数据包需要被假定的乐队没有参考资料传输的需要。控制数据包UL任务,DL任务,缓冲状态报告(BSR)和PDSCH反馈。
场景模拟
检查通信工具箱安装无线网络仿真库支持包。万博1manbetx如果支持包没有万博1manbetx安装,MATLAB®返回一个错误的链接下载并安装包的支持。
wirelessnetwork万博1manbetxSupportPackageCheck
创建一个无线网络模拟器。
rng (“默认”)%重置随机数发生器numFrameSimulation = 50;%仿真时间的10 ms帧的数量networkSimulator = wirelessNetworkSimulator.init;
创建一个gNB节点。指定双工模式、载波频率、信道带宽,副载波间距,和接收节点的增益。
gNB = nrGNB (DuplexMode =“FDD”CarrierFrequency = 2.6 e9 ChannelBandwidth = 30 e6, SubcarrierSpacing = 15 e3, ReceiveGain = 11);
调度程序参数设置ResourceAllocationType
通过使用configureScheduler
函数。
configureScheduler (gNB ResourceAllocationType = 0);
创建4个问题节点。指定的名称、位置和接收每个问题节点。
uePositions = [100 0 0;250 0 0;700 0 0;750 0 0];ueNames =“问题——”+(1:尺寸(uePositions, 1));问题= nrUE (Name = ueNames、位置= uePositions ReceiveGain = 11);
加载应用程序配置包含这些字段表。表中的每一行代表一个应用程序,这些属性列。
DataRate——应用程序流量产生率(千比特/秒)。
PacketSize——数据包的大小(以字节为单位)。
HostDevice——定义的设备(问题或gNB)指定的应用程序安装与配置。设备需要值0或1。0和1的值表明gNB和应用程序的配置问题,分别。
RNTI——无线电网络问题的临时标识符。这个标识应用程序安装的问题。
LogicalChannelID——逻辑通道标识符。
负载(“NRFDDAppConfig.mat”)%验证配置的主机设备类型的应用程序validateattributes (AppConfig.HostDevice, {“数字”},{“非空的”,“整数”,“> =”0,“< =”1},“AppConfig.HostDevice”,…“HostDevice”);
加载RLC无记名配置表。表中的每一行代表一个RLC无记名,这些属性列。
RNTI——无线电网络问题的临时标识符。
LogicalChannelID——逻辑通道标识符。
LogicalChannelGroup——逻辑通道组标识符。
SNFieldLength——定义了序列号字段长度。需要6或12。
BufferSize - Tx最大缓冲区大小的数量更高的层服务数据单元(sdu)。
ReassemblyTimer——定义了重组的计时器(女士)。
RLCEntityType——定义了RLC实体类型。需要价值观”UMDL”、“UMUL”,“嗯”,这表明是否RLC实体是单向DL,单向UL、或者双向的嗯,分别。
优先级,优先级的逻辑通道。
PrioritizedBitRate——优先比特率(每秒千字节)。
BucketSizeDuration——水桶大小持续时间(女士)。
负载(“NRFDDRLCChannelConfig.mat”)
创建一组RLC无记名配置对象。
rlcBearerConfig =细胞(1、长度(问题);为rlcBearerInfoIdx = 1:尺寸(RLCChannelConfig 1) rlcBearerConfigStruct = table2struct (RLCChannelConfig (rlcBearerInfoIdx, 2:结束));ueIdx = RLCChannelConfig.RNTI (rlcBearerInfoIdx);%创建一个RLC无记名配置对象与指定的逻辑%通道标识rlcBearerObj = nrRLCBearerConfig (LogicalChannelID = rlcBearerConfigStruct.LogicalChannelID);%设置指定的其他配置对象的属性值rlcBearerObj。LogicalChannelGroup = rlcBearerConfigStruct.LogicalChannelGroup;rlcBearerObj。SNFieldLength = rlcBearerConfigStruct.SNFieldLength;rlcBearerObj。BufferSize = rlcBearerConfigStruct.BufferSize;rlcBearerObj.ReassemblyTimer = rlcBearerConfigStruct.ReassemblyTimer;rlcBearerObj.Priority = rlcBearerConfigStruct.Priority;rlcBearerObj.PrioritizedBitRate = rlcBearerConfigStruct.PrioritizedBitRate;rlcBearerObj.BucketSizeDuration = rlcBearerConfigStruct.BucketSizeDuration; rlcBearerObj.RLCEntityType=rlcBearerConfigStruct.RLCEntityType; rlcBearerConfig{ueIdx} = [rlcBearerConfig{ueIdx} rlcBearerObj];结束
问题的节点连接到gNB节点。指定将用于的RLC无记名配置之间建立RLC无记名gNB节点,每个节点问题。
为ueIdx = 1:长度(问题)connectUE (gNB,问题(ueIdx) BSRPeriodicity = 5, RLCBearerConfig = RLCBearerConfig {ueIdx})结束
设置周期性DL和UL应用程序流量模式问题。
为appIdx = 1:尺寸(AppConfig, 1)%为开关网络流量模式创建一个对象应用= networkTrafficOnOff (PacketSize = AppConfig.PacketSize (appIdx) GeneratePacket = true,…定时= numFrameSimulation / 100,停止时间= 0,DataRate = AppConfig.DataRate (appIdx));如果AppConfig.HostDevice (appIdx) = = 0%下行线上添加交通模式,生成交通addTrafficSource (gNB应用,DestinationNode =问题(AppConfig.RNTI (appIdx)), LogicalChannelID = AppConfig.LogicalChannelID (appIdx))其他的%增加交通模式产生上行流量addTrafficSource(问题(AppConfig.RNTI (appIdx)),应用,LogicalChannelID = AppConfig.LogicalChannelID (appIdx))结束结束
gNB节点和问题节点添加到网络模拟器。
addnode (networkSimulator gNB) addnode (networkSimulator问题)
设置enableTraces
来真正的
记录痕迹。如果enableTraces
被设置为假
,然后痕迹不登录模拟。加快仿真,设置enableTraces
来假
。
enableTraces = true;
的cqiVisualization
和rbVisualization
参数控制医院药学部的显示可视化和RB分别作业可视化。默认情况下,启用这些情节。可以通过设置禁用它们各自的国旗为false。
cqiVisualization = true;rbVisualization = true;
设置RLC记录器、调度日志记录器和PHY记录器。
如果enableTraces%对RLC跟踪日志创建一个对象simRLCLogger = helperNRRLCLogger (gNB numFrameSimulation,用正餐);%为调度程序创建一个对象跟踪日志记录simSchedulingLogger = helperNRSchedulingLogger (gNB numFrameSimulation,用正餐);医院药学部%创建一个对象和RB网格可视化gridVisualizer = helperNRGridVisualizer (gNB numFrameSimulation,问题,CQIGridVisualization = cqiVisualization,…ResourceGridVisualization = rbVisualization SchedulingLogger = simSchedulingLogger);结束
这个例子情节定期更新指标。在模拟集更新的数量。
numMetricsSteps = 20;
建立度量可视化工具。
问题,metricsVisualizer = helperNRMetricsVisualizer (gNB NumMetricsSteps = NumMetricsSteps,…PlotSchedulerMetrics = true, PlotRLCMetrics = true);
写日志mat文件。post-simulation的例子使用这些日志分析和可视化。
simulationLogFile =“simulationLogs”;%用于日志记录模拟痕迹
指定的模拟运行numFrameSimulation
帧。
%计算仿真时间(以秒为单位)simulationTime = numFrameSimulation * 1飞行;%运行仿真运行(networkSimulator simulationTime)
自定义通道模型不是补充道。使用自由空间路径损耗(fspl)模型作为默认的信道模型。
阅读每个节点数据。
gNBStats =统计(gNB);ueStats =统计(问题);
最后仿真、系统性能指标的实现值相比,他们的理论高峰值(考虑到零开销)。性能指标显示实现数据速率(UL和DL),实现了频谱效率(UL和DL),并阻止错误率(提单)观察用正餐(UL和DL)。高峰值计算根据3 gpp TR 37.910。
displayPerformanceIndicators (metricsVisualizer)
UL峰值吞吐量:199.08 Mbps。实现细胞UL吞吐量:121.95 Mbps取得UL吞吐量为每个问题:[46.25 17.48 39.8 18.42]UL光谱峰值效率:6.64比特/秒/ Hz。细胞达到UL频谱效率:4.07比特/秒/ Hz DL峰值吞吐量:199.08 Mbps。实现细胞DL吞吐量:131.47 Mbps实现DL吞吐量为每个问题:[45.96 16.4 48.64 20.47]DL光谱峰值效率:6.64比特/秒/ Hz。实现细胞DL频谱效率:4.38比特/秒/ Hz
仿真可视化
运行时可视化显示是:
显示UL调度指标的情节:,“上行调度性能指标”图描述NR细胞绩效评估与再分配的例子。
显示DL调度指标的情节:详情,参见图描述“下行调度性能指标”NR细胞绩效评估与再分配的例子。
情节的RLC指标:“RLC指标可视化”图代表了RLC层传输的字节数为每个问题。
模拟日志
仿真post-simulation分析日志保存在mat文件。每个时间步日志、调度任务日志和RLC日志保存在MAT-filesimulationLogFile
。仿真后,打开文件加载DLTimeStepLogs
,ULTimeStepLogs
,SchedulingAssignmentLogs
,RLC日志
在工作区中。
时间步日志:在时间步日志格式的更多信息,见NR细胞绩效评估与再分配。
调度任务日志:调度日志格式的更多信息,请参阅NR细胞绩效评估与再分配。
RLC日志:RLC日志中的每一行代表一个槽和包含这些信息:
时间戳:时间戳(以毫秒为单位)
框架:帧数。
槽:帧槽数量。
问题RLC统计:N以p细胞,N是数量的问题,P所收集的数据的数量。每一行代表问题的统计数据。最后一行包含整个的累积RLC统计模拟。
gNB RLC统计:N以p细胞,N是数量的问题,P所收集的数据的数量。每一行代表数据的逻辑通道gNB问题。最后一行包含整个的累积RLC统计模拟。
问题和gNB RLC统计数据表的每一行表示一个逻辑通道的问题,包含:
UEID问题:节点ID。
RNTI:无线网络问题的临时标识符。
TransmittedPackets:由RLC MAC层发送的数据包数量。
TransmittedBytes:MAC层由RLC发送的字节数。
ReceivedPackets:收到的数据包数量的RLC MAC层。
ReceivedBytes:从MAC层RLC接收到的字节数。
DroppedPackets:收到的数据包数量从MAC下降了RLC层。
DroppedBytes:从MAC接收字节数下降了RLC层。
保存模拟登录垫文件。
如果enableTraces simulationLogs =细胞(1,1);如果gNB。DuplexMode = =“FDD”logInfo =结构(“DLTimeStepLogs”[],“ULTimeStepLogs”[],“SchedulingAssignmentLogs”[],“RLCLogs”[]);[logInfo.DLTimeStepLogs, logInfo。ULTimeStepLogs] = getSchedulingLogs(simSchedulingLogger);其他的% TDDlogInfo =结构(“TimeStepLogs”[],“SchedulingAssignmentLogs”[],“RLCLogs”[]);logInfo。TimeStepLogs = getSchedulingLogs (simSchedulingLogger);结束%得到调度作业日志logInfo。SchedulingAssignmentLogs = getGrantLogs (simSchedulingLogger);%的RLC日志logInfo。RLCLogs = getRLCLogs (simRLCLogger);%保存模拟MAT-file日志simulationLogs {1} = logInfo;保存(simulationLogFile,“simulationLogs”)结束
进一步的探索
你可以用这个例子来进一步探索TDD建模。
TDD的建模
你可以用这个例子来进一步探索TDD的建模通过设置DuplexMode属性gNB
反对“TDD”。你也可以定制DL-UL槽TDD模式配置为使用DLULConfigTDD nrGNB对象的属性。
附录
这个例子使用这些辅助类:
helperNRMetricsVisualizer.m:实现指标的可视化功能
helperNRSchedulingLogger.m:实现了调度信息日志记录功能
helperNRPhyLogger.m日志记录功能:实现Phy数据包接收信息
helperNRRLCLogger.m:实现了RLC包传输和接收信息日志功能
helperNRGridVisualizer.m:实现信道质量和资源网格可视化功能
引用
[1]3 gpp TS 38.104。“NR;基站(BS)无线电发射和接受。”第三代合作伙伴项目;技术规范集团无线接入网络。
[2]3 gpp TS 38.214。“NR;物理层数据程序。”第三代合作伙伴项目;技术规范集团无线接入网络。
[3]3 gpp TS 38.321。“NR;介质访问控制(MAC)协议规范。”第三代合作伙伴项目;技术规范集团无线接入网络。
[4]3 gpp TS 38.322。“NR;无线链路控制(RLC)协议规范。”第三代合作伙伴项目;技术规范集团无线接入网络。
[5]3 gpp TS 38.331。“NR;无线资源控制(RRC)协议规范。”第三代合作伙伴项目;技术规范集团无线接入网络。