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

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

Введение

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

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

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

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

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

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

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

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

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

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

  • RLC, действующий в режиме UM.

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

Следующие пакеты управления приняты, чтобы быть отправленными из полосы i.e. без потребности ресурсов для передачи и гарантированного безошибочного приема: присвоение 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 = TotalSymbolsInPattern - TotalSymbolsWithTypeSpecified

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

= 2 символа

Планировщик

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

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

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

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

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

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

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

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

2. Планирование ресурса: Если какие-либо пазы выбраны в первом шаге, присваивают ресурсы UL тех пазов к UEs.

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

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

Основанное на символе планирование

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

Настройка сценария

Сконфигурируйте параметры симуляции в simParameters структура.

rng('default'); % Reset the random number generator
simParameters = []; % Clear simParameters variable
simParameters.NumFramesSim = 100; % Simulation time in terms of number of 10 ms frames
simParameters.SchedulingType = 1; % Set the value to 0 (slot-based scheduling) or 1 (symbol-based scheduling)

Задайте количество UEs в ячейке, приняв, что UEs имеют последовательную радиосеть временные идентификаторы (RNTIs) от 1 к simParameters.NumUEs. Если вы изменяете количество UEs, гарантируете, что эти параметры симуляции являются массивами длины, равной значению simParameters.NumUEs: dlAppDataRate, ulAppDataRate.

simParameters.NumUEs = 4;
% Assign position to the UEs assuming that the gNB is at (0, 0, 0). N-by-3
% matrix where 'N' is the number of UEs. Each row has (x, y, z) position of a
% UE (in meters)
simParameters.UEPosition = [100 0 0;
                            150 0 0;
                            300 0 0;
                            400 0 0];
% Validate the UE positions
validateattributes(simParameters.UEPosition, {'numeric'}, {'nonempty', 'real', 'nrows', simParameters.NumUEs, 'ncols', 3, 'finite'}, 'simParameters.UEPosition', 'UEPosition');

Установите полосу пропускания канала на 5 МГц и расстояние между поднесущими (SCS) к 15 кГц, как задано в 3GPP Раздел TS 38.104 5.3.2. Полная полоса пропускания принята, чтобы быть выделенной для PUSCH или 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

Задайте TDD шаблон DL-UL. Ссылочное расстояние между поднесущими, используемое для вычисления длительности паза для шаблона, принято, чтобы быть тем же самым как фактическое расстояние между поднесущими, используемое для передачи, как задано simParameters.SCS. Сохраните только символы предназначенными в течение защитного периода во время DLULPeriodicity с типом (DL или UL) незаданный.

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

Задайте стратегию планирования, присвоение ресурса области времени granualarity и максимальный предел на RBS, выделенном для PDSCH и PUSCH. Присвоение ресурса области времени granualarity применимо только для основанного на символе планирования. Если количество символов (DL или UL) меньше сконфигурированной гранулярности присвоения ресурса области времени затем выбрана, меньшая допустимая гранулярность. Для находящегося на пазе планирования выбрана самая большая гранулярность в пазе. Предел передачи RB применяется только к новым передачам а не к повторным передачам.

simParameters.SchedulerStrategy = 'PF'; % Supported scheduling strategies: 'PF', 'RR' and 'BestCQI'
simParameters.TTIGranularity = 4;
simParameters.RBAllocationLimitUL = 15; % For PUSCH
simParameters.RBAllocationLimitDL = 15; % For PDSCH

Установите UL schduling связанные настройки - периодичность BSR и время для подготовки PUSCH. gNB гарантирует, что присвоение PUSCH получено в UEs, по крайней мере, PUSCHPrepTime перед временем передачи.

simParameters.BSRPeriodicity = 1; % Buffer status report transmission periodicity (in ms)
simParameters.PUSCHPrepTime = 200; % In microseconds

Установите канал связанные с качеством настройки для UEs. Качество канала периодически улучшается или ухудшается Delta CQI для всего RBS UE. Улучшаются ли условия канала для конкретного UE или ухудшаются, случайным образом определяется: RB_CQI = RB_CQI +/-CQIDelta. Однако максимум позволил значение CQI, зависит от положения UE и определяется таблицей отображения CQIvsDistance. Это отображение только применимо, когда передача PHY используется.

simParameters.ChannelUpdatePeriodicity = 0.2; % In sec
simParameters.CQIDelta = 1;
% Mapping between distance from gNB (first column in meters) and maximum achievable UL CQI value (second column)
simParameters.CQIvsDistance = [ 
    200  15;
    300  12;
    500  10;    
    1000  8;
    1200  7];

Задайте PUSCH, и PDSCH сопоставил настройки DMRS.

simParameters.DMRSTypeAPosition = 2; % Type-A DM-RS position as 2 or 3
% 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;

Настройка трафика приложения

Установите периодический DL и шаблон трафика приложения UL для UEs.

% Set the periodic DL and UL application traffic pattern for UEs
dlAppDataRate = [8e4; 12e4; 12e4; 16e4]; % DL application data rate in kilo bits per second (kbps)
ulAppDataRate = [8e4; 12e4; 12e4; 16e4]; % UL application data rate in kbps
% Validate the DL application data rate
validateattributes(dlAppDataRate, {'numeric'}, {'nonempty', 'vector', 'numel', simParameters.NumUEs, 'finite', '>', 0}, 'dlAppDataRate', 'dlAppDataRate');
% Validate the UL application data rate
validateattributes(ulAppDataRate, {'numeric'}, {'nonempty', 'vector', 'numel', simParameters.NumUEs, 'finite', '>', 0}, 'ulAppDataRate', 'ulAppDataRate');

Логгирование и настройка визуализации

CQIVisualization и RBVisualization параметры управляют отображением визуализации CQI и визуализации присвоения RB соответственно. Чтобы включить график визуализации RB, установите RBVisualization поле к true.

simParameters.CQIVisualization = false;
simParameters.RBVisualization = false;

Установите enableTraces как true регистрировать трассировки. Если enableTraces установлен в false, затем CQIVisualization и RBVisualization отключены автоматически, и трассировки не зарегистрированы симуляция. Чтобы ускорить симуляцию, установите enableTraces к false.

enableTraces = true;

Пример периодически обновляет метрические графики. Определите номер обновлений во время симуляции. Количество шагов должно быть меньше чем или равно количеству пазов в симуляции

simParameters.NumMetricsSteps = 20;

Запишите журналы в MAT-файлы. Пример использует эти журналы для постанализа методом моделирования и визуализации.

parametersLogFile = 'simParameters'; % For logging the simulation parameters
simulationLogFile = 'simulationLogs'; % For logging the simulation traces
simulationMetricsFile = 'simulationMetrics'; % For logging the simulation metrics

Выведенные параметры

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

simParameters.DuplexMode = 1; % FDD (Value as 0) or TDD (Value as 1)
simParameters.NCellID = 1; % Physical cell ID
simParameters.Position = [0 0 0]; % Position of gNB in (x,y,z) coordinates

Вычислите длительность паза для выбранного SCS и количества пазов в системе координат на 10 мс.

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 (assuming normal cyclic prefix)

Определите PDSCH/PUSCH, сопоставляющий тип.

if simParameters.SchedulingType % Symbol-based scheduling
    simParameters.PUSCHMappingType = 'B';
    simParameters.PDSCHMappingType = 'B';
else % Slot-based scheduling
    simParameters.PUSCHMappingType = 'A';
    simParameters.PDSCHMappingType = 'A';
end

Установите интервал, в котором пример обновляет метрическую визуализацию в терминах количества пазов.

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

Задайте один логический канал для каждого UE и установите логическую настройку канала для всех узлов (UEs и gNBs) в примере.

numLogicalChannels = 1;
simParameters.LCHConfig.LCID = 4;

Задайте тип сущности RLC в области значений [0, 3]. Значения 0, 1, 2, и 3 указывают на RLC UM однонаправленная сущность DL, RLC UM однонаправленная сущность UL, RLC UM двунаправленная сущность и сущность RLC AM, соответственно.

simParameters.RLCConfig.EntityType = 2;

Создайте информацию для регистратора RLC.

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.EntityType;
end

Создайте конфигурационную структуру канала RLC.

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.EntityType;
rlcChannelConfigStruct.LogicalChannelID = simParameters.LCHConfig.LCID;

Установите максимальную длину SDU RLC (в байтах) согласно 3GPP TS 38.323

simParameters.maxRLCSDULength = 9000;

Вычислите максимальное достижимое значение CQI для UEs на основе их расстояния от 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.UEPosition(ueIdx,1));
    if isempty(matchingRowIdx)
        maxUECQIs(ueIdx) = simParameters.CQIvsDistance(end, 2);
    else
        maxUECQIs(ueIdx) = simParameters.CQIvsDistance(matchingRowIdx(1), 2);
    end
end

Задайте начальный UL и качество канала DL как N-by-P матрица, где 'N' является количеством UEs, и 'P' является количеством RBS в полосе пропускания несущей. Начальное значение CQI для каждого RB, для каждого UE, дано случайным образом и ограничивается максимальным достижимым значением CQI, соответствующим расстоянию UE от gNB.

simParameters.InitialChannelQualityUL = zeros(simParameters.NumUEs, simParameters.NumRBs); % To store current UL CQI values on the RBs for different UEs
simParameters.InitialChannelQualityDL = zeros(simParameters.NumUEs, simParameters.NumRBs); % To store current DL CQI values on the RBs for different UEs
for ueIdx = 1:simParameters.NumUEs
    % Assign random CQI values for the RBs, limited by the maximum achievable CQI value
    simParameters.InitialChannelQualityUL(ueIdx, :) = randi([1 maxUECQIs(ueIdx)], 1, simParameters.NumRBs);
    % Initially, DL and UL CQI values are assumed to be equal
    simParameters.InitialChannelQualityDL(ueIdx, :) = simParameters.InitialChannelQualityUL(ueIdx, :);
end

gNB и Setup UEs

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

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

gNB = hNRGNB(simParameters); 
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

Создайте набор узлов UE.

UEs = cell(simParameters.NumUEs, 1);
for ueIdx = 1:simParameters.NumUEs
    simParameters.Position = simParameters.UEPosition(ueIdx, :); % Position of the 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 scheduler
    channelQualityInfoUL = struct('RNTI', ueIdx, 'CQI', simParameters.InitialChannelQualityUL(ueIdx, :));
    updateChannelQualityUL(gNB.MACEntity.Scheduler, channelQualityInfoUL);
    
    % Initialize the DL CQI values at gNB scheduler
    channelQualityInfoDL = struct('RNTI', ueIdx, 'CQI', simParameters.InitialChannelQualityDL(ueIdx, :));
    updateChannelQualityDL(gNB.MACEntity.Scheduler, channelQualityInfoDL);
 
    % Initialize the DL CQI values at UE for packet error probability estimation
    updateChannelQualityDL(UEs{ueIdx}.MACEntity, channelQualityInfoDL);

    % Setup logical channel at gNB for the UE
    configureLogicalChannel(gNB, ueIdx, rlcChannelConfigStruct);
    % Setup logical channel at UE
    configureLogicalChannel(UEs{ueIdx}, ueIdx, rlcChannelConfigStruct);

    % 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('GeneratePacket', true, ...
        'OnTime', simParameters.NumFramesSim/100, 'OffTime', 0, 'DataRate', ulAppDataRate(ueIdx));
    UEs{ueIdx}.addApplication(ueIdx, simParameters.LCHConfig.LCID, ulApp);

    % 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('GeneratePacket', true, ...
        'OnTime', simParameters.NumFramesSim/100, 'OffTime', 0, 'DataRate', dlAppDataRate(ueIdx));
    gNB.addApplication(ueIdx, simParameters.LCHConfig.LCID, dlApp);
end

Настройте пакетный механизм распределения.

% Setup the UL and DL packet distribution mechanism
simParameters.MaxReceivers = simParameters.NumUEs + 1; % Number of nodes
% Create packet distribution object
packetDistributionObj = hNRPacketDistribution(simParameters);
hNRSetUpPacketDistribution(simParameters, gNB, UEs, packetDistributionObj);

Обработка цикла

Запустите символ симуляции символом, чтобы выполнить эти операции.

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

  • Запустите слои MAC и PHY UEs

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

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

Создайте объекты регистрировать и визуализировать трассировки MAC и RLC.

if enableTraces
    simRLCLogger = hNRRLCLogger(simParameters, lchInfo);
    simSchedulingLogger = hNRSchedulingLogger(simParameters);
    % Create an object for CQI and RB grid visualization
    if simParameters.CQIVisualization || simParameters.RBVisualization
        gridVisualizer = hNRGridVisualizer(simParameters, 'MACLogger', simSchedulingLogger);
    end
end

Создайте объект для RLC и метрической визуализации MAC.

nodes = struct('UEs', {UEs}, 'GNB', gNB);
metricsVisualizer = hNRMetricsVisualizer(simParameters, 'Nodes', nodes, 'EnableSchedulerMetricsPlots', true, 'EnableRLCMetricsPlots', true, 'LCHInfo', lchInfo);

Запустите цикл обработки.

slotNum = 0;
tickGranularity = 1;

% Execute all the symbols in the simulation
for symbolNum = 1 : tickGranularity : numSymbolsSim
    symbolType = currentSymbolType(gNB.MACEntity); % 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
    
    if enableTraces
        % RLC logging (only at slot boundary)
        if mod(symbolNum - 1, 14) == 0
            logCellRLCStats(simRLCLogger, gNB, UEs);
        end

        % MAC logging
        logCellSchedulingStats(simSchedulingLogger, symbolNum, gNB, UEs);
    end

    % Visualization
    % Check slot boundary
    if symbolNum > 1 && ((simParameters.SchedulingType == 1 && mod(symbolNum, 14) == 0) || (simParameters.SchedulingType == 0 && mod(symbolNum-1, 14) == 0))
        % If the update periodicity is reached, plot RLC metrics and scheduler metrics at slot boundary
        if mod(slotNum, simParameters.MetricsStepSize) == 0
            plotLiveMetrics(metricsVisualizer);
        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

В конце симуляции достигнутое значение для индикатора производительности системы сравнивается с их теоретическими пиковыми значениями (рассматривающий нулевые издержки). Отображенные показатели эффективности являются достигнутой скоростью передачи данных (UL и DL), и достигли спектрального КПД (UL и DL). Пиковые значения вычисляются согласно 3GPP TR 37.910.

displayPerformanceIndicators(metricsVisualizer);
Peak UL Throughput: 14.22 Mbps. Achieved Cell UL Throughput: 5.80 Mbps
Achieved UL Throughput for each UE: [1.87        2.03        0.92        0.98]
Achieved Cell UL Goodput: 5.21 Mbps
Achieved UL Goodput for each UE: [1.66        1.83        0.82        0.89]
Peak UL spectral efficiency: 2.84 bits/s/Hz. Achieved UL spectral efficiency for cell: 1.04 bits/s/Hz 

Peak DL Throughput: 16.00 Mbps. Achieved Cell DL Throughput: 5.39 Mbps
Achieved DL Throughput for each UE: [1.72         1.9        0.85        0.92]
Achieved Cell DL Goodput: 4.89 Mbps
Achieved DL Goodput for each UE: [1.55        1.73        0.77        0.83]
Peak DL spectral efficiency: 3.20 bits/s/Hz. Achieved DL spectral efficiency for cell: 0.98 bits/s/Hz

Получите метрики симуляции и сохраните его в MAT-файле. Метрики симуляции сохранены в MAT-файле с именем файла как simulationMetricsFile

metrics = getMetrics(metricsVisualizer);
save(simulationMetricsFile, 'metrics'); % Save simulation metrics in a MAT-file

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Битовый массив Выделения RBG: N-by-P побитово отображают матрицу, где N является количеством UEs, и P является количеством RBGs в полосе пропускания. Если 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 RBGs и UE-1, присвоены индексы 2, 3, 5, 7 RBG, и 9; UE-2 присвоен индексы RBG: 0, 1, и 10; UE-3 присвоен индексы RBG: 4, 6, 8, 11, и 12; и UE-4 не присвоен никакой RBG.

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

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

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

  • Тип Tx: Тип Tx задает тип передачи (новая передача или повторная передача). Вектор-строка из длины N, где N является количеством UEs. Возможные значения являются или '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 для UEs: матрица N-by-P, где N является количеством UEs и P, является количеством RBS в полосе пропускания. Элемент матрицы A в положении (i, j) соответствует значению CQI для UE с RNTI i в RB j.

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

  • Байты пропускной способности: Вектор-строка из длины N, где N является количеством UEs. Значения представляют UL или байты ДЛ МАКА, переданные или для UEs в этом символе. Обратите внимание на то, что общие байты пропускной способности для полного PUSCH или передачи PDSCH показывают в строке, соответствующей первому символу передачи.

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

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

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

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

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

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

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

if enableTraces
    % 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(simulationLogFile, 'simulationLogs'); % Save simulation logs in a MAT-file
    save(parametersLogFile, 'simParameters'); % Save simulation parameters in a MAT-file
end

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

Можно использовать этот пример, чтобы далее исследовать эти опции.

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

Можно изменить существующую стратегию планирования реализовать пользовательскую. Включите Пользовательский Планировщик в примере Симуляции Уровня системы, объясняет, как создать пользовательскую стратегию планирования и включить ее в симуляцию уровня системы.

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

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

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

Можно также переключить рабочий режим сущности RLC от UM до подтвержденного режима (AM) путем изменения входных полей EntityType структуры и SeqNumFieldLength в configureLogicalChannel функция hNRNode.m. Для получения дополнительной информации см. раздел 'Further Exploration' NR FDD, Планируя Оценку результатов деятельности.

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

Ссылки

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

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

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

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

Похожие темы