Планирование НР PUSCH FDD

Этот пример оценивает пропускную способность и справедливость распределения ресурсов стратегии планирования восходящей линии связи (UL) в режиме дуплекса с частотным разделением каналов (FDD) с интегрированным уровнем управления радиоканалом (RLC). Стратегия планирования UL присваивает ресурсы физического восходящего общего канала (PUSCH) набору пользовательского оборудования (UE), соединенного с gNB. В примере используется неподчиненный режим (UM) слоя RLC и пройденного физического (PHY) слоя. Прохождение PHY- слоя не включает какую-либо обработку физического слоя и принимает основанный на вероятностях подход к моделированию отказов приема пакетов. Пример регистрирует события в симуляции, а также показывает визуализацию времени запуска, чтобы наблюдать эффективность сети.

Введение

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

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

Планировщик запускает каждые p пазов, чтобы назначить ресурсы UL, где p - сконфигурированная периодичность планировщика. В каждом запуске количество запланированных пазов равно периодичности выполнения планировщика, с. Первый паз, среди p пазов, которые будут запланированы в прогоне, является следующим предстоящим пазом, который удовлетворяет временной возможности подготовки 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).

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

Два пакета управления, отчет о состоянии буфера (BSR) и назначение UL, приняты, чтобы быть посланы вне полосы без необходимости ресурсов для передачи.

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

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

  • Основанное на пазе и основанное на символе планирование UL. Планировщик UL обеспечивает, чтобы UE получили необходимое время подготовки PUSCH.

  • Несмежное распределение ресурсов частотного диапазона в терминах групп ресурсных блоков (RBG).

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

  • Механизм асинхронного гибридного автоматического запроса повторения (HARQ) UL.

  • Успешный прием UL или обнаружение отказа UE с помощью нового флага индикатора данных (NDI), присутствующего в присвоении UL.

  • Несколько логических каналов для поддержки различных шаблонов трафика приложений.

  • Определение приоритетов логического канала (LCP) в UE для распределения принятого назначения UL между логическими каналами.

  • Периодический шаблон трафика приложения UL.

  • RLC, работающий в режиме единой системы обмена сообщениями.

Сценарные Строения

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

  • Время симуляции

  • Количество UE

  • Расстояние UE от gNB (влияет на значения UL CQI для UE)

  • Шаблон трафика приложений в UE для генерации трафика

  • RLC- строения для Tx и Rx- сущностей в UE и gNB соответственно

  • Логическое строение каналов UE и gNB

  • Стратегия планирования: PF, Best CQI, RR

  • Периодичность BSR, отправленных UE для информирования gNB о ожидающем количестве буфера

  • Время подготовки PUSCH для UE

  • Пропускная способность PUSCH по количеству ресурсных блоков (RB)

  • Интервал между поднесущими

  • Тип строения размера RBG

  • Начальное качество канала UL и его механизм обновления

rng('default'); % Reset the random number generator
simParameters = []; % Clear the simulation parameters
simParameters.NumFramesSim = 200; % 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 simulation parameters
% simParameters.UEDistance and simParameters.PacketPeriodicityUEs are
% array of length equal to NumUEs; and simParameters.PacketSizesUEs,
% properties of simParameters.RLCConfig, and simParameters.LCHConfig
% consists of number of rows equal to numUEs.
simParameters.NumUEs = 4;
% Number of logical channels in each UE. If you change the number of
% logical channels, ensure that the simulation parameters
% simParameters.PacketSizesUEs, properties of simParameters.RLCConfig, and
% simParameters.LCHConfig consists of number of columns equal to
% NumLogicalChannels. The logical channels associated to data radio bearers
% use logical channel identifiers (LCIDs) starting from 4. So, the
% logical channels are assumed to have LCIDs starting from 4 to NumLogicalChannels+3.
simParameters.NumLogicalChannels = 3;
simParameters.UEDistance = [100; 250; 700; 750]; % Distance of UEs from gNB (in meters)

% Set the application traffic pattern for UEs. For example, the vector
% element value 10 at index 4 represents that for each of the logical
% channels of UE-4, a packet is generated every 10 ms
simParameters.PacketPeriodicityUEs = [30; 20; 30; 10]; % Periodicity at which UEs generate packets in logical channels (in ms)
% The N-by-P matrix represents the size of packet generated by the UE in
% each logical channel, where 'N' represents the number of UEs and 'P'
% represents the number of logical channels. A matrix element at position (i, j)
% represents packet size (in bytes) generated by UE with RNTI 'i' for LCID 'j+3'.
% For example, the value 12000 at index (3, 1) represents a packet
% of size 12000 bytes generated by UE-3 for LCID 4
simParameters.PacketSizesUEs = [4000 6000 8000;
    500  8000 8000;
    12000 8000 4000;
    1000 8000 4000];

% RLC configuration
% Each property of RLCConfig must be an N-by-P matrix, where 'N' represents the number of UEs
% and 'P' represents the number of logical channels. A matrix element at position
% (i, j) corresponds to a property value of a UE with RNTI 'i' and LCID 'j+3'.
% Sequence number (SN) field length (in bits) to be used by each UE for their logical channels
simParameters.RLCConfig.SNFieldLength = [6 6 12;
    6 6 12;
    6 12 6;
    6 6 12];
% Reassembly timer to be used by each UE for their logical channels
simParameters.RLCConfig.ReassemblyTimer = [5 10 15;
    5  5 10;
    5  5  5;
    5 10 15];
% Max number of service data units (SDUs) in the Tx buffer of each logical channel (to model Tx buffer overflow)
simParameters.RLCConfig.MaxTxBufferSDUs = [4 3 11;
    3 5 4;
    6 1 3;
    11 6 26];

% Logical channel (LCH) configuration
% Each property of LCHConfig must be an N-by-P matrix, where 'N' represents the number of UEs
% and 'P' represents the number of logical channels. A matrix element at position
% (i, j) corresponds to a property value of a UE with RNTI 'i' and LCID 'j+3'.
% Mapping between logical channel and logical channel group (LCG) ID
simParameters.LCHConfig.LCGID = [1 3 2;
    1 2 2;
    1 2 3;
    5 1 2];
% Priority of each logical channel
simParameters.LCHConfig.Priority = [1 5 8;
    1 1 6;
    4 10 4;
    10 11 13];
% Prioritized bit rate (PBR) of each logical channel (in kilo bytes per second)
simParameters.LCHConfig.PBR = [8 16 32;
    8 128 32;
    8 16 32;
    8 16 32];
% Bucket size duration (BSD) of each logical channel (in ms)
simParameters.LCHConfig.BSD = [5 10 50;
    5 20 20;
    5 5 5;
    5 10 20];

% Medium access control (MAC) configuration
% 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 weight parameter within the range [0, 1] calculates
% average data rate for a UE. The 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;
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 in each UE
% PUSCH preparation time. 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 a PUSCH transmission (limit is
% applicable for new PUSCH assignments and not for the retransmissions)
simParameters.RBAllocationLimitUL = 15;

% PHY layer and channel configuration
% RB count for 5 MHz band with 15 kHz subcarrier spacing (SCS). The complete
% UL bandwidth is assumed to be allotted for PUSCH
simParameters.NumRBs = 25;
simParameters.SCS = 15; % kHz
simParameters.ULBandwidth = 5e6; % Hz
simParameters.ULCarrierFreq = 2.515e9; % Hz
% Set the RBG size configuration to 1 (configuration-1 RBG table) or 2
% (configuration-2 RBG table) as defined in 3GPP TS 38.214 Section
% 5.1.2.2.1
simParameters.RBGSizeConfig = 1;

% Configure parameters to update channel conditions for the UEs. Channel
% quality is 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.5; % In sec
simParameters.CQIDelta = 1;
% 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 achievable CQI value in decreasing
% order
simParameters.CQIvsDistance = [
    200  15;
    500  12;
    800  10;
    1000  8;
    1200  7];

% Logging and visualization configuration
% Flag to enable or disable run time CQI visualization
simParameters.CQIVisualization = true;
% Flag to enable or disable run time visualization of RB assignment. If enabled,
% then for slot based scheduling it updates every frame (10 ms) to show RB
% allocation to the UEs for different slots of the last frame.
simParameters.RBVisualization = true;

% The output metrics plots are updated NumMetricsSteps times during simulation
simParameters.NumMetricsSteps = 20;

% MAT-files used for post simulation visualization
simParameters.ParametersLogFile = 'simParameters'; % For logging the simulation parameters
simParameters.SimulationLogFile = 'simulationLogs'; % For logging the simulation logs

hNRULSchedulingValidateConfig(simParameters); % Validate the simulation configuration

Производные параметры

На основе первичных параметров конфигурации вычислите выведенные параметры.

simParameters.NCellID = 1; % Physical cell ID
simParameters.DLCarrierFreq = 2.635e9; % Hz
simParameters.DLBandwidth = 10e6; % Hz
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); % Slot duration in ms
numSlotsFrame = 10/slotDuration; % Number of slots in 10 ms frame
numSlotsSim = simParameters.NumFramesSim * numSlotsFrame; % Number of slots in the simulation

% Maximum RLC SDU length (in bytes)
simParameters.maxRLCSDULength = 9000;

% RLC entity direction. Value 0 represents downlink only, 1
% represents UL only and 2 represents both UL and downlink
% directions. Setting entity direction to have only UL
simParameters.RLCConfig.EntityDir = ones(simParameters.NumUEs, simParameters.NumLogicalChannels);

% LCID (LCID of data radio bearers starts from 4) 
simParameters.LCHConfig.LCID = ones(simParameters.NumUEs, simParameters.NumLogicalChannels) .* (4:4+simParameters.NumLogicalChannels-1);

% Construct information for RLC logger and visualizer
lchInfo = repmat(struct('RNTI', [], 'LCID', [], 'EntityDir', []), [simParameters.NumUEs 1]);
for idx = 1:simParameters.NumUEs
    lchInfo(idx).RNTI = idx;
    lchInfo(idx).LCID = simParameters.LCHConfig.LCID(idx, :);
    lchInfo(idx).EntityDir = simParameters.RLCConfig.EntityDir(idx, :);
end

% Find maximum achievable CQI value for 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

% Define initial UL 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
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);
end

% Interval at which metrics visualization updates in terms of number of
% slots. 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

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 Setup

Создайте объекты gNB и UE, инициализируйте информацию о условии канала UL для UE в gNB и настройте логические каналы в 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 (Round robin), hNRSbestCQI.m (Пропорциональная ярмарка), 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); % Create 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);
    simParameters.InitialChannelQualityDL = simParameters.InitialChannelQualityUL;
    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

    % Setup logical channels
    for lcIdx = 1:simParameters.NumLogicalChannels
        % Create RLC channel configuration structure
        rlcChannelConfigStruct.EntityType = simParameters.RLCConfig.EntityDir(ueIdx, lcIdx);
        rlcChannelConfigStruct.LogicalChannelID = simParameters.LCHConfig.LCID(ueIdx, lcIdx);
        rlcChannelConfigStruct.SeqNumFieldLength = simParameters.RLCConfig.SNFieldLength(ueIdx, lcIdx);
        rlcChannelConfigStruct.MaxTxBufferSDUs = simParameters.RLCConfig.MaxTxBufferSDUs(ueIdx, lcIdx);
        rlcChannelConfigStruct.ReassemblyTimer = simParameters.RLCConfig.ReassemblyTimer(ueIdx, lcIdx);
        rlcChannelConfigStruct.EntityType = simParameters.RLCConfig.EntityDir(ueIdx, lcIdx);
        rlcChannelConfigStruct.LCGID = simParameters.LCHConfig.LCGID(ueIdx, lcIdx);
        rlcChannelConfigStruct.Priority = simParameters.LCHConfig.Priority(ueIdx, lcIdx);
        rlcChannelConfigStruct.PBR = simParameters.LCHConfig.PBR(ueIdx, lcIdx);
        rlcChannelConfigStruct.BSD = simParameters.LCHConfig.BSD(ueIdx, lcIdx);
        
        % Setup logical channel at gNB for the UE
        configureLogicalChannel(gNB, ueIdx, rlcChannelConfigStruct);
        % Setup logical channel at UE
        configureLogicalChannel(UEs{ueIdx}, ueIdx, rlcChannelConfigStruct);
        
        % Add data traffic pattern generators to UE nodes. Application data
        % is pumped to RLC layer as per the installed traffic pattern
        packetSize = simParameters.PacketSizesUEs(ueIdx, lcIdx);
        % Calculate the data rate (in kbps) of On-Off traffic pattern using
        % packet size (in bytes) and packet interval (in ms)
        dataRate = ceil(1000/simParameters.PacketPeriodicityUEs(ueIdx)) * 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 > simParameters.maxRLCSDULength
            packetSize = simParameters.maxRLCSDULength;
        end
        % Create an object for On-Off network traffic pattern and add it to the
        % specified UE. This object generates the uplink (UL) data traffic on the UE
        app = networkTrafficOnOff('PacketSize', packetSize, 'GeneratePacket', true, ...
            'OnTime', simParameters.NumFramesSim/100, 'OffTime', 0, 'DataRate', dataRate);
        UEs{ueIdx}.addApplication(ueIdx, simParameters.LCHConfig.LCID(ueIdx, lcIdx), app);
    end
end

% Setup the UL and DL packet distribution mechanism
simParameters.MaxReceivers = simParameters.NumUEs;
% Create DL packet distribution object
dlPacketDistributionObj = hNRPacketDistribution(simParameters, 0);
% Create UL packet distribution object
ulPacketDistributionObj = hNRPacketDistribution(simParameters, 1);
hNRSetUpPacketDistribution(simParameters, gNB, UEs, dlPacketDistributionObj, ulPacketDistributionObj);

Цикл обработки

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

  • Запуск слоев MAC и PHY gNB

  • Запуск слоев MAC и PHY UE

  • Layer specific logging и визуализация

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

% Create an object for MAC scheduling information visualization and logging (UL direction is represented as 1)
simSchedulingLogger = hNRSchedulingLogger(simParameters, 1);

% Create RLC statistics logging object
simRLCLogger = hNRRLCLogger(simParameters, lchInfo);

% Create metrics visualization object (UL direction is represented as 1)
visualizer = hNRMetricsVisualizer(simParameters, 'RLCLogger', simRLCLogger, 'LCHInfo', lchInfo, 'MACLogger', simSchedulingLogger, 'VisualizationFlag', 1);

% 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 layers 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); % Update RLC statistics logs
    end
    
    % MAC logging
    logCellSchedulingStats(simSchedulingLogger, symbolNum, gNB, UEs, 1); % For UL
    
    % 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 scheduler metrics and RLC 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

Figure Resource Grid Allocation contains an axes and other objects of type uicontrol. The axes with title Resource Grid Allocation for Cell ID - 1 contains 232 objects of type text, line.

Figure Channel Quality Visualization contains an axes and other objects of type uicontrol. The axes with title Channel Quality Visualization for Cell ID - 1 contains 80 objects of type rectangle.

Симуляционная визуализация

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

  • Отображение значений CQI для UE по полосе пропускания PUSCH: Для получения дополнительной информации смотрите рисунок «Визуализация качества канала».

  • Отображение назначения сетки ресурса UE: 2-D частотно-временная сетка обновляется каждые 10 мс (длина системы координат) и показывает распределение RB для UE в предыдущих системах координат. Процесс HARQ для назначений PUSCH также показан вместе с RNTI UE. Новые передачи показаны черным цветом, а повторные передачи показаны синим цветом с использованием идентификатора процесса HARQ каждого UE, назначение повторной передачи может быть сопоставлено с его ранее неудачной передачей. Для получения дополнительной информации см. рисунок «Распределение ресурсной сетки» для получения дополнительной информации.

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

  • Отображение графика метрик RLC: рисунок 'RLC Metrics Visualization' представляет количество байтов, переданных слоем RLC (на логический канал) для каждого UE. Метрики RLC графика обновляются для каждого metricsStepSize пазы.

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

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

Журналы временных шагов: Таблица показывает запись шага расчета шага. Каждая строка таблицы представляет пазу.

Каждая строка таблицы представляет пазу и содержит следующую информацию:

  • Timestamp: Время (в миллисекундах) с начала симуляции.

  • Система координат: Номер система координат.

  • Паз: Номер паза в системе координат.

  • RBG Allocation Bitmap: N-на-P битовая матрица, где N - количество UE, а P - количество RBG. Если RBG назначена конкретному UE, соответствующий бит устанавливается равным 1. Для примера [0 0 1 1 0 1 0 1 0 1 0 0 0; 1 1 0 0 0 0 0 0 0 0 1 0 0; 0 0 0 0 1 0 1 0 1 0 0 1 1; 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] означает, что полоса пропускания UL имеет 13 RBG, и UE-1 присвоены индексы RBG: 2, 3, 5, 7 и 9; UE-2 присвоены индексы RBG 0, 1 и 10; UE-3 присвоены индексы RBG 4, 6, 8, 11 и 12, и UE-4 не присвоена никакая RBG.

  • MCS: Вектор-строка длины N, где N - количество UE. Каждое значение соответствует индексу схемы модуляции и кодирования (MCS) для передачи PUSCH. Например, [10 12 8 -1] означает, что только UE-1, UE-2 и UE-3 назначены ресурсы UL для этого паза и используют значения MCS 10, 12 и 8, соответственно.

  • Процесс HARQ: Вектор-строка длины N, где N - количество UE. Значение является идентификатором процесса HARQ, используемым UE для передачи PUSCH. Например, [0 3 6 -1] означает, что только UE-1, UE-2 и UE-3 назначены ресурсы UL для этого паза и используют идентификаторы процесса HARQ 0, 3 и 6, соответственно.

  • NDI: Вектор-строка длины N, где N - количество UE. Значение является значением флага NDI в присвоении UL для передачи PUSCH. Например, [0 0 1 -1] означает, что только UE-1, UE-2 и UE-3 назначены ресурсы UL для этого паза и используют значения флага NDI (которые определяют, используется ли новая передача или повторная передача) 0, 0 и 1, соответственно.

  • Tx Type: Tx Type задает тип передачи (новая передача или повторная передача). Вектор-строка длиной N, где N - количество UE. Возможными значениями являются 'newTxreTx', или' noTx'. 'noTx'означает, что UE не выделяются ресурсы PUSCH. Для примера ['newTx'' newTx'' reTx'' noTx'] означает, что только UE-1, UE-2 и UE-3 назначены ресурсы UL для этого паза. UE-1 и UE-2 передают новый пакет из указанного процесса HARQ, в то время как UE-3 повторно передает пакет в буфер указанного процесса HARQ.

  • CQI для UE: матрица N на P, где N - количество UE, а P - количество RB в полосе пропускания. Элемент матрицы в положении (i, j) соответствует значению UL CQI для UE с RNTI i в RB j.

  • HARQ NDI Status: N-на-P матрица, где N - количество UE, а P - количество процессов HARQ в UE. Элемент матрицы в положении (i, j) является последним полученным флагом NDI в UE i для HARQ-процесса j. Для новых передач это значение и флаг NDI в назначении PUSCH должны переключаться. Для примера в паз 1 из системы координат 5, описанной в журнале планирования, UE-1 использует HARQ ID 0, и последнее значение флага NDI для HARQ ID 0 на UE-1 равняется 1. Чтобы указать новую передачу, значения флага NDI изменяются на 0 в присвоении PUSCH.

  • Пропускная способность Bytes: Вектор-строка длины N, где N - количество UE. Значения представляют MAC-байты, переданные UE в этом пазе.

  • Goodput Bytes: Вектор-строка длины N, где N - количество UE. Значения представляют новые MAC-байты передачи, переданные UE в этом пазе.

  • Состояние буфера UE: Вектор-строка длины N, где N - количество UE. Значения представляют количество ожидающих буферов в UE.

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

Журналы RLC: каждая строка в журналах RLC представляет пазу и содержит следующую информацию:

  • Временная метка: Timestamp (в миллисекундах)

  • Система координат: Номер система координат.

  • Паз: Номер паза в системе координат.

  • UE RLC statistics: N-на-P камера, где N является продуктом количества UE и количества логических каналов, а P - количество собранных статистических данных. Каждая строка представляет статистику логического канала в UE. Последняя строка содержит кумулятивную статистику RLC всей симуляции.

  • gNB RLC статистика: N-на-P камера, где N является продуктом количества UE и количества логических каналов, а P - количество собранных статистических данных. Каждая строка представляет статистику логического канала UE в gNB. Последняя строка содержит кумулятивную статистику RLC всей симуляции.

Каждая строка таблицы статистики RLC UE и gNB представляет логический канал UE и содержит:

  • RNTI: Временный идентификатор UE в радиосети.

  • LCID: Логический идентификатор канала.

  • TxDataPDU: Количество PDU данных, отправленных RLC на слой.

  • TxDataBytes: Количество байтов данных, отправленных RLC на слой.

  • ReTxDataPDU: Количество PDU данных, повторно переданных RLC на слой.

  • ReTxDataBytes: количество байтов данных, повторно переданных RLC на слой.

  • TxControlPDU: Количество управляющих PDU, отправленных RLC на слой.

  • TxControlBytes: Количество управляющих байтов, отправленных RLC на слой.

  • TxPacketsDropt: Количество SDU RLC, сброшенных RLC из-за переполнения буфера Tx.

  • TxBytesDropt: количество байтов, отброшенных RLC из-за переполнения буфера Tx.

  • TimerPollRetransmitTimedOut: количество раз, когда истек срок действия таймера повторной передачи опроса.

  • RxDataPDU: Количество PDU данных, полученных RLC от MAC- слоя.

  • RxDataBytes: Количество байтов данных, полученных RLC от MAC- слоя.

  • RxDataPDUDropped: Количество полученных PDU данных от MAC, которые отбрасываются слоем RLC.

  • RxDataBytesDropt: Количество полученных байтов данных от MAC, которые отбрасываются слоем RLC.

  • RxDataPDUDuplicate: количество повторяющихся PDU, полученных RLC от MAC- слоя.

  • RxDataBytesDuplicate: количество повторяющихся байтов данных, полученных RLC от MAC- слоя.

  • RxControlPDU: Количество управляющих PDU, полученных RLC от MAC- слоя.

  • RxControlBytes: Количество управляющих байтов, полученных RLC от MAC- слоя.

  • TimerReassemblyTimedOut: Количество задержек таймера повторной сборки.

  • TimerStatusProbanitTimedOut: Количество просрочек таймера запрета состояния.

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

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

  • Задайте isLogReplay на false анализ журналов симуляции и ввод номера системы координат для визуализации информации о планировании конкретной системы координат

% Read the logs and save them in MAT-files
simulationLogs = cell(1, 1);
simulationLogs{1} = struct('ULTimeStepLogs',[], 'SchedulingAssignmentLogs',[] ,'RLCLogs',[]);
[~, simulationLogs{1}.ULTimeStepLogs] = getSchedulingLogs(simSchedulingLogger); % UL time step scheduling logs
simulationLogs{1}.SchedulingAssignmentLogs = getGrantLogs(simSchedulingLogger); % Scheduling assignments log
simulationLogs{1}.RLCLogs = getRLCLogs(simRLCLogger); % RLC statistics logs
save(simParameters.SimulationLogFile, 'simulationLogs'); % Save simulation logs in a MAT-file
save(simParameters.ParametersLogFile, 'simParameters'); % Save simulation parameters in a MAT-file

Приложение

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

Ссылки

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

[2] 3GPP TS 38.321. "NR; Спецификация протокола управления средним доступом (MAC). "3rd Генерация Partnership Project; Группа технических спецификаций Радиосеть доступ.

[3] 3GPP TS 38.322. "NR; Спецификация протокола Radio Ссылки Control (RLC). "3rd Генерация Partnership Project; Группа технических спецификаций Радиосеть доступ.

Похожие темы