exponenta event banner

Оценка эффективности планирования NR FDD

В этом примере моделируется планирование ресурсов нисходящей линии связи (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

Первый временной интервал среди p временных интервалов, которые должны быть запланированы в прогоне, является ближайшим предстоящим временным интервалом, который удовлетворяет способности UE по времени подготовки PUSCH. Например, на рисунке показано, как планировщик выбирает слоты во время двух последовательных прогонов. Он предполагает периодичность планировщика (p) как 3 слота. Следовательно, планировщик работает после каждых 3 слотов и планирует ресурсы для 3 слотов. Предполагается, что время подготовки PUSCH для всех UE превышает 1 слот (14 символов), но меньше 2 слотов (28 символов).

  • Run-1: Когда планировщик запускается в начале слота A, он планирует 3 слота, начиная с слота C, поскольку для слота A и слота B UE не получают достаточного времени подготовки PUSCH (UE получает время 0 символов в начале слота A и 14 символов в начале слота B). Для слота-C UE получают 28 символов для подготовки PUSCH, и это удовлетворяет возможности времени подготовки PUSCH. Следовательно, в этом прогоне запланированы слоты-C, D и E.

  • Run-2: Когда планировщик запускается в начале Slot-D, он планирует следующие 3 смежных слота, начиная с Slot-F (Slot-F, G и H).

Планировщик DL

Первый слот из p слотов, которые должны быть запланированы в прогоне, является ближайшим следующим слотом.

  • Run-1: Когда планировщик запускается в начале Slot-A, он планирует 3 смежных Slot-B, C и D.

  • Run-2: Когда планировщик запускается в начале Slot-D, он планирует 3 смежных слота Slot-E, F и G.

Вы можете выбрать любую из реализованных стратегий планирования: пропорциональная ярмарка (PF), лучшая CQI или круговая (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.

  • Идентификатор логического канала - идентификатор логического канала.

  • LCGID - идентификатор группы логических каналов.

  • SeqNumStartLength - определяет длину поля порядкового номера. Требуется либо 6, либо 12.

  • MaxTxBufferSDU - максимальный размер буфера Tx (по количеству пакетов).

  • RebemblyTimer - определяет таймер повторной сборки (в мс).

  • EntityType - определяет тип сущности RLC. Он принимает значения 0, 1 и 2, которые указывают, является ли объект UM RLC однонаправленным DL, однонаправленным UL или двунаправленным UM соответственно.

  • Priority - приоритет логического канала.

  • 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

Создайте объекты gNB и UE, инициализируйте информацию о качестве канала для UE и настройте логический канал в gNB и UE. Вспомогательные классы hNRGNB.m и hNRUE.m создают узлы gNB и UE соответственно, содержащие уровни RLC и управления доступом к среде (MAC). Для уровня MAC hNRGNB.m использует вспомогательный класс hNRGNBMAC.m для реализации функциональных возможностей MAC gNB, а hNRUE.m использует hNRUEMAC.m для реализации функциональных возможностей MAC UE. Планировщики реализованы в hNRschedulerRoundRobin.m (RR), hNRschedulerFair.m (PF), hNRSchedulerBestCQI.m (Best CQI). Все планировщики наследуют от базового класса hNRScheduler.m, который содержит основные функции планирования. Для уровня RLC как hNRGNB.m, так и hNRUE.m используют hNRUMentity.m для реализации функциональных возможностей передатчика и приемника RLC. Уровень Passthrough PHY для UE и gNB реализован в hNRUEPassThrougHy.m и hNRGNBPassThrougHy.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

  • Ведение журнала и визуализация на уровне

  • Выполните опережение таймера для узлов. Каждые 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. Эту визуализацию можно включить в разделе Конфигурация регистрации и визуализации. Для получения дополнительной информации см. рисунок «Распределение матрицы ресурсов» в примере планирования NR PUSCH FDD.

  • Отображение графиков метрик планирования UL: четыре графика, отображенные на рисунке «Показатели производительности планировщика восходящей линии связи», представляют: Пропускная способность UL (на UE и соту), гудпут UL (на UE и соту), процент распределения ресурсов между UE (из общего объема ресурсов UL) для передачи справедливости планирования и состояние буфера UL UE в ожидании, чтобы показать, получают ли UE достаточные ресурсы. Максимально достижимое значение скорости передачи данных для пропускной способности UL показано пунктирной линией на графиках пропускной способности и гудпута. Графики показателей производительности обновляются для каждого metricsStepSize слоты.

  • Отображение графиков метрик планирования DL: Как и графики метрик UL, «Downlink Scheduler Performance Metrics» отображает соответствующие подграфики для направления DL. Графики показателей производительности обновляются для каждого metricsStepSize слоты.

  • Отображение графиков метрик RLC: Рисунок «Визуализация метрик RLC» показывает количество байтов, переданных уровнем RLC (на логический канал) для каждого UE. Обновление графика метрик RLC для каждого metricsStepSize слоты.

Журналы моделирования

Параметры, используемые для моделирования, и журналы моделирования сохраняются в MAT-файлах для анализа и визуализации после моделирования. Параметры моделирования сохраняются в MAT-файле с именем файла в качестве значения параметра конфигурации. simParameters.ParametersLogFile. Журналы каждого шага времени, журналы назначения планирования и журналы RLC сохраняются в MAT-файле. simParameters.SimulationLogFile. После моделирования откройте файл для загрузки DLTimeStepLogs, ULTimeStepLogs SchedulingAssignmentLogs, и RLCLogs в рабочей области.

Регистрации временного шага: И DL и регистрации временного шага УЛ. следуют за тем же форматом. Для получения подробной информации о формате журнала см. раздел «Журналы моделирования» в NR PUSCH FDD Scheduling.

Журналы назначений планирования: В этот файл заносится информация обо всех назначениях планирования и соответствующая информация. В таблице приведены примеры записей журнала.

Журналы RLC: Дополнительные сведения о формате журнала RLC см. в разделе Планирование FDD NR PUSCH.

Чтобы получить визуализацию журналов после моделирования, можно запустить сценарий NRPostSimVisualization. В сценарии постмульсионного моделирования предоставляется переменная isLogReplay, которая предоставляет эти опции для визуализации фигур «Распределение сетки ресурсов» и «Визуализация качества канала».

  • Набор isLogReplay true для воспроизведения журналов моделирования.

  • Набор isLogReplay значение false для анализа подробных данных конкретного кадра. В окне «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

Дальнейшие исследования

Этот пример можно использовать для дальнейшего изучения этих параметров.

Пользовательское планирование

Существующую стратегию планирования можно изменить для реализации пользовательской стратегии. Выполните следующие шаги для достижения этой цели.

Создание пользовательского класса планировщика

Создать новый класс customStrategy.m и наследовать от hNRScheduler.m. Реализуйте конструктор класса для вызова конструктора базового класса, как показано ниже. Дополнительные сведения см. в конструкторе hNRschedulerRoundRobin.m, hNRschedulerFair.m, hNRschedulerBestCQI.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. Кроме того, обновите контекст процессов HARQ UL согласно идентификатору процесса HARQ, назначенному в назначениях UL. См. раздел scheduleULResourcesSlot Для получения дополнительной информации выполните функцию hNRscheduler.m.

Внедрение пользовательского планирования DL

Выполните процедуру, такую как пользовательское планирование UL, чтобы переопределить scheduleDLResourcesSlot функция базового класса путем его реализации в классе customStrategy.m. функция.

Создание и установка пользовательского планировщика

Чтобы использовать пользовательский планировщик в этом примере, создайте его объект и установите его в gNB в разделе gNB and UE Setup.

scheduler = customScheduler(simParameters);
addScheduler(gNB, scheduler); % Add scheduler to gNB

Использовать 5G Toolbox™ физическом уровне

Можно также переключиться с уровня PHY на 5G Toolbox™ обработку физического уровня путем создания объектов PHY с использованием hNRGNBPhy.m и hNRUEPhy.m. Дополнительные сведения см. в разделе «Настройка gNB и UE» документа Оценка производительности ячеек NR с интеграцией физического уровня.

На основании выбранной стратегии планирования этот пример показывает назначение ресурсов UL и DL множеству UE посредством gNB. Отображение визуализации во время выполнения сетки ресурсов дает подробную информацию о RB, назначенных каждому UE, и идентификаторе процесса HARQ, назначенном для передачи. Производительность планирования UL и DL анализируется на основе графиков времени выполнения пропускной способности и гудпута, справедливости распределения ресурсов и состояния ожидающего буфера на UE. Более тщательный анализ после моделирования с использованием сохраненных журналов позволяет получить подробную картину операций, выполняемых в каждом слоте.

Использовать RLC AM

Можно также переключить режим работы объекта RLC из режима единой системы обмена сообщениями в режим подтверждения (AM) путем изменения полей структуры ввода. EntityType и SeqNumFieldLength в configureLogicalChannel функция hNRNode.m. Установите EntityType до 3 и SeqNumFieldLength на 12 или 18. Для просмотра функциональных возможностей RLC AM можно также добавить и установить следующие поля в структуру ввода:

  • PollRetransmitTimerТаймер, используемый передающей стороной объекта AM RLC для повторной передачи опроса

  • PollPDU: Параметр, используемый передающей стороной объекта AM RLC для запуска опроса на основе количества PDU

  • PollByte: Параметр, используемый передающей стороной объекта AM RLC для запуска опроса на основе количества байтов SDU

  • MaxRetransmissionsМаксимальное количество повторных передач, соответствующих SDU RLC, включая его сегменты

  • StatusProhibitTimerТаймер, используемый принимающей стороной объекта AM RLC для запрета частой передачи блоков PDU состояния

Приложение

В примере используются следующие вспомогательные функции и классы:

  • HStartNode.m: базовый класс беспроводного узла

  • hNRNode.m: базовый класс узла NR как для gNB, так и для UE

  • hNRGNB.m: функциональность узла gNB

  • hNRUE.m: функциональные возможности узла UE

  • helperApplication.m: Функциональные возможности прикладного уровня

  • hNRRLEntity.m: Базовый класс для объектов RLC UM и AM

  • hNRUMEntity.m: Функциональные возможности RLC UM

  • hNRAMEntity.m: функциональные возможности RLC AM

  • hNRRLCDataPDUInfo.m: Создание информационного объекта PDU RLC

  • hNRRLCBufferStatus.m: Создает объект информации о состоянии буфера RLC

  • hNRRLCDataRecembly.m: Создание информационного объекта RLC SDU для повторной сборки

  • hNRMAC.m: функциональность базового класса NR MAC

  • hNRGNBMAC.m: функциональность MAC gNB

  • hNRUEMAC.m: Функциональность MAC UE

  • hNRscheduler.m: Основные функции планировщика MAC

  • hNRschedulerBestCQI.m: Реализует лучшую стратегию планирования CQI

  • hNRschedulerHair.m: Реализует стратегию пропорционального справедливого планирования

  • hNRRschedulerRoundRobin.m: Реализует стратегию циклического планирования

  • hNRMACBSR.m: Создание отчета о состоянии буфера

  • hNRMACBSRParser.m: Анализ отчета о состоянии буфера

  • hNRMACSubPDU.m: Создание подPDU MAC

  • hNRMACPaddingSubPDU.m: Создание подPDU MAC с дополнением

  • hNRMACMultiplex.m: генерирует PDU MAC

  • hNRMACPDUParser.m: Синтаксический анализ MAC PDU

  • hNewHARQPprocesses.m: Создание нового процесса HARQ

  • hStartHARQProcess.m: Обновление процесса HARQ

  • hNRPhyInterface.m: класс интерфейса уровня PHY

  • hNRGNBPassthroughPhy.m: gNB сквозной слой PHY

  • hNRUEPassthroughPhy.m: UE через слой PHY

  • hNRGNBPhy.m: Функциональность PHY gNB

  • hNRUEPhy.m: Функциональность PHY UE

  • hNRPUSCHInfo.m: Информационная структура PUSCH, передаваемая MAC на уровень PHY

  • hNRPDSCHInfo.m: информационная структура PDSCH передается MAC на уровень PHY

  • hNRRxInfo.m: Информационная структура, передаваемая PHY-уровнем MAC вместе с MAC PDU

  • hNRUplinkGrantFormat.m: формат предоставления UL

  • HNRDownlinkGrantFormat.m: формат гранта DL

  • hNRPacketDistribution.m: Создание объекта распространения пакетов

  • hNRPhyRxBuffer.m: Создает объект буфера приема PHY-сигнала

  • hSkipWeakTimingOffset.m: Пропускать оценки смещения времени со слабой корреляцией

  • hNRRLCLogger.m: Реализует функции регистрации и визуализации статистики RLC

  • hNRRschedulingLogger.m: Реализует функции регистрации и визуализации информации планирования

  • hNRPhyLogger.m: Реализует функции регистрации и визуализации частоты ошибок блоков восходящего и нисходящего каналов

  • hNRRschedulingFDDValidateConfig.m: Проверка конфигурации моделирования

  • hNRSetUpPacketDistribution.m: Настройка функциональности распределения пакетов

  • hNRPacketWriter.m: Захватывает пакеты MAC

  • hNRPacketInfo.m: формат метаданных для захвата MAC-пакетов

  • hNRMetricalVisualizer.m: Реализует функции визуализации метрик

  • NRPostSimVisualization.m: Сценарий визуализации после моделирования

Ссылки

[1] 3GPP TS 38.104. "НР; радиопередача и прием базовой станции (BS). "Проект партнерства 3-го поколения; Техническая спецификация на сеть радиодоступа группы.

[2] 3GPP TS 38.214. "НР; Процедуры физического уровня для данных. "Проект партнерства третьего поколения; Техническая спецификация на сеть радиодоступа группы.

[3] 3GPP TS 38.321. "НР; Спецификация протокола управления доступом к среде (MAC). "Проект партнерства 3-го поколения; Техническая спецификация на сеть радиодоступа группы.

[4] 3GPP TS 38.322. "НР; Спецификация протокола управления радиоканалом (RLC). "Проект партнерства 3-го поколения; Техническая спецификация на сеть радиодоступа группы.

[5] 3GPP TS 38.331. "НР; Спецификация протокола управления радиоресурсами (RRC). "Проект партнерства 3-го поколения; Техническая спецификация на сеть радиодоступа группы.

Связанные темы