Оценка эффективности на основе символов NR TDD

Этот пример моделирует основанную на символах схему планирования в режиме дуплекса с делением каналов (TDD) и оценивает эффективность сети. Основанное на символах планирование ресурсов допускает более короткие сроки передачи, охватывающие несколько символов в пазе. В режиме TDD передачи физического общего канала восходящей линии связи (PUSCH) и физического общего канала нисходящей линии связи (PDSCH) планируются в одной полосе частот с разделением во временном интервале. Можно настроить стратегию планирования и оценить эффективность сети. Эффективность стратегии планирования оценивается с точки зрения достигнутой пропускной способности и справедливости в совместном использовании ресурсов.

Введение

Пример рассматривает следующие операции в пределах gNB и UE, которые облегчают передачи и приемы UL и DL.

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

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

  • Конфигурируемый шаблон TDD DL-UL.

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

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

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

  • Конфигурируемые свойства опорного сигнала демодуляции (DM-RS).

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

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

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

  • Часть с одной пропускной способностью, охватывающая всю пропускную способность поставщика услуг.

Следующие управляющие пакеты приняты за пределы полосы, т.е. без необходимости в ресурсах для передачи и гарантированного приема без ошибок: назначение UL, назначение DL, отчет о состоянии буфера (BSR), обратная связь PDSCH и отчет CQI. Эти управляющие пакеты следуют таймингам TDD DL и UL. Например, обратная связь BSR и PDSCH отправляется по UL-времени, в то время как назначения ресурсов отправляются по DL-времени.

Шаблон TDD DL-UL Строения

NR обеспечивает гибкий способ настройки ресурсов DL и UL. Для определения пользовательского строения TDD используются следующие параметры:

  1. Периодичность передачи DL-UL в мс.

  2. Ссылка на интервал между поднесущими для вычисления количества пазов в шаблоне DL-UL. В этом примере принято, что оно совпадает с фактическим интервалом между поднесущими, используемым для передачи.

  3. Количество последовательных полных пазов DL в начале каждого шаблона DL-UL.

  4. Количество последовательных символов DL в начале паза после последнего полного паза DL.

  5. Количество последовательных полных пазов UL в конце каждого шаблона DL-UL.

  6. Количество последовательных символов UL в конце паза, предшествующего первому полному пазу UL.

Пример не моделирует гибкие символы, поэтому символы с неопределенным типом символа приняты для периода защиты. Вот пример результирующего шаблона TDD DL-UL, основанного на этих параметрах. Этот шаблон DL-UL повторяется на временной шкале.

  • reference_scs = 15 кГц (т.е. паз 1 мс), DLULPeriodicity = 5 мс, numDLSlots = 3, numDLSyms = 7, numULSlots = 1, numULSyms = 5

Количество пазов в периодичности DL-UL относительно опорной SCS 15 кГц, NumSlotsDLULPeriodicity = 5

Number Of Guard Symbols = Total Symbols In Pattern - Total Symbols With Type Specified

= (14 * NumSlotsDLULPeriodicity) - (numDLSlots*14 + numDLSyms + numULSyms + numULSlots*14)

= 2 символа

Планировщик

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

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

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

Операция планирования UL следует этим двум шагам.

  1. Выберите пазы для планирования: Критерии, используемые в этом примере, выбирают все предстоящие пазы (включая текущий), содержащие незапланированные символы UL, которые должны быть запланированы сейчас. Такие пазы должны быть запланированы сейчас, так как они не могут быть запланированы в следующем пазе с символами DL, в зависимости от значения возможности подготовки PUSCH UE. Это гарантирует, что ресурсы UL запланированы как можно ближе к фактическому времени передачи.

Ниже приведены 2 примера для объяснения выбора пазов UL в этом примере для планирования на основе времени подготовки PUSCH.

(i) Принимая, что UE требуется время подготовки PUSCH, эквивалентное 10 символам, когда планировщик UL запускается в слоте-A, он не выбирает какой-либо паз для планирования. Поскольку планирование в следующем пазе (т.е. слоте-B) обеспечивает достаточное время подготовки PUSCH (14 символов) для передачи UL в слоте-C. Позже, когда планировщик UL запускается в слоте-B, он выбирает и слот-C, и слот-D для планирования. Слот-D запланирован в самом слоте-B (а не в слоте-C), поскольку слот-C является полным пазом UL и, следовательно, не имеет никаких символов DL для отправки назначений в направлении DL.

Принимая, что UE требуется время подготовки PUSCH, эквивалентное 16 символам, слот-C запланирован в самом слоте-A. Поскольку планирование в слоте-B обеспечит только 14 символов времени подготовки PUSCH, чтобы начать передачу в слоте-C Slot-D запланирован в Slot-B.

2. Планирование ресурсов: Если на первом этапе выбраны какие-либо пазы, присвойте UL-ресурсы этих пазов UE.

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

Планировщик DL запускается в каждом пазе, начиная с символа DL, и присваивает ресурсы первого предстоящего паза, содержащего символы DL. Таким образом, когда планировщик DL запускается в начале слота-A, он планирует ресурсы DL слота-B.

Составление расписаний на основе символов

NR позволяет TTI запускаться в любом положении символа в пазе и с детализацией TTI в символах. Рисунок показывает, как планировщик UL работает в этом примере, чтобы планировать символы UL паза с детализацией TTI двух символов. Показанный паз содержит шесть символов UL. Планировщик завершает итерацию символов UL в трех итерациях с каждой итерацией, распределяющей частотные ресурсы двух символов. Планировщик DL также следует аналогичному подходу для планирования DL.

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

Установите параметры для симуляции.

rng('default'); % Reset the random number generator
simParameters = []; % Clear simParameters variable
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 following simulation parameters are array
% of length equal to NumUEs: simParameters.UEDistance,
% simParameters.ULPacketPeriodicityUEs, simParameters.ULPacketSizesUEs,
% simParameters.DLPacketPeriodicityUEs, simParameters.DLPacketSizesUEs
simParameters.NumUEs = 4;
simParameters.UEDistance = [100; 150; 300; 400]; % Distance of UEs from gNB (in meters)

% Set the value of scheduling type to 0 (slot-based scheduling) or 1
% (symbol-based scheduling). If value is not set, the default value is 0
simParameters.SchedulingType = 1;

% Set the time-domain assignment in terms of symbol duration. If number of
% symbols (DL or UL) are not enough for this granularity then a smaller
% valid granularity is chosen. Applicable only for symbol-based scheduling.
% For slot-based scheduling, biggest possible granularity in a slot is
% chosen
simParameters.TTIGranularity = 4;

% Define the TDD DL-UL pattern. The reference subcarrier spacing used for
% calculating slot duration for the pattern is assumed to be same as actual
% subcarrier spacing used for transmission as defined by simParameters.SCS.
% Keep only the symbols intended for guard period during DLULPeriodicity
% with type (DL or UL) unspecified
simParameters.DLULPeriodicity = 5; % Duration of the DL-UL pattern in ms
simParameters.NumDLSlots = 2; % Number of consecutive full DL slots at the beginning of each DL-UL pattern
simParameters.NumDLSyms = 8; % Number of consecutive DL symbols in the beginning of the slot following the last full DL slot
simParameters.NumULSyms = 4; % Number of consecutive UL symbols in the end of the slot preceding the first full UL slot
simParameters.NumULSlots = 2; % Number of consecutive full UL slots at the end of each DL-UL pattern

% 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 8 as the
% distance falls within the [501, 1000] 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;
    300  12;
    500  10;
    1000  8;
    1200  7];

% Set the periodic UL and DL application traffic pattern for UEs
simParameters.ULPacketPeriodicityUEs = [20; 30; 20; 30]; % Periodicity (in ms) at which the UL packets are generated by UEs
simParameters.ULPacketSizesUEs = [4000; 6000; 5500; 4000]; % Size of the UL packets (in bytes) generated by UEs
simParameters.DLPacketPeriodicityUEs = [20; 15; 15; 20]; % Periodicity (in ms) at which the DL packets are generated for UEs at gNB
simParameters.DLPacketSizesUEs = [6000; 5000; 10000; 8000]; % Size of the DL packets generated (in bytes) for UEs at gNB

% Medium access control (MAC) configuration
simParameters.SchedulerStrategy = 'PF'; % Supported scheduling strategies: 'PF', 'RR' and 'BestCQI'
% 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 for PUSCH and PDSCH transmissions (limit is
% applicable for new transmission assignments and not for the retransmissions)
simParameters.RBAllocationLimitUL = 15; % For PUSCH
simParameters.RBAllocationLimitDL = 15; % For PDSCH
simParameters.BSRPeriodicity = 1; % Buffer status report transmission periodicity (in ms)

simParameters.DMRSTypeAPosition = 2;
% PUSCH DM-RS configuration
simParameters.PUSCHDMRSAdditionalPosTypeB = 0;
simParameters.PUSCHDMRSAdditionalPosTypeA = 0;
simParameters.PUSCHDMRSConfigurationType = 1;
% PDSCH DM-RS configuration
simParameters.PDSCHDMRSAdditionalPosTypeB = 0;
simParameters.PDSCHDMRSAdditionalPosTypeA = 0;
simParameters.PDSCHDMRSConfigurationType = 1;

% PHY layer and channel configuration
% RB count for 5 MHz band with 15 kHz subcarrier spacing (SCS). The complete
% bandwidth is assumed to be allotted for PUSCH or PDSCH
simParameters.NumRBs = 25;
simParameters.SCS = 15; % kHz
simParameters.DLBandwidth = 5e6; % Hz
simParameters.ULBandwidth = 5e6; % Hz
simParameters.DLCarrierFreq = 2.595e9; % Hz
simParameters.ULCarrierFreq = 2.595e9; % Hz

% 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: RB_CQI = RB_CQI +/- CQIDelta
simParameters.ChannelUpdatePeriodicity = 0.2; % In sec
simParameters.CQIDelta = 1;

% Logging and visualization configuration
% Flag to enable or disable runtime 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. For
% symbol-based scheduling, it updates every slot to show RB allocation to
% the UEs over different symbols of the last slot
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

hNRSchedulingTDDValidateConfig(simParameters); % Validate the simulation configuration

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

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

simParameters.DuplexMode = 1; % TDD (example specific constant)
if simParameters.SchedulingType % Symbol-based scheduling
    simParameters.PUSCHMappingType = 'B';
    simParameters.PDSCHMappingType = 'B';
else % Slot-based scheduling
    simParameters.PUSCHMappingType = 'A';
    simParameters.PDSCHMappingType = 'A';
end
simParameters.NCellID = 1; % Physical cell ID
simParameters.GNBPosition = [0 0 0]; % Position of gNB in (x,y,z) coordinates
numLogicalChannels = 1; % Only 1 logical channel is assumed in each UE (Example specific constant)
slotDuration = 1/(simParameters.SCS/15); % Slot duration in ms
numSlotsFrame = 10/slotDuration; % Number of slots in 10 ms frame
numSlotsSim = simParameters.NumFramesSim * numSlotsFrame; % Simulation time in units of slot duration
numSymbolsSim = numSlotsSim * 14; % Simulation time in units of symbol duration
% 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

% Logical channel id (logical channel ID of data radio bearers starts from 4) 
simParameters.LCHConfig.LCID = 4;

% RLC entity direction. Value 0 represents DL only, 1
% represents UL only and 2 represents both UL and DL
% directions. Setting entity direction to have both UL and DL
simParameters.RLCConfig.EntityDir = 2;
% Construct information for RLC logger
lchInfo = repmat(struct('RNTI',[],'LCID',[],'EntityDir',[]), [simParameters.NumUEs 1]);
for idx = 1:simParameters.NumUEs
    lchInfo(idx).RNTI = idx;
    lchInfo(idx).LCID = simParameters.LCHConfig.LCID;
    lchInfo(idx).EntityDir = simParameters.RLCConfig.EntityDir;
end

% Create RLC channel configuration structure
rlcChannelConfigStruct.LCGID = 1; % Mapping between logical channel and logical channel group ID
rlcChannelConfigStruct.Priority = 1; % Priority of each logical channel
rlcChannelConfigStruct.PBR = 8; % Prioritized bitrate (PBR), in kilobytes per second, of each logical channel
rlcChannelConfigStruct.BSD = 10; % Bucket size duration (BSD), in ms, of each logical channel
rlcChannelConfigStruct.EntityType = simParameters.RLCConfig.EntityDir;
rlcChannelConfigStruct.LogicalChannelID = simParameters.LCHConfig.LCID;

% Maximum RLC SDU length (in bytes) as per 3GPP TS 38.323
simParameters.maxRLCSDULength = 9000;

% 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

% 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

% Update periodicity of RB assignment visualization in terms of number of slots
if ~isfield(simParameters, 'SchedulingType') || simParameters.SchedulingType == 0 % If no scheduling type is specified or slot-based scheduling is specified
    rbAssignmentPlotPeriodicity = numSlotsFrame; % Update every frame (10 ms)
else % Symbol-based scheduling
    rbAssignmentPlotPeriodicity = 1; % Update every slot
end

gNB и UE Setup

Создайте объекты gNB и UE, инициализируйте информацию о качестве канала для UE и настройте логический канал в gNB и UE. Классы helper hNRGNB.m и hNRUE.m создают узел gNB и UE соответственно, содержащий слои RLC и MAC. Для MAC-уровня hNRGNB.m использует helper class hNRGNBMAC.m для реализации функциональности gNB MAC и hNRUE.m использует hNRUEMAC.m для реализации функциональности UE MAC. Планировщики реализованы в hNRSchedulerRoundRobin.m (RR), hNRSbestCQI.m (PF), hNRSchedulerBestCQI.m (Best CQI I Все планировщики наследуют от базового класса hNRScheduler.m, который содержит основные функциональные возможности планирования. Для слоя RLC и hNRGNB.m, и hNRUE.m используют hNRUMEntity.m для реализации функциональности передатчика и приемника RLC. Слой Passthrough PHY для UE и gNB реализован в hNRUEPassThroughPhy.m и hNRGNBPassThroughPhy.m, соответственно.

simParameters.Position = simParameters.GNBPosition;
gNB = hNRGNB(simParameters); % Create the 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, :));

    % 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 gNB and UE nodes
    ulPacketSize = simParameters.ULPacketSizesUEs(ueIdx);
    % Calculate the data rate (in kbps) of On-Off traffic pattern using
    % packet size (in bytes) and packet interval (in ms)
    ulDataRate = ceil(1000/simParameters.ULPacketPeriodicityUEs(ueIdx)) * ulPacketSize * 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 ulPacketSize > simParameters.maxRLCSDULength
        ulPacketSize = 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
    ulApp = networkTrafficOnOff('PacketSize', ulPacketSize, 'GeneratePacket', true, ...
        'OnTime', simParameters.NumFramesSim/100, 'OffTime', 0, 'DataRate', ulDataRate);
    UEs{ueIdx}.addApplication(ueIdx, simParameters.LCHConfig.LCID, ulApp);

    dlPacketSize = simParameters.DLPacketSizesUEs(ueIdx);
    dlDataRate = ceil(1000/simParameters.DLPacketPeriodicityUEs(ueIdx)) * dlPacketSize * 8e-3;
    if dlPacketSize > simParameters.maxRLCSDULength
        dlPacketSize = simParameters.maxRLCSDULength;
    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 (DL) data
    % traffic on the gNB for the UE
    dlApp = networkTrafficOnOff('PacketSize', dlPacketSize, 'GeneratePacket', true, ...
        'OnTime', simParameters.NumFramesSim/100, 'OffTime', 0, 'DataRate', dlDataRate);
    gNB.addApplication(ueIdx, simParameters.LCHConfig.LCID, dlApp);

end

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

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

Симуляция является запуском символом по символу для выполнения соответствующих операций. Если выбрано планирование на основе слотов, выполнение переходит от текущего паза контура к следующему пазу контура. Выполняемые операции:

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

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

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

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

% Create an object for MAC (UL & DL) scheduling information visualization and logging
simSchedulingLogger = hNRSchedulingLogger(simParameters);
% Create an object for RLC layer metrics logging
simRLCLogger = hNRRLCLogger(simParameters, lchInfo);

% Create visualization object for RLC and MAC metrics
visualizer = hNRMetricsVisualizer(simParameters, 'RLCLogger', simRLCLogger, 'LCHInfo', lchInfo, 'MACLogger', simSchedulingLogger);

slotNum = 0;
tickGranularity = 1;
% Execute all the symbols in the simulation
for symbolNum = 1 : tickGranularity : numSymbolsSim
    symbolType = currentSymbolType(gNB); % Get current symbol type: DL/UL/Guard
    if mod(symbolNum - 1, 14) == 0
        slotNum = slotNum + 1;
    end
    
    % Run MAC and PHY layers 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 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
        % Plot scheduler metrics and RLC metrics visualization at slot
        % boundary, if the update periodicity is reached
        if mod(slotNum, simParameters.MetricsStepSize) == 0
            plotMetrics(visualizer, slotNum);
        end
    end
    
    % Advance timer ticks for gNB and UEs by 'tickGranularity' symbols
    advanceTimer(gNB, tickGranularity);
    for ueIdx = 1:simParameters.NumUEs % For all UEs
        advanceTimer(UEs{ueIdx}, tickGranularity);
    end
end

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 или PDSCH: Для получения дополнительной информации смотрите рисунок «Визуализация качества канала».

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

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

  • Отображение графиков метрик планирования DL: Как и графики метрик восходящего канала, 'Nowlink Scheduler Performance Metrics' отображает соответствующие подграфики для направления DL. Метрики эффективности графиков обновляться для каждого metricsStepSize пазы

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

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

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

Журналы временных шагов: Таблица показывает запись шага расчета шага. Каждая строка таблицы представляет символ или паз, основанный на выбранном типе планирования (основанном на символе или слоте). Информация в строке для DL, если тип символа (или паза) DL. Аналогично, для UL символ (или паз).

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

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

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

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

  • Symbol: Номер символа в пазе (только для составления расписаний на основе символов).

  • Type: Тип символа (или паза) как 'DL', 'UL' или 'Guard'. Для планирования на основе слотов тип может быть только DL/UL. Поскольку паз, содержащий защитные символы, принят в качестве паза DL с защитными символами в конце паза.

  • 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] означает, что полоса пропускания имеет 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 или PDSCH. Например, [10 12 8 -1] означает, что только UE-1, UE-2 и UE-3 назначены ресурсы UL (тип символа является 'UL') для этого символа и используют значения MCS 10, 12 и 8, соответственно.

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

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

  • Tx Type: Tx Type задает тип передачи (новая передача или повторная передача). Вектор-строка длиной N, где N - количество UE. Возможные значения: 'newTx', 'reTx' или 'noTx'. 'noTx' означает, что UE не выделены ресурсы PUSCH или PDSCH. Например: ['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) соответствует значению CQI для UE с RNTI i в RB j.

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

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

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

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

Журналы назначения расписания: Информация обо всех назначениях расписания и связанной информации записывается в эту таблицу. Каждая строка является присвоением UL или DL. Для получения дополнительной информации о формате журнала смотрите раздел 'Simulation Logs' в примере оценки эффективности планирования NR FDD.

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

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

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

  • Задайте isLogReplay на false для анализа деталей конкретной системы координат или конкретного паза системы координат. В окне 'Resource Grid Allocation' введите номер системы координат и номер паза, чтобы визуализировать назначение ресурса конкретного паза, если тип планирования основан на символах. Для планирования на основе слотов введите номер системы координат, чтобы визуализировать назначение ресурса для всей системы координат. Номер кадра, введенный здесь, также управляет номером системы координат для фигуры 'Channel Quality Visualization'.

% Read the logs and write them to MAT-files
% Get the logs
simulationLogs = cell(1,1);
logInfo = struct('TimeStepLogs',[], 'SchedulingAssignmentLogs',[] ,'RLCLogs',[]);
[logInfo.TimeStepLogs] = getSchedulingLogs(simSchedulingLogger);
logInfo.SchedulingAssignmentLogs = getGrantLogs(simSchedulingLogger); % Scheduling assignments log
logInfo.RLCLogs = getRLCLogs(simRLCLogger); % RLC statistics logs
simulationLogs{1} = logInfo;

save(simParameters.SimulationLogFile, 'simulationLogs'); % Save simulation logs in a MAT-file
save(simParameters.ParametersLogFile, 'simParameters'); % Save simulation parameters in a MAT-file

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

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

Настраиваемое расписание

Можно изменить существующую стратегию планирования для реализации пользовательской стратегии. См. раздел «Дальнейшие исследования» в примере оценки эффективности при планировании NR FDD, чтобы увидеть соответствующие шаги.

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

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

Использование RLC AM

Можно также переключить рабочий режим сущности RLC из единой системы обмена сообщениями в квитированный режим (AM) путем изменения полей входной структуры EntityType и SeqNumFieldLength в configureLogicalChannel функция hNRNode.m. Для получения дополнительной информации смотрите раздел «Дальнейшие исследования» в NR FDD «Оценка эффективности планирования».

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

Приложение

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

Ссылки

[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; Группа технических спецификаций Радиосеть доступ.

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

Похожие темы