Этот пример моделирует планирование ресурсов нисходящего канала (DL) и восходящего канала (UL) и измеряет эффективность сети в режиме дуплекса с частотным делением каналов (FDD). Пример включает три различные стратегии планирования, а также показывает, как интегрировать пользовательский планировщик. Чтобы оценить сетевую эффективность с различными шаблонами трафика данных, пример также моделирует слой управления радиочастотной ссылкой в неподчиненном режиме (RLC-UM) с процедурой логического определения приоритетов канала (LCP). Для моделирования PHY используется физический (PHY) слой, основанный на вероятности, без какой-либо обработки сигнала. Можно переключиться на слой 5G Toolbox™ PHY для высокоточного моделирования. Эффективность стратегии планирования оценивается с точки зрения достигнутой пропускной способности и справедливости в совместном использовании ресурсов.
В этом примере показано, как стратегия планирования (управляемая gNB) присваивает UL и DL ресурсы среди UE. Пример рассматривает следующие операции в пределах gNB и UE, которые облегчают передачи и приемы UL и DL.
Полный пакет PUSCH или PDSCH передается в первом символе выделенного набора символов. Приемник обрабатывает пакет в символе сразу после последнего символа в выделенном наборе символов.
Планировщики (UL и DL) запускают каждый p пазов, чтобы назначить ресурсы UL и DL, где p является сконфигурированной периодичностью планировщика. В каждом запуске количество запланированных пазов равно периодичности выполнения планировщика, p.
Планировщик UL
Первый паз, среди пазы, которые должны быть запланированы в запуске, является ближайшим предстоящим пазом, который удовлетворяет временной возможности подготовки PUSCH UE. Для примера рисунок показывает, как планировщик выбирает пазы в течение двух последовательных запусков. Он принимает периодичность планировщика (p) как 3 пазы. Следовательно, планировщик запускается после каждые 3 пазы и планирует ресурсы для 3 пазов. Возможность подготовки PUSCH для всех UE принята как больше, чем 1 паз (14 символов), но меньше, чем 2 пазы (28 символов).
Run-1: Когда планировщик запускается в начале слота-A, он планирует 3 пазы, начиная с слота-C, потому что для слота-A и слота-B UE не получают достаточное время подготовки PUSCH (UE получает время 0 символов в начале слота-A и 14 символов в начале слота- Для слота С UE получают 28 символов для подготовки PUSCH, и это удовлетворяет возможности подготовки PUSCH. Следовательно, Slot-C, D и E запланированы в этом запуске.
Run-2: Когда планировщик запускается в начале Slot-D, он планирует следующие 3 смежных пазы, начиная с Slot-F (Slot-F, G и H).
Планировщик DL
Первый паз, среди пазы, запланированных во время запуска, является ближайшим следующим пазом.
Run-1: Когда планировщик запускается в начале слота-A, он планирует 3 смежных пазы Slot-B, C и D.
Run-2: Когда планировщик запускается в начале слота-D, он планирует 3 смежных пазы Slot-E, F и G.
Вы можете выбрать любую из реализованных стратегий планирования: пропорциональную справедливость (PF), лучший CQI или round robin (RR). Различные поддерживаемые входы для планировщика UL перечислены вместе со стратегиями планирования, которые их рассматривают.
Требуемые пакеты управления приняты, чтобы быть посланными вне полосы без необходимости ресурсов для передачи. Пакеты управления являются назначением UL, назначением DL, отчетом о состоянии буфера (BSR) и обратной связью PDSCH.
Опорный сигнал демодуляции (DM-RS) не моделируется в этом примере. Однако один символ остается неиспользованным для него в назначениях PUSCH и PDSCH.
Этот пример моделирует:
Основанное на пазе и основанное на символе планирование DL и UL.
Несмежное распределение ресурсов частотного диапазона в терминах групп ресурсных блоков (RBG).
Конфигурируемый интервал между поднесущими, приводящий к различным длительности паза.
Механизм асинхронного адаптивного гибридного автоматического запроса повторения (HARQ) в UL и DL.
Несколько логических каналов для поддержки различных типов приложений.
Приоритизация логического канала (LCP) для распределения принятого назначения между логическими каналами по UE для UL и DL.
Установите параметры для симуляции.
rng('default'); % Reset the random number generator simParameters = []; % Clear the simulation parameters simParameters.NumFramesSim = 100; % Simulation time in terms of number of 10 ms frames simParameters.SchedulingType = 0; % Set the value to 0 (slot based scheduling) or 1 (symbol based scheduling) % Number of UEs in the simulation. UEs are assumed to have sequential radio % network temporary identifiers (RNTIs) from 1 to NumUEs. If you change the % number of UEs, ensure that the length of simParameters.UEDistance is equal to NumUEs simParameters.NumUEs = 4; simParameters.UEDistance = [100 250 700 750]; % Distance of UEs from gNB (in meters) % Set the channel bandwidth to 30 MHz and subcarrier spacing (SCS) to 15 % kHz as defined in 3GPP TS 38.104 Section 5.3.2. The complete UL and % DL bandwidth is assumed to be allotted for PUSCH and PDSCH. The % UL and DL carriers are assumed to have symmetric channel % bandwidth simParameters.DLBandwidth = 30e6; % Hz simParameters.ULBandwidth = 30e6; % Hz simParameters.NumRBs = 160; simParameters.SCS = 15; % kHz simParameters.DLCarrierFreq = 2.635e9; % Hz simParameters.ULCarrierFreq = 2.515e9; % Hz % Configure parameters to update UL channel quality at gNB and DL % channel quality at gNB and UE. Channel conditions are periodically % improved or deteriorated by CQIDelta every channelUpdatePeriodicity % seconds for all RBs of a UE. Whether channel conditions for a particular % UE improve or deteriorate is randomly determined % RBCQI = RBCQI +/- CQIDelta simParameters.ChannelUpdatePeriodicity = 0.2; % In sec simParameters.CQIDelta = 2; % Mapping between distance from gNB (first column in meters) and maximum % achievable UL CQI value (second column). For example, if a UE is 700 % meters away from the gNB, it can achieve a maximum CQI value of 10 as the % distance falls within the [501, 800] meters range, as per the mapping. % Set the distance in increasing order and the maximum achievable CQI value in % decreasing order simParameters.CQIvsDistance = [ 200 15; 500 12; 800 10; 1000 8; 1200 7]; simParameters.BSRPeriodicity = 5; % In ms simParameters.EnableHARQ = true; % Flag to enable or disable HARQ. If disabled, there are no retransmissions simParameters.NumHARQ = 16; % Number of HARQ processes % Set the scheduler run periodicity in terms of number of slots. Value must % be less than the number of slots in a 10 ms frame simParameters.SchedulerPeriodicity = 4; simParameters.SchedulerStrategy = 'PF'; % Supported scheduling strategies: 'PF', 'RR' and 'BestCQI' % Moving average parameter within the range [0, 1] to calculate average % data rate for a UE in UL and DL directions. This value is used in % the PF scheduling strategy. Parameter value closer to 1 implies more % weight on the instantaneous data rate. Parameter value closer to 0 % implies more weight on the past data rate % AverageDataRate = ((1 - MovingAvgDataRateWeight) * PastDataRate) + (MovingAvgDataRateWeight * InstantaneousDataRate) simParameters.MovingAvgDataRateWeight = 0.5; % gNB ensures that PUSCH assignment is received at UEs PUSCHPrepTime ahead % of the transmission time simParameters.PUSCHPrepTime = 200; % In microseconds % Maximum RBs allotted to a UE in a slot for the UL and DL % transmission (limit is applicable for new PUSCH and PDSCH assignments and % not for the retransmissions) simParameters.RBAllocationLimitUL = 100; % For PUSCH simParameters.RBAllocationLimitDL = 100; % For PDSCH
Загрузите таблицу строения логического канала. Каждая строка в таблице представляет один логический канал и имеет эти свойства в виде столбцов.
RNTI - Временный идентификатор радиосети UE.
LogicalChannelID - Логический идентификатор канала.
LCGID - Логический идентификатор группы каналов.
SeqNumFieldLength - определяет длину поля порядкового номера. Это занимает или 6, или 12.
MaxTxBufferSDUs - максимальный buffer size Tx (по количеству пакетов).
ReassemblyTimer - определяет таймер повторной сборки (в мс).
EntityType - определяет тип сущности RLC. Оно принимает значения 0, 1 и 2, что указывает, является ли сущность RLC UM однонаправленным DL, однонаправленным UL или двунаправленным UM, соответственно.
Приоритет - Приоритет логического канала.
PBR - приоритетная скорость передачи битов (в килобайтах в секунду).
BSD - длительность интервала (в мс).
load('NRFDDRLCChannelConfig.mat')
simParameters.RLCChannelConfig = RLCChannelConfig;
Загрузите таблицу строения приложения, содержащую эти поля. Каждая строка в таблице представляет одно приложение и имеет эти свойства в виде столбцов.
PacketInterval - интервал между двумя последовательными генерация пакетов (в мс).
PacketSize - размер пакета (в байтах).
HostDevice - определяет устройство (UE или gNB), на котором установлено приложение с заданным строением. Устройство принимает значения 0, 1 или 2. Значения указывают, что приложение сконфигурировано на стороне gNB, стороне UE или обоих UE и gNB соответственно.
RNTI - Временный идентификатор радиосети UE. Это определяет UE, для которого установлено приложение.
LCID - Логический идентификатор канала.
load('NRFDDAppConfig.mat');
simParameters.AppConfig = AppConfig;
Логирование и визуализация Строения
% The parameters CQIVisualization and RBVisualization control the display % of these visualizations: (i) CQI visualization of RBs (ii) RB assignment % visualization. By default, these plots are disabled. You can enable them % by setting to 'true' simParameters.CQIVisualization = false; simParameters.RBVisualization = false; % The output metrics plots are updated periodically NumMetricsSteps times within the % simulation duration simParameters.NumMetricsSteps = 20; % MAT-files to write the logs into. They are used for post simulation analysis and visualization simParameters.ParametersLogFile = 'simParameters'; % For logging the simulation parameters simParameters.SimulationLogFile = 'simulationLogs'; % For logging the simulation logs % Validate the simulation configuration hNRSchedulingFDDValidateConfig(simParameters);
На основе первичных параметров конфигурации вычислите выведенные параметры. Кроме того, установите некоторые конкретные константы примера.
simParameters.DuplexMode = 0; % FDD % Size of sub-band for CQI reporting in terms of number of RBs (Only used % when 5G Toolbox™ PHY layer processing is enabled) simParameters.SubbandSize = 16; simParameters.NumCells = 1; % Number of cells simParameters.NCellID = 1; % Physical cell ID simParameters.GNBPosition = [0 0 0]; % Position of gNB in (x,y,z) coordinates % Slot duration for the selected SCS and number of slots in a 10 ms frame slotDuration = 1/(simParameters.SCS/15); % In ms numSlotsFrame = 10/slotDuration; % Number of slots in a 10 ms frame numSlotsSim = simParameters.NumFramesSim * numSlotsFrame; % Number of slots in the simulation % Calculate maximum achievable CQI value for the UEs based on their distance from % the gNB maxUECQIs = zeros(simParameters.NumUEs, 1); % To store the maximum achievable CQI value for UEs for ueIdx = 1:simParameters.NumUEs % Based on the distance of the UE from gNB, find matching row in % CQIvsDistance mapping matchingRowIdx = find(simParameters.CQIvsDistance(:, 1) > simParameters.UEDistance(ueIdx)); if isempty(matchingRowIdx) maxUECQIs(ueIdx) = simParameters.CQIvsDistance(end, 2); else maxUECQIs(ueIdx) = simParameters.CQIvsDistance(matchingRowIdx(1), 2); end end % Interval at which metrics visualization updates in terms of number of % slots. As one slot is the finest time-granularity of the simulation, make % sure that MetricsStepSize is an integer simParameters.MetricsStepSize = ceil(numSlotsSim / simParameters.NumMetricsSteps); if mod(numSlotsSim, simParameters.NumMetricsSteps) ~= 0 % Update the NumMetricsSteps parameter if NumSlotsSim is not % completely divisible by it simParameters.NumMetricsSteps = floor(numSlotsSim / simParameters.MetricsStepSize); end % Define initial UL and DL channel quality as an N-by-P matrix, % where 'N' is the number of UEs and 'P' is the number of RBs in the carrier % bandwidth. The initial value of CQI for each RB, for each UE, is given % randomly and is limited by the maximum achievable CQI value corresponding % to the distance of the UE from gNB simParameters.InitialChannelQualityUL = zeros(simParameters.NumUEs, simParameters.NumRBs); % To store current UL CQI values on the RBs for different UEs simParameters.InitialChannelQualityDL = zeros(simParameters.NumUEs, simParameters.NumRBs); % To store current DL CQI values on the RBs for different UEs for ueIdx = 1:simParameters.NumUEs % Assign random CQI values for the RBs, limited by the maximum achievable CQI value simParameters.InitialChannelQualityUL(ueIdx, :) = randi([1 maxUECQIs(ueIdx)], 1, simParameters.NumRBs); % Initially, DL and UL CQI values are assumed to be equal simParameters.InitialChannelQualityDL(ueIdx, :) = simParameters.InitialChannelQualityUL(ueIdx, :); end % To store the logical channel information associated per UE lchInfo = repmat(struct('RNTI', [], 'LCID', [], 'EntityDir', []), [simParameters.NumUEs 1]); for 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); end if ~isfield(simParameters, 'SchedulingType') || simParameters.SchedulingType == 0 % If no scheduling type is specified or slot based scheduling is specified rbAssignmentPlotPeriodicity = numSlotsFrame; % Update RB assignment visualization every frame (10 ms) tickGranularity = 14; simParameters.PUSCHMappingType = 'A'; simParameters.PDSCHMappingType = 'A'; else % Symbol based scheduling rbAssignmentPlotPeriodicity = 1; % Update RB assignment visualization every slot tickGranularity = 1; simParameters.PUSCHMappingType = 'B'; simParameters.PDSCHMappingType = 'B'; end
Создайте объекты gNB и UE, инициализируйте информацию о качестве канала для UE и настройте логический канал в gNB и UE. Классы helper hNRGNB.m и hNRUE.m создают узлы gNB и UE соответственно, содержащие слои RLC и управления доступом к среде (MAC). Для MAC-уровня hNRGNB.m использует helper class hNRGNBMAC.m для реализации функциональности gNB MAC и hNRUE.m использует hNRUEMAC.m для реализации функциональности UE MAC. Планировщики реализованы в hNRSchedulerRoundRobin.m (RR), hNRSbestCQI.m (PF), hNRSchedulerBestCQI.m (Best CQI I Все планировщики наследуют от базового класса hNRScheduler.m, который содержит основные функциональные возможности планирования. Для слоя RLC и hNRGNB.m, и hNRUE.m используют hNRUMEntity.m для реализации функциональности передатчика и приемника RLC. Слой Passthrough PHY для UE и gNB реализован в hNRUEPassThroughPhy.m и hNRGNBPassThroughPhy.m, соответственно.
simParameters.Position = simParameters.GNBPosition; gNB = hNRGNB(simParameters); % Create gNB node % Create and add scheduler switch(simParameters.SchedulerStrategy) case 'RR' % Round robin scheduler scheduler = hNRSchedulerRoundRobin(simParameters); case 'PF' % Proportional fair scheduler scheduler = hNRSchedulerProportionalFair(simParameters); case 'BestCQI' % Best CQI scheduler scheduler = hNRSchedulerBestCQI(simParameters); end addScheduler(gNB, scheduler); % Add scheduler to gNB gNB.PhyEntity = hNRGNBPassThroughPhy(simParameters); % Add passthrough PHY configurePhy(gNB, simParameters); setPhyInterface(gNB); % Set the interface to PHY layer % Create the set of UE nodes UEs = cell(simParameters.NumUEs, 1); for ueIdx=1:simParameters.NumUEs simParameters.Position = [simParameters.UEDistance(ueIdx) 0 0]; % Position of UE UEs{ueIdx} = hNRUE(simParameters, ueIdx); UEs{ueIdx}.PhyEntity = hNRUEPassThroughPhy(simParameters, ueIdx); % Add passthrough PHY configurePhy(UEs{ueIdx}, simParameters); setPhyInterface(UEs{ueIdx}); % Set the interface to PHY layer % Initialize the UL CQI values at gNB updateChannelQuality(gNB, simParameters.InitialChannelQualityUL(ueIdx, :), 1, ueIdx); % 1 for UL % Initialize the DL CQI values at gNB and UE. The DL CQI values % help gNB in scheduling, and UE in packet error probability estimation updateChannelQuality(gNB, simParameters.InitialChannelQualityDL(ueIdx, :), 0, ueIdx); % 0 for DL updateChannelQuality(UEs{ueIdx}, simParameters.InitialChannelQualityDL(ueIdx, :)); end % Setup logical channels for lchInfoIdx = 1:size(simParameters.RLCChannelConfig, 1) rlcChannelConfigStruct = table2struct(simParameters.RLCChannelConfig(lchInfoIdx, :)); ueIdx = simParameters.RLCChannelConfig.RNTI(lchInfoIdx); % Setup the logical channel at gNB and UE gNB.configureLogicalChannel(ueIdx, rlcChannelConfigStruct); UEs{ueIdx}.configureLogicalChannel(ueIdx, rlcChannelConfigStruct); end % Add data traffic pattern generators to gNB and UE nodes for appIdx = 1:size(simParameters.AppConfig, 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); % Calculate the data rate (in kbps) of On-Off traffic pattern using % packet size (in bytes) and packet interval (in ms) dataRate = ceil(1000/packetInterval) * packetSize * 8e-3; % Limit the size of the generated application packet to the maximum RLC % SDU size. The maximum supported RLC SDU size is 9000 bytes if packetSize > 9000 packetSize = 9000; end % Create an object for On-Off network traffic pattern and add it to the % specified UE. This object generates the uplink data traffic on the UE if device == 1 || device == 2 ulApp = networkTrafficOnOff('PacketSize', packetSize, 'GeneratePacket', true, ... 'OnTime', simParameters.NumFramesSim/100, 'OffTime', 0, 'DataRate', dataRate); UEs{rnti}.addApplication(rnti, lcid, ulApp); end % Create an object for On-Off network traffic pattern for the specified % UE and add it to the gNB. This object generates the downlink data % traffic on the gNB for the UE if device == 0 || device == 2 dlApp = networkTrafficOnOff('PacketSize', packetSize, 'GeneratePacket', true, ... 'OnTime', simParameters.NumFramesSim/100, 'OffTime', 0, 'DataRate', dataRate); gNB.addApplication(rnti, lcid, dlApp); end end % Setup the UL and DL packet distribution mechanism simParameters.MaxReceivers = simParameters.NumUEs; % Create DL packet distribution object dlPacketDistributionObj = hNRPacketDistribution(simParameters, 0); % 0 for DL % Create UL packet distribution object ulPacketDistributionObj = hNRPacketDistribution(simParameters, 1); % 1 for UL hNRSetUpPacketDistribution(simParameters, gNB, UEs, dlPacketDistributionObj, ulPacketDistributionObj);
Симуляция запуска паза по пазу. В каждом пазе выполняются следующие операции:
Запуск слоев MAC и PHY gNB
Запуск слоев MAC и PHY UE
Layer specific logging и визуализация
Продвигайте таймер для узлов. Каждые 1 мс он также отправляет триггер в слои приложения и RLC. Прикладные слои и RLC слоя выполнять свои запланированные операции на основе триггера таймера 1 мс.
% Create an object for MAC (UL & DL) scheduling information visualization and logging simSchedulingLogger = hNRSchedulingLogger(simParameters); % Create RLC statistics logging object simRLCLogger = hNRRLCLogger(simParameters, lchInfo); % Create visualization object for RLC and MAC metrics visualizer = hNRMetricsVisualizer(simParameters, 'RLCLogger', simRLCLogger, 'LCHInfo', lchInfo, 'MACLogger', simSchedulingLogger); % Run processing loop slotNum = 0; numSymbolsSim = numSlotsSim * 14; % Simulation time in units of symbol duration % Execute all the symbols in the simulation for symbolNum = 1 : tickGranularity : numSymbolsSim if mod(symbolNum - 1, 14) == 0 slotNum = slotNum + 1; end % Run MAC and PHY of gNB run(gNB); % Run MAC and PHY of UEs for ueIdx = 1:simParameters.NumUEs run(UEs{ueIdx}); end % RLC logging (only at slot boundary) if (simParameters.SchedulingType == 1 && mod(symbolNum, 14) == 0) || (simParameters.SchedulingType == 0 && mod(symbolNum-1, 14) == 0) logCellRLCStats(simRLCLogger, gNB, UEs); end % MAC logging logCellSchedulingStats(simSchedulingLogger, symbolNum, gNB, UEs); % Visualization % Check slot boundary if symbolNum > 1 && ((simParameters.SchedulingType == 1 && mod(symbolNum, 14) == 0) || (simParameters.SchedulingType == 0 && mod(symbolNum-1, 14) == 0)) % RB assignment visualization (if enabled) if simParameters.RBVisualization if mod(slotNum, rbAssignmentPlotPeriodicity) == 0 % Plot at slot boundary, if the update periodicity is reached plotRBGrids(simSchedulingLogger); end end % CQI grid visualization (if enabled) if simParameters.CQIVisualization if mod(slotNum, numSlotsFrame) == 0 % Plot at frame boundary plotCQIRBGrids(simSchedulingLogger); end end % If the update periodicity is reached, plot RLC and scheduler metrics visualization % at slot boundary if mod(slotNum, simParameters.MetricsStepSize) == 0 plotMetrics(visualizer, slotNum); end end % Advance timer ticks for gNB and UEs by 14 symbols advanceTimer(gNB, tickGranularity); for ueIdx = 1:simParameters.NumUEs advanceTimer(UEs{ueIdx}, tickGranularity); end end
Показаны пять типов визуализации во время выполнения:
Отображение значений CQI для UE по полосе пропускания PUSCH и PDSCH: Вы можете включить эту визуализацию в разделе Logging and Visualization Configuration. Для получения дополнительной информации смотрите описание рисунка «Визуализация качества канала» в примере планирования NR PUSCH FDD.
Отображение назначения ресурсной сетки для UE: 2D частотно-временная сетка показывает распределение ресурсов для UE. Эту визуализацию можно включить в разделе Logging and Visualization Configuration. Для получения дополнительной информации см. рисунок «Распределение ресурсной сетки» в примере планирования NR PUSCH FDD.
Отображение графиков метрик планирования UL: Четыре графика, отображенные на рисунке 'Uplink Scheduler Performance Metrics', представляют: Пропускная способность UL (для каждого UE и камеры), положительное положение UL (для каждого UE и камеры), процент доли ресурса среди UE (из общих ресурсов UL), чтобы передать справедливость планирования, и ожидаемое состояние буфера UL для UE, чтобы показать, получают ли UE достаточные ресурсы. Максимальное достижимое значение скорости передачи данных для пропускной способности UL показано штриховой линией на графиках пропускной способности и качества. Метрики эффективности графиков обновляться для каждого metricsStepSize
пазы.
Отображение графиков метрик планирования DL: Как и графики метрик UL, 'Nowlink Scheduler Performance Metrics' отображает соответствующие подграфики для направления DL. Метрики эффективности графиков обновляться для каждого metricsStepSize
пазы.
Отображение метрик RLC графиков: рисунок 'RLC Metrics Visualization' показывает количество байтов, переданных слоем RLC (на логический канал) для каждого UE. Метрики RLC графика обновляются для каждого metricsStepSize
пазы.
Параметры, используемые для симуляции и журналов симуляции, сохраняются в MAT-файлах для постсимуляционного анализа и визуализации. Параметры симуляции сохраняются в MAT-файле с именем файла в качестве значения параметра конфигурации simParameters.ParametersLogFile
. Журналы для каждого временного шага, журналы назначения расписания и журналы RLC сохраняются в MAT-файле simParameters.SimulationLogFile
. После симуляции откройте файл для загрузки DLTimeStepLogs
, ULTimeStepLogs
SchedulingAssignmentLogs
, и RLCLogs
в рабочей области.
Журналы временного шага: И DL и журналы временного шага УЛ. следуют за тем же форматом. Для получения дополнительной информации о формате журнала смотрите раздел 'Симуляция Журналов' в NR PUSCH FDD Scheduling.
Журналы назначения расписания: Информация обо всех назначениях расписания и связанной информации регистрируется в этом файле. В таблице показаны выборки записей журнала.
Журналы RLC: Для получения дополнительной информации о формате журнала RLC смотрите Планирование FDD PUSCH NR.
Можно запустить скрипт NRPostSimVisualization, чтобы получить визуализацию журналов после симуляции. В симуляцию post скрипта вы получаете переменную isLogReplay
, который предоставляет эти опции для визуализации рисунков «Распределение ресурсной сетки» и «Визуализация качества канала».
Задайте isLogReplay
к true для воспроизведения журналов симуляции.
Задайте isLogReplay
ложь, чтобы проанализировать детали конкретной системы координат. В окне 'Resource Grid Allocation' введите номер системы координат, чтобы визуализировать назначение ресурса для всей системы координат. Номер кадра, введенный здесь, также управляет номером системы координат для рисунка «Визуализация качества канала».
% Get the logs simulationLogs = cell(1,1); logInfo = struct('DLTimeStepLogs',[], 'ULTimeStepLogs',[], 'SchedulingAssignmentLogs',[] ,'RLCLogs',[]); [logInfo.DLTimeStepLogs, logInfo.ULTimeStepLogs] = getSchedulingLogs(simSchedulingLogger); logInfo.SchedulingAssignmentLogs = getGrantLogs(simSchedulingLogger); % Scheduling assignments log logInfo.RLCLogs = getRLCLogs(simRLCLogger); simulationLogs{1} = logInfo; save(simParameters.ParametersLogFile, 'simParameters'); % Save simulation parameters in a MAT-file save(simParameters.SimulationLogFile, 'simulationLogs'); % Save simulation logs in a MAT-file
Можно использовать этот пример для дальнейшего изучения этих опций.
Можно изменить существующую стратегию планирования для реализации пользовательской стратегии. Peform следующие шаги для этого.
Создайте пользовательский класс планировщика
Создайте новый customStrategy.m
класса и наследовать от hNRScheduler.m Реализуйте конструктор класса, чтобы вызвать конструктор базового класса, как показано ниже. Для получения дополнительной информации см. конструктор h NRS cheduler Round Robin.m, h NRS cheduler Proportional Fair.m, h NRS cheduler Best CQI. m.
function obj = customStrategy(param) obj = obj@hNRScheduler(simParameters); % Invoke the super class constructor to initialize the properties % Initialize any properties specific to this custom scheduling strategy end
Реализация пользовательского планирования UL
Переопределите scheduleULResourcesSlot
функция базового класса путем ее реализации в классе customStrategy.m
. функция.
function uplinkGrants = scheduleULResourcesSlot(obj, slotNum) % Implement custom UL scheduling to populate the output 'uplinkGrants' end
Первый входной obj
является пользовательским объектом планировщика. В силу наследования он содержит контекст базового класса hNRScheduler.m, который может использоваться в качестве входов для принятия решений о планировании. Второй входной slotNum
- номер паза в системе координат 10 мс, ресурсы UL которого планируются. Обратите внимание, что это не текущий паз, в котором работает планировщик UL, а паз, который становится запланированным. Использование контекста в obj
, выполните пользовательское планирование и заполните выходы uplinkGrants
этой функции с массивом допустимых назначений планирования UL. uplinkGrants
может иметь не более одного назначения для каждого UE. Каждый элемент в этом массиве является назначением PUSCH для UE. Кроме того, обновляйте контекст процессов UL HARQ согласно идентификатору процесса HARQ, присвоенному в присвоениях UL. Смотрите scheduleULResourcesSlot
функция в hNRScheduler.m для получения дополнительной информации.
Реализация пользовательского планирования DL
Выполните процедуру, подобную пользовательскому планированию UL, чтобы переопределить scheduleDLResourcesSlot
функция базового класса путем ее реализации в классе customStrategy.m
. функция.
Создайте и установите пользовательский планировщик
Чтобы использовать пользовательский планировщик в этом примере, создайте его объект и установите его на gNB в разделе gNB и UEs Setup.
scheduler = customScheduler(simParameters);
addScheduler(gNB, scheduler); % Add scheduler to gNB
Можно также переключиться с проходного слоя PHY на 5G обработки Toolbox™ физического слоя путем создания объектов PHY с помощью hNRGNBPhy.m и hNRUEPhy.m. Для получения дополнительной информации смотрите раздел «gNB и Setup UE» в разделе «Оценка эффективности камер NR с интегрированием на физическом слое».
На основе выбранной стратегии планирования этот пример показывает присвоение ресурсов UL и DL нескольким UE gNB. Отображение визуализации во время выполнения ресурсной сетки предоставляет подробную информацию о RB, выделенных каждому UE, и идентификаторе процесса HARQ, назначенном для передачи. Эффективность планирования UL и DL анализируется на основе графиков пропускной способности и качества во время выполнения, справедливости ресурса и состояния буфера в ожидании на UE. Более тщательный анализ после симуляции при помощи сохранённых журналов дает подробную картину операций, происходящих на основе паза.
Можно также переключить рабочий режим сущности RLC из единой системы обмена сообщениями в квитированный режим (AM) путем изменения полей входной структуры EntityType
и SeqNumFieldLength
в configureLogicalChannel
функция hNRNode.m. Установите EntityType
до 3 и SeqNumFieldLength
либо 12, либо 18. Можно также добавить и задать следующие поля в структуре входа для исследования функциональности RLC AM:
PollRetransmitTimer
: Таймер, используемый передающей стороной сущности AM RLC в порядок для повторной передачи опроса
PollPDU
: Параметр, используемый передающей стороной сущности RLC AM, чтобы инициировать опрос на основе количества PDU
PollByte
: Параметр, используемый передающей стороной сущности AM RLC, чтобы инициировать опрос на основе количества байтов SDU
MaxRetransmissions
: Максимальное количество повторных передач, соответствующих RLC SDU, включая его сегменты
StatusProhibitTimer
: Таймер, используемый приемной стороной сущности AM RLC в порядок для запрещения частой передачи PDU состояния
В примере используются эти вспомогательные функции и классы:
hWirelessNode.m: Базовый класс беспроводного узла
hNRNode.m: базовый класс узла NR как для gNB, так и для UE
hNRGNB.m: функциональность узла gNB
hNRUE.m: функциональность узла UE
helperApplication.m: функциональность слоя
hNRRLCEntity.m: Базовый класс для сущностей RLC UM и AM
hNRUMEntity.m: функциональность RLC UM
hNRAMEntity.m: функциональность RLC AM
hNRRLCDataPDUInfo.m: Создает информационный объект PDU RLC
hNRRLCBufferStatus.m: Генерирует объект информации о состоянии буфера RLC
hNRRLCDataReassembly.m: создайте информационный объект повторной сборки RLC SDU
hNRMAC.m: функциональность базового класса NR MAC
hNRGNBMAC.m: функциональность gNB MAC
hNRUEMAC.m: функциональность UE MAC
hNRScheduler.m: функциональность планировщика Core MAC
hNRSchedulerBestCQI.m: Реализует лучшую стратегию планирования CQI
hNRSchedulerProportionalFair.m: Реализует пропорциональную стратегию справедливого планирования
hNRSchedulerRoundRobin.m: Реализует стратегию кругового планирования
hNRMACBSR.m: Генерирует отчет о состоянии буфера
hNRMACBSRParser.m: Анализ отчета о состоянии буфера
hNRMACSubPDU.m: генерирует MAC subPDU
hNRMACPaddiningSubPDU.m: генерирует MAC subPDU с заполнением
hNRMACMultiplex.m: генерирует MAC PDU
hNRMACPDUParser.m: Анализирует MAC PDU
hNewHARQProcesses.m: Создает новый процесс HARQ
hUpdateHARQProcess.m: обновляет процесс HARQ
hNRPhyInterface.m: класс интерфейса слоя PHY
hNRGNBPassthroughPhy.m: gNB прохождение PHY слоя
hNRUEPassthroughPhy.m: прохождение по UE слою
hNRGNBPhy.m: функциональность gNB PHY
hNRUEPhy.m: Функциональность UE PHY
hNRPUSCHInfo.m: информационная структура PUSCH передана MAC на слой PHY
hNRPDSCHInfo.m: информационная структура PDSCH передана MAC на слой PHY
hNRRxIndicationInfo.m: Информационная структура передана слоем PHY на MAC вместе с MAC PDU
hNRUplinkGrantFormat.m: Формат гранта UL
hNRDownlinkGrantFormat.m: Формат гранта DL
hNRPacketDistribution.m: Создает объект распределения пакетов
hNRPhyRxBuffer.m: Создает объект приема сигнала PHY
hSkipWeakTimingOffset.m: Пропустить оценки смещения времени со слабой корреляцией
hNRRLCLogger.m: Реализует функции логгирования и визуализации статистики RLC
hNRSchedulingLogger.m: Реализует функции логгирования и визуализации информации о планировании
hNRPhyLogger.m: Реализует функции логгирования ошибок восходящего и нисходящего блоков и визуализации
hNRSchedulingFDDValidateConfig.m: Проверяет строение симуляции
hNRSetUpPacketDistribution.m: Настройка функциональности распределения пакетов
hNRPacketWriter.m: Захватывает пакеты MAC
hNRPacketInfo.m: Формат метаданных для захвата MAC-пакетов
hNRMetricsVisualizer.m: Реализует функциональность визуализации метрик
NRPostSimVisualization.m: Визуализация после симуляции скрипта
[1] 3GPP TS 38.104. "NR; радиопередача и прием базовой станции (BS). "3-ья Генерация партнерский проект; Группа технических спецификаций Радиосеть доступ.
[2] 3GPP TS 38.214. "NR; Процедуры физического слоя данных ". 3-ья Генерация проект Партнерства; Группа технических спецификаций Радиосеть доступ.
[3] 3GPP TS 38.321. "NR; Спецификация протокола управления средним доступом (MAC). "3rd Генерация Partnership Project; Группа технических спецификаций Радиосеть доступ.
[4] 3GPP TS 38.322. "NR; Спецификация протокола Radio Ссылки Control (RLC). "3rd Генерация Partnership Project; Группа технических спецификаций Радиосеть доступ.
[5] 3GPP TS 38.331. "NR; Спецификация протокола управления радиоресурсами (RRC). "3rd Генерация Partnership Project; Группа технических спецификаций Радиосеть доступ.