NR FDD планируя оценку результатов деятельности

Этот пример показывает планирование в режиме дуплекса деления частоты (FDD) с функциональностью логического установления приоритетов канала (LCP) среднего управления доступом (MAC) и оценивает производительность сети. Планирование стратегии управляет нисходящим каналом (DL) и восходящим каналом (UL) планирование ресурсов и может быть настроено, чтобы оценить эффективность. Пример показывает функциональность слоя управления линией радиосвязи (RLC) в неподтвержденном режиме (UM) с LCP, чтобы служить нескольким логическим каналам. Можно смоделировать различные шаблоны трафика приложения. Физический слой (PHY) передачи без любой обработки физического уровня используется, который принимает основанный на вероятности подход к пакетным отказам приема модели. Можно переключиться на основанный на 5G Toolbox™ слой PHY для высококачественной обработки физического уровня. Эффективность стратегии планирования оценена в терминах достигнутой пропускной способности и справедливости в разделении ресурсов.

Введение

В этом примере показано, как стратегия планирования (управляемый gNB) присваивает UL и ресурсы DL среди UEs. Пример рассматривает следующие операции в gNB и UEs, которые упрощают UL и передачи DL и приемы.

Полный PUSCH или пакет PDSCH передаются в первом символе его выделенного набора символов. Приемник обрабатывает пакет в символе сразу после последнего символа в выделенном наборе символов.

Планировщики (UL и DL) запускаются каждый p пазы, чтобы присвоить UL и ресурсы DL, где p является сконфигурированной периодичностью планировщика. В каждом запуске количество запланированных пазов равно периодичности запущенного планировщика, p.

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

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

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

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

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

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

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

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

Можно выбрать любую из реализованных стратегий планирования: пропорциональная ярмарка (PF), лучший CQI или циклический алгоритм (RR). Различные поддерживаемые входные параметры к планировщику UL перечислены наряду со стратегиями планирования, которые рассматривают их.

Требуемые пакеты управления приняты, чтобы быть отправленными из полосы без потребности ресурсов для передачи. Пакеты управления являются присвоением UL, присвоением DL, буферным отчетом о состоянии (BSR) и обратной связью PDSCH.

Опорный сигнал демодуляции (DM-RS) не моделируется в этом примере. Однако один символ сохранен неиспользованным для него в PUSCH и присвоениях PDSCH.

Этот пример модели:

  • Находящийся на пазе UL и планирование DL. Гранулярность временного интервала присвоения UL и присвоения DL является одним пазом.

  • Выделение, состоящее из нескольких несмежных участков, ресурсов частотного диапазона в терминах ресурса блокирует группы (RBGs).

  • Конфигурируемый интервал поднесущей, приводящий к различной длительности паза.

  • Асинхронный адаптивный гибридный автоматический повторный запрос (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
% 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

gNB и Setup UEs

Создайте gNB и объекты UE, инициализируйте информацию о качестве канала для UEs и настройте логический канал в gNB и UE. Классы помощника hNRGNB.m и hNRUE.m создают gNB и узлы UE соответственно, содержа слои RLC и MAC. Для слоя МАКа hNRGNB.m использует класс помощника hNRGNBMAC.m, чтобы реализовать функциональность gNB MAC, и hNRUE.m использует hNRUEMAC.m, чтобы реализовать функциональность УИ МАКА. Планировщики реализованы в hNRSchedulerRoundRobin.m (RR), hNRSchedulerProportionalFair.m (PF), hNRSchedulerBestCQI.m (Лучший CQI). Все планировщики наследовались базовому классу 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 UEs

  • Слой определенное логгирование и визуализация

  • Усовершенствуйте таймер для узлов. Каждый 1 мс это также отправляет триггер в слои RLC и приложение. Прикладной уровень и слой RLC выполняют их запланированные операции на основе триггера таймера на 1 мс.

% To store these UE metrics for each slot: throughput bytes
% transmitted, goodput bytes transmitted, and pending buffer amount bytes.
% The number of goodput bytes is calculated by excluding the
% retransmissions from the total transmissions
UESlotMetricsUL = zeros(simParameters.NumUEs, 3);
UESlotMetricsDL = zeros(simParameters.NumUEs, 3);

% To store the RLC statistics for each slot
ueRLCStats = cell(simParameters.NumUEs, 1);
gNBRLCStats = cell(simParameters.NumUEs, 1);

 % To store current UL and DL CQI values on the RBs for different UEs
uplinkChannelQuality = zeros(simParameters.NumUEs, simParameters.NumRBs);
downlinkChannelQuality = zeros(simParameters.NumUEs, simParameters.NumRBs);

 % To store last received UL and DL HARQ process NDI flag value at UE
HARQProcessStatusUL = zeros(simParameters.NumUEs, simParameters.NumHARQ);
HARQProcessStatusDL = zeros(simParameters.NumUEs, simParameters.NumHARQ);

% Create an object for MAC (UL & DL) scheduling information visualization and logging
simSchedulingLogger = hNRSchedulingLogger(simParameters);

% To store the logical channel information associated per UE
lchInfo = repmat(struct('LCID',[],'EntityDir',[]), [simParameters.NumUEs 1]);
for ueIdx = 1:simParameters.NumUEs
    lchInfo(ueIdx).LCID = simParameters.RLCChannelConfig.LogicalChannelID(simParameters.AppConfig.RNTI == ueIdx);
    lchInfo(ueIdx).EntityDir = simParameters.RLCChannelConfig.EntityType(simParameters.AppConfig.RNTI == ueIdx);
end

% Create an object for RLC visualization and logging
simRLCLogger = hNRRLCLogger(simParameters, lchInfo);

symbolNum = 0;
% Run processing loop
for slotNum = 1:numSlotsSim
    
    % Run MAC and PHY layers of gNB
    run(gNB.MACEntity);
    run(gNB.PhyEntity);
    
    % Run MAC and PHY layers of UEs
    for ueIdx = 1:simParameters.NumUEs
        % Read the last received NDI flags for HARQ processes for
        % logging (Reading it before it gets overwritten by run function of MAC)
        HARQProcessStatusUL(ueIdx, :) = getLastNDIFlagHarq(UEs{ueIdx}.MACEntity, 1); % 1 for UL
        HARQProcessStatusDL(ueIdx, :) = getLastNDIFlagHarq(UEs{ueIdx}.MACEntity, 0); % 0 for DL
        run(UEs{ueIdx}.MACEntity); 
        run(UEs{ueIdx}.PhyEntity);
    end
    
    % RLC logging
    for ueIdx = 1:simParameters.NumUEs % For all UEs
        % Get RLC statistics
        ueRLCStats{ueIdx} = getRLCStatistics(UEs{ueIdx}, ueIdx);
        gNBRLCStats{ueIdx} = getRLCStatistics(gNB, ueIdx);
    end
    logRLCStats(simRLCLogger, ueRLCStats, gNBRLCStats); % Update RLC statistics logs
    
    % MAC logging
    % Read UL and DL assignments done by gNB MAC scheduler
    % at current time. Resource assignments returned by a scheduler (either
    % UL or DL) is empty, if either scheduler was not scheduled to run at
    % the current time or no resources got scheduled
    [resourceAssignmentsUL, resourceAssignmentsDL] = getCurrentSchedulingAssignments(gNB.MACEntity);
    % Read throughput and goodput bytes sent for each UE
    [UESlotMetricsDL(:, 1), UESlotMetricsDL(:, 2)] = getTTIBytes(gNB);
    UESlotMetricsDL(:, 3) = getBufferStatus(gNB); % Read pending buffer (in bytes) on gNB
    for ueIdx = 1:simParameters.NumUEs
        % Read the UL channel quality at gNB for each of the UEs for logging
        uplinkChannelQuality(ueIdx,:) = getChannelQuality(gNB, 1, ueIdx); % 1 for UL
        % Read the DL channel quality at gNB for each of the UEs for logging
        downlinkChannelQuality(ueIdx,:) = getChannelQuality(gNB, 0, ueIdx); % 0 for DL
        % Read throughput and goodput bytes transmitted for this UE in the current TTI for logging
        [UESlotMetricsUL(ueIdx, 1), UESlotMetricsUL(ueIdx, 2)] = getTTIBytes(UEs{ueIdx});
        UESlotMetricsUL(ueIdx, 3) = getBufferStatus(UEs{ueIdx}); % Read pending buffer (in bytes) on UE
    end
    % Update scheduling logs based on the current slot run of UEs and gNB.
    % Logs are updated in each slot, RB grid visualizations are updated
    % every frame, and metrics plots are updated every metricsStepSize
    % slots
    logScheduling(simSchedulingLogger, symbolNum + 1, resourceAssignmentsUL, UESlotMetricsUL, uplinkChannelQuality, HARQProcessStatusUL, 1); % 1 for UL
    logScheduling(simSchedulingLogger, symbolNum + 1, resourceAssignmentsDL, UESlotMetricsDL, downlinkChannelQuality, HARQProcessStatusDL, 0); % 0 for DL

    % Visualization
    % RB assignment visualization (if enabled)
    if simParameters.RBVisualization
        if mod(slotNum, numSlotsFrame) == 0
            plotRBGrids(simSchedulingLogger);
        end
    end
    % CQI grid visualization (if enabled)
    if simParameters.CQIVisualization
        if mod(slotNum, numSlotsFrame) == 0
            plotCQIRBGrids(simSchedulingLogger);
        end
    end
    % Plot scheduler metrics and RLC metrics visualization at slot
    % boundary, if the update periodicity is reached
    if mod(slotNum, simParameters.MetricsStepSize) == 0
        plotMetrics(simSchedulingLogger);
        plotMetrics(simRLCLogger);
    end

    % Advance timer ticks for gNB and UEs by the number of symbols per slot
    advanceTimer(gNB, 14);
    for ueIdx = 1:simParameters.NumUEs
        advanceTimer(UEs{ueIdx}, 14);
    end

    % Symbol number in the simulation
    symbolNum = symbolNum + 14; 
end

Визуализация симуляции

Пять типов показанной визуализации во время выполнения:

  • Отображение значений CQI для UEs по PUSCH и пропускной способности PDSCH: можно включить эту визуализацию в разделе Logging и Visualization Configuration. Для получения дополнительной информации см. 'Качественное описание' Визуализации Канала фигуры в NR PUSCH FDD, Планируя пример.

  • Отображение присвоения сетки ресурса на UEs: 2D сетка частоты времени показывает распределение ресурсов UEs. Можно включить эту визуализацию в разделе Logging и Visualization Configuration. Для получения дополнительной информации смотрите 'фигуру' Выделения Сетки Ресурса в NR PUSCH FDD, Планируя пример.

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

  • Отображение DL планирование метрических графиков: Как метрические графики UL, 'Нисходящие показатели производительности Планировщика' отображают соответствующие подграфики для направления DL. Показатели производительности строят обновление для каждого metricsStepSize пазы.

  • Отображение метрических графиков RLC: 'рисунок' Визуализации Пропускной способности RLC показывает пропускную способность логического канала RLC для выбранного UE. Метрики RLC строят обновление для каждого metricsStepSize пазы.

Журналы симуляции

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

Журналы временного шага: И DL и журналы временного шага UL следуют за тем же форматом. Для получения дополнительной информации формата журнала, смотрите раздел 'Simulation Logs' Планирования NR PUSCH FDD.

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

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

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

  • Установите isLogReplay к истине для воспроизведения журналов симуляции.

  • Установите 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. Реализуйте конструктора класса, чтобы вызвать конструктора базового класса как показано ниже. Смотрите constuctor hNRSchedulerRoundRobin.m, hNRSchedulerProportionalFair.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. Кроме того, обновите контекст процессов UL HARQ согласно ID процесса HARQ, присвоенному в присвоениях UL. Смотрите scheduleULResourcesSlot функция в hNRScheduler.m для получения дополнительной информации.

Реализуйте пользовательское планирование DL

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

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

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

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

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

Можно также переключиться от слоя PHY передачи до обработки физического уровня 5G Toolbox™ путем создания объектов PHY с помощью hNRGNBPhy.m и hNRUEPhy.m. Для получения дополнительной информации см. раздел 'gNB and UEs Setup' Оценки результатов деятельности Ячейки NR с Интегрированием Физического уровня.

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

Используйте RLC AM

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

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

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

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

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

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

Приложение

Пример использует эти функции помощника и классы:

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

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

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

  • hNRRLCEntity.m: Базовый класс для RLC UM и сущностей AM

  • hNRUMEntity.m: функциональность RLC UM

  • hNRAMEntity.m: функциональность RLC AM

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

  • hNRRLCBufferStatus.m: Генерирует буферный объект информации о статусе RLC

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

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

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

  • hNRUEMAC.m: функциональность УИ МАКА

  • hNRScheduler.m: Базовая функциональность планировщика MAC

  • hNRSchedulerBestCQI.m: Реализации лучший CQI планирование стратегии

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

  • hNRSchedulerRoundRobin.m: циклический алгоритм Реализаций планирование стратегии

  • hNRMACBSR.m: Генерирует буферный отчет о состоянии

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

  • hNRMACSubPDU.m: Генерирует MAC subPDU

  • hNRMACPaddingSubPDU.m: Генерирует MAC subPDU с дополнением

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

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

  • hNewHARQProcesses.m: Создает новый процесс HARQ

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

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

  • hNRGNBPassthroughPhy.m: слой PHY передачи gNB

  • hNRUEPassthroughPhy.m: слой PHY передачи UE

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

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

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

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

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

  • 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

  • NRPostSimVisualization.m: Отправьте скрипт визуализации симуляции

Ссылки

[1] 3GPP TS 38.104. “NR; передача радио Базовой станции (BS) и прием”. Проект Партнерства третьего поколения; Сеть радиодоступа Technical Specification Group.

[2] 3GPP TS 38.214. “NR; процедуры Физического уровня для данных”. Проект Партнерства третьего поколения; Сеть радиодоступа Technical Specification Group.

[3] 3GPP TS 38.321. “NR; спецификация протокола Среднего управления доступом (MAC)”. Проект Партнерства третьего поколения; Сеть радиодоступа Technical Specification Group.

[4] 3GPP TS 38.322. “NR; спецификация протокола Управления линией радиосвязи (RLC)”. Проект Партнерства третьего поколения; Сеть радиодоступа Technical Specification Group.

[5] 3GPP TS 38.331. “NR; спецификация протокола Радио-управления ресурсами (RRC)”. Проект Партнерства третьего поколения; Сеть радиодоступа Technical Specification Group.

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте