exponenta event banner

Оценка эффективности планирования на основе символов 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 работает в режиме UM.

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

Предполагается, что следующие управляющие пакеты передаются вне полосы, т.е. без необходимости в ресурсах для передачи и гарантированного безошибочного приема: назначение 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

NumberOfGuardSymbols = TotalExingInPattern - Указан тип TotalExingWityType

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

= 2 символа

Планировщик

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

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

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

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

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

(ii) Предполагая, что UE требуют времени подготовки PUSCH, эквивалентного 16 символам, Slot-C запланирован в Slot-A. Поскольку планирование в слоте B обеспечит только 14 символов времени подготовки PUSCH для начала передачи в слоте C. Слот-D запланирован в слоте-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

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

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

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

  • Выполните опережение таймера для узлов. Каждые 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: Рисунок «Показатели производительности планировщика восходящей линии связи» включает графики: Пропускная способность UL (на UE и соту), гудпут UL (на UE и соту), процент распределения ресурсов между UE (из общих ресурсов UL), чтобы передать справедливость планирования, и состояние буфера UL в ожидании UE, чтобы показать, получают ли UE достаточные ресурсы. Максимально достижимое значение скорости передачи данных для пропускной способности UL - metricsStepSize слоты. показано пунктирной линией на графиках пропускной способности и гудпута. Графики показателей производительности обновляются каждый для каждого metricsStepSize слоты.

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

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

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

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

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

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

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

  • Кадр: Номер кадра.

  • Слот: номер слота в рамке.

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

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

  • Битовая карта распределения RBG: битовая матрица 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] означает, что полоса пропускания имеет 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-by-P, где N - количество UE, а P - количество процессов HARQ. Элемент матрицы в позиции (i, j) является последним принятым флагом NDI в UE i для DL или UL HARQ ID процесса j. Для новых передач это значение и флаг NDI в назначении PUSCH или PDSCH должны переключаться для процесса HARQ в назначении.

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

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

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

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

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

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

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

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

% 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 и UE» документа Оценка производительности ячеек NR с интеграцией физического уровня.

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

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

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

Приложение

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

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

  • hNRNode.m: базовый класс узла NR

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • hNRUplinkGrantFormat.m: формат назначения UL

  • HNRDownlinkGrantFormat.m: формат назначения DL

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

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

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

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

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

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

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

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

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

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

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

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

Ссылки

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

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

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

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

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