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

Этот пример демонстрирует функциональность планирования слоя среднего управления доступом (MAC) стека New Radio (NR) 5G. Стратегия планирования присваивает физический восходящий канал совместно использованный канал (PUSCH) и физический нисходящий канал совместно использованный канал (PDSCH) ресурсы к набору оборудования статического пользователя (UEs), соединенный с gNB. Пример принимает режим дуплекса деления времени (TDD). Следовательно восходящий канал (UL) и нисходящий канал (DL) передачи разделяются вовремя. Этот пример также показывает функциональность слоя управления линией радиосвязи (RLC) в неподтвержденном режиме (UM). Обратите внимание на то, что этот пример абстрагирует физический уровень и принимает основанный на вероятности подход с помощью принятых значений качественной характеристики канала (CQI) для пакетных отказов приема модели. Производительность стратегии планирования оценена в терминах достигнутой пропускной способности MAC и справедливости в разделении ресурсов.

Введение

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

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

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

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

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

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

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

  • Конфигурируемый интервал поднесущей (15, 30, 60, 120 кГц) приводящий к различной длительности паза.

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

  • Обнаружение успеха/отказа приема UL UEs, использующим новый индикатор данных (NDI), отмечает существующий в присвоении UL.

  • Обнаружение успеха/отказа приема DL gNB, использующим отклик PDSCH, отправленный UEs.

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

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

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 так, чтобы присвоения могли быть немедленно отправлены в UEs в направлении DL. Время выполнения алгоритма планировщика, а также задержки распространения принято, чтобы быть нулем. Выход планирования операций является массивом присвоений. Каждое присвоение содержит информационные поля, чтобы полностью задать передачу PUSCH/PDSCH.

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

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

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

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

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

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

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

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

  • Планирование типа: паз базирующимся, или символ базирующимся

  • TDD настройка шаблона DL-UL

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

  • UL и шаблоны трафика приложения DL

  • Логическая настройка канала

  • Планирование стратегии: PF, Лучший CQI, RR

  • Периодичность BSRs, отправленного UEs, чтобы сообщить gNB о незаконченной буферной сумме

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

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

  • Интервал поднесущей: 15, 30, 60, 120 (kHz)

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

  • Отношение успешной вероятности приема с качеством канала

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.RLCConfig.SNFieldLength,
% simParameters.RLCConfig.ReassemblyTimer,
% simParameters.RLCConfig.MaxTxBufferLength
simParameters.NumUEs = 4;

% 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 minimum time-domain assignment in terms of symbol duration.
% Applicable only for symbol based scheduling. For slot based scheduling,
% it is always full slot (14 symbols)
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
% Define the number of consecutive DL symbols following the full DL slots
% and the number of consecutive UL symbols preceding the full UL slots. In
% the case of slot based scheduling, only simParameters.NumDLSyms is
% applicable and it defines the number of DL symbols at the start of the
% slot, while the remaining symbols of the slot are assumed to be allotted
% for guard period
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

simParameters.UEDistance = [100; 400; 300; 700]; % Distance of UEs from gNB (in meters)
% Mapping between distance from gNB (first column in meters) and maximum
% achievable UL CQI value (second column). For example, if a UE is 700
% meters away from the gNB, it can achieve a maximum CQI value of 10 as the
% distance falls within the [501, 800] meters range, as per the mapping.
% Set the distance in increasing order and the maximum achievable CQI value
% in decreasing order
simParameters.CQIvsDistance = [
    200  15;
    500  12;
    800  10;
    1000  8;
    1200  7];

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

% RLC configuration
simParameters.RLCConfig.SNFieldLength = [6; 6; 6; 6]; % Sequence number field length (in bits) of the logical channel for each UE
simParameters.RLCConfig.ReassemblyTimer = [5; 5; 5; 5]; % Reassembly timer (in ms) of the logical channel for each UE
% Max buffer length of the logical channel for each UE (to model Tx buffer overflow)
simParameters.RLCConfig.MaxTxBufferLength = [100000; 200000; 200000; 200000];

% 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
% Moving average weight parameter within the range [0, 1] calculates
% average data rate for a UE. The value is used in the PF scheduling strategy.
% Parameter value closer to 1 implies more weight on the instantaneous
% data rate. Parameter value closer to 0 implies more weight on the past
% data rate
% AverageDataRate = ((1-MovingAvgDataRateWeight)*PastDataRate) + (MovingAvgDataRateWeight*InstantaneousDataRate)
simParameters.MovingAvgDataRateWeight = 0.5;
simParameters.EnableHARQ = true; % Flag to enable or disable HARQ. If disabled, there are no retransmissions
simParameters.NumHARQ = 16; % Number of UL and DL HARQ processes for each UE
% 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)

% Physical 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/PDSCH
simParameters.NumRBs = 25;
simParameters.SCS = 15;
% 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;
% Expression to calculate reception success probability of a PUSCH/PDSCH
% packet based on the channel quality. 'x' represents the average CQI of
% the RBs over which the packet is received
simParameters.CQISuccessProb = '.5 + (x/20)';

% 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)
simParameters.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

% DL and UL packet periodicities for UEs in terms of number of slots
appPeriodicityUEsSlotsUL = simParameters.ULPacketPeriodicityUEs ./ slotDuration;
appPeriodicityUEsSlotsDL = simParameters.DLPacketPeriodicityUEs ./ slotDuration;

% Mapping between logical channel and logical channel group id
simParameters.LCHConfig.LCGID = ones(simParameters.NumUEs, simParameters.NumLogicalChannels);
% Priority of each logical channel 
simParameters.LCHConfig.Priority = ones(simParameters.NumUEs, simParameters.NumLogicalChannels);
% Prioritized bitrate (in kilo bytes per second) of each logical channel
simParameters.LCHConfig.PBR = 8*ones(simParameters.NumUEs, simParameters.NumLogicalChannels);
% Bucket size duration (in ms) of each logical channel. However, the priority,
% PBR and BSD for logical channel is not relevant with single logical
% channel assumed in this example
simParameters.LCHConfig.BSD = 10*ones(simParameters.NumUEs, simParameters.NumLogicalChannels);
% Logical channel id
simParameters.LCHConfig.LCID = ones(simParameters.NumUEs, simParameters.NumLogicalChannels) .* (1:simParameters.NumLogicalChannels);

% RLC entity direction. Value 0 represents DL only, 1
% represents UL only and 2 represents both UL and DL
% direction. Setting entity direction to have both UL and DL
simParameters.RLCConfig.EntityDir = 2*ones(simParameters.NumUEs, simParameters.NumLogicalChannels);
% Construct information for RLC logger
lchInfo = repmat(struct('LCID',[],'EntityDir',[]), [simParameters.NumUEs 1]);
for idx=1:simParameters.NumUEs
    lchInfo(idx).LCID = simParameters.LCHConfig.LCID(idx, :);
    lchInfo(idx).EntityDir = simParameters.RLCConfig.EntityDir(idx, :);
end
% Maximum RLC SDU length (in bytes)
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

% Periodicity of channel update in terms of number of slots
channelUpdatePeriodicitySlots = floor((simParameters.ChannelUpdatePeriodicity * 1000)/...
    slotDuration);
% 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 и 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, чтобы реализовать функциональность УИ МАКА. Планировщик реализован в hNRGNBMACScheduler.m. Для слоя RLC и hNRGNB.m и hNRUE.m используют hNRUMTransmitter.m, чтобы реализовать функциональность передатчика RLC и hNRUMReceiver.m, чтобы реализовать функциональность получателя RLC.

gNB = hNRGNB(simParameters); % Create the gNB node
scheduler = hNRGNBMACScheduler(simParameters); % Create MAC scheduler
addScheduler(gNB, scheduler); % Add scheduler to gNB

% Create the set of UE nodes
UEs = cell(simParameters.NumUEs, 1); 
for ueIdx=1:simParameters.NumUEs
    UEs{ueIdx} = hNRUE(simParameters, ueIdx);
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
for ueIdx = 1:simParameters.NumUEs
    % Assign random CQI values for the RBs, limited by the maximum achievable CQI value
    uplinkChannelQuality = randi([1 maxUECQIs(ueIdx)], 1, simParameters.NumRBs);
    downlinkChannelQuality = uplinkChannelQuality; % For TDD, UL and DL channel quality are same
    % Update the UL and DL CQI values at gNB with respect to UE. gNB uses
    % UL CQI values to calculate UL packet reception success probability
    % and for channel quality based UL assignments. It uses DL channel
    % quality for channel quality based DL assignments
    updateChannelQualityStatus(gNB, uplinkChannelQuality, 1, ueIdx); % 1 represents UL direction
    updateChannelQualityStatus(gNB, downlinkChannelQuality, 0, ueIdx); % 0 represents DL direction
    % Update the DL CQI values at UE. UE uses DL channel quality to calculate DL packet reception success probability
    updateChannelQualityStatus(UEs{ueIdx}, downlinkChannelQuality);
end

% Setup the logical channel
lcid = 1;
for ueIdx=1:simParameters.NumUEs
    % Create RLC channel configuration structure
    rlcChannelConfigStruct.LCID = simParameters.LCHConfig.LCID(ueIdx, lcid);
    rlcChannelConfigStruct.SnFieldLength = simParameters.RLCConfig.SNFieldLength(ueIdx, lcid);
    rlcChannelConfigStruct.MaxTxBufferLength = simParameters.RLCConfig.MaxTxBufferLength(ueIdx, lcid);
    rlcChannelConfigStruct.ReassemblyTime = simParameters.RLCConfig.ReassemblyTimer(ueIdx, lcid);
    rlcChannelConfigStruct.EntityDir = simParameters.RLCConfig.EntityDir(ueIdx, lcid);
    rlcChannelConfigStruct.LCGID = simParameters.LCHConfig.LCGID(ueIdx, lcid);
    rlcChannelConfigStruct.Priority = simParameters.LCHConfig.Priority(ueIdx, lcid);
    rlcChannelConfigStruct.PBR = simParameters.LCHConfig.PBR(ueIdx, lcid);
    rlcChannelConfigStruct.BucketSizeDuration = simParameters.LCHConfig.BSD(ueIdx, lcid);
    % Setup logical channel at gNB for the UE
    configureLogicalChannel(gNB, ueIdx, rlcChannelConfigStruct);
    % Setup logical channel at UE
    configureLogicalChannel(UEs{ueIdx}, ueIdx, rlcChannelConfigStruct);
end

% Initialize buffers to exchange packets between UEs and gNB
hNRPacketExchangeBuffer(simParameters);

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

Симуляция является символом запуска символом, чтобы выполнить соответствующие операции. Если находящееся на пазе планирование выбрано, выполнение спрыгивает с текущего контура паза к следующему контуру паза. Обработка цикла выполняет операции контура паза, сопровождаемые операциями контура символа. На основе текущего типа символа (DL/UL/Guard), только выполняются соответствующие операции.

Операции контура паза:

  • Условия канала обновления: Обновите значения CQI в RBS для каждого UE на основе периодичности обновления канала.

  • Сгенерируйте трафик приложения: Сгенерируйте DL и трафик UL согласно сконфигурированной периодичности шаблона трафика приложения.

  • Запустите планировщики: Обратитесь к разделу Scheduler в течение времени, когда DL и запущенные планировщики UL и ресурсы они запланируют в запуске. Для TTI (ли паз или набор непрерывных символов), присвоения RBS для повторных передач сделаны сначала, сопровождаемые присвоениями для новых передач.

  • Управление Tx (gNB): Создайте и отправьте UL и присвоения DL на основе присвоений, сделанных соответствующими планировщиками.

  • Управляйте Rx (UE): UEs получают свой соответствующий UL и присвоения DL. UEs обрабатывают присвоения и хранят информацию, которая будет использоваться в передаче PUSCH и приеме PDSCH.

  • Логгирование RLC: Регистрируйте статистику слоя RLC.

На символ операции:

  • Данные Tx (gNB): gNB отправляет пакеты PDSCH, придерживающиеся присвоений DL, отправленных ранее.

  • Данные Rx (UE): UEs получают пакет PDSCH, запланированный для этого символа. UEs хранят результат успеха/отказа приема отправить отклик PDSCH как положительное подтверждение (ACK) или отрицательное подтверждение (NACK). Синхронизация отправки отклика для PDSCH основана (k1) смещения паза обратной связи, полученный в присвоении PDSCH.

  • Данные Tx (UE): UEs отправляют пакет PUSCH, придерживающийся присвоений UL, полученных ранее.

  • Управляйте Tx (UE): На основе сконфигурированной периодичности BSR UEs отправляют BSR, чтобы передать незаконченную буферную сумму. Кроме того, UEs также отправляют отклик PDSCH.

  • Данные Rx (gNB): gNB получает пакеты PUSCH от UEs, который, как запланировали, передаст в этом символе. Если прием перестал работать, создайте контекст повторной передачи для конкретного UE, который используется в присвоениях для повторных передач, когда планировщик запускается затем.

  • Управление Rx (gNB): Получите BSR и обратную связь PDSCH.

  • Логгирование планировщика: Регистрируйте выход планирования операций в gNB и UEs.

  • Визуализация: Обновите различную визуализацию согласно периодичности обновления набора.

% To store the following UE metrics for each symbol: throughput
% bytes transmitted, goodput bytes transmitted, and pending buffer amount
% bytes. The number of goodput bytes is calculated by excluding the retransmissions from the
% total transmissions. Metrics are for DL direction if symbol type is DL
% (likewise, for UL symbol)
UEMetrics = zeros(simParameters.NumUEs, 3);
% To store Rx result: 'RxSuccess', 'RxFailure', 'NoRx' for a symbol
rxResultUEs = cell(simParameters.NumUEs, 1);
% To store the current value of last received NDI flag for HARQ processes
% of UEs. NDI values are for DL HARQ processes, if symbol type is DL
% (likewise, for UL symbol)
HARQProcessStatus = zeros(simParameters.NumUEs, simParameters.NumHARQ);
% To store the RLC statistics of a slot
ueRLCStats = cell(simParameters.NumUEs, 1);
gNBRLCStats = cell(simParameters.NumUEs, 1);
% To store current CQI values on the RBs for the UEs
channelQuality = zeros(simParameters.NumUEs, simParameters.NumRBs);
% Create logging and visualization objects for MAC scheduling and RLC
simSchedulingLogger = hNRSchedulingLogger(simParameters);  
simRLCLogger = hNRRLCLogger(simParameters, lchInfo);
if ~isfield(simParameters, 'SchedulingType') || simParameters.SchedulingType == 0 % If no scheduling type is specified or slot based scheduling is specified
    tickGranularity = 14; % Operations are only at slot boundary. Simulation jumps from one slot boundary to next
else % Symbol based scheduling
    tickGranularity = 1; % Operations can be at symbol boundary. Simulation moves symbol-by-symbol
end

slotNum = 0;
% Execute all the symbols in the simulation
for symbolNum = 1 : tickGranularity : numSymbolsSim
    resourceAssignmentsUL = [];
    resourceAssignmentsDL = [];
    UEMetrics(:) = 0;
    rxResultUEs(:) = {[]};
    HARQProcessStatus(:) = 0;
    
    symbolType = currentSymbolType(gNB); % Get current symbol type: DL/UL/Guard
    % Perform the slot boundary operations
    if mod(symbolNum - 1, 14) == 0
        slotNum = slotNum + 1;
        
        % Update the channel quality, if channel update periodicity has reached
        if mod(slotNum, channelUpdatePeriodicitySlots) == 0
            for ueIdx = 1:simParameters.NumUEs
                % Current UL CQI values for the UE (Assuming TDD channel reciprocity, DL CQIs would also be same)
                currentCQIs = getChannelQualityStatus(gNB, 1, ueIdx);
                % Update CQI values for RBs by randomly varying current
                % values by CQIDelta, limited by the minimum and maximum
                % achievable CQI index value. You can customize the
                % updating of CQI values as necessary
                updateType = [1 -1]; % Improvement/deterioration
                channelQualityChange = updateType(randi(length(updateType)));
                updatedCQIs = min(max(currentCQIs + simParameters.CQIDelta*channelQualityChange, 1), maxUECQIs(ueIdx));
                % Update the DL and UL channel quality information at gNB
                % and UEs (1 represents UL direction, 0 represents DL
                % direction)
                updateChannelQualityStatus(gNB, updatedCQIs, 1, ueIdx); 
                updateChannelQualityStatus(gNB, updatedCQIs, 0, ueIdx);
                updateChannelQualityStatus(UEs{ueIdx}, updatedCQIs);
            end
        end
        
        % Generate application traffic
        for ueIdx = 1:simParameters.NumUEs
            
            % Generate UL traffic
            if mod(slotNum-1, appPeriodicityUEsSlotsUL(ueIdx)) == 0 % Check if UL packet generation periodicity is reached for the UE
                % Receive UL data for the UE from upper layers based on UL application traffic
                % pattern
                % Divide application packet into multiple RLC SDUs if
                % it is bigger than maximum RLC SDU size
                numRLCSDU = floor(simParameters.ULPacketSizesUEs(ueIdx, lcid) / simParameters.maxRLCSDULength);
                rlcSDU = randi([0 255], simParameters.maxRLCSDULength, 1);
                for i = 1:numRLCSDU % Generate UL packets of max RLC SDU size (if any)
                    receiveRLCSDU(UEs{ueIdx}, ueIdx, lcid , rlcSDU);
                end
                if mod(simParameters.ULPacketSizesUEs(ueIdx, lcid),simParameters.maxRLCSDULength) ~= 0
                    % Generate UL packet which is smaller than maxRLCSDULength
                    rlcSDU = randi([0 255], mod(simParameters.ULPacketSizesUEs(ueIdx, lcid),simParameters.maxRLCSDULength), 1);
                    receiveRLCSDU(UEs{ueIdx}, ueIdx, lcid , rlcSDU);
                end
            end
            
            % Generate DL traffic
            if mod(slotNum-1, appPeriodicityUEsSlotsDL(ueIdx)) == 0 % If DL packet generation periodicity reached for UE
                % Receive DL data for the UE from upper layers based on application traffic
                % pattern
                % Divide application packet into multiple RLC SDUs, if it is bigger than maximum RLC SDU size
                numRLCSDU = floor(simParameters.DLPacketSizesUEs(ueIdx, lcid) / simParameters.maxRLCSDULength);
                rlcSDU = randi([0 255], simParameters.maxRLCSDULength, 1);
                for i = 1:numRLCSDU
                    receiveRLCSDU(gNB, ueIdx, lcid, rlcSDU); % Generate DL packets of max RLC SDU size (if any)
                end
                if mod(simParameters.DLPacketSizesUEs(ueIdx, lcid),simParameters.maxRLCSDULength) ~= 0
                    % Generate DL packet which is smaller than maxRLCSDULength
                    rlcSDU = randi([0 255], mod(simParameters.DLPacketSizesUEs(ueIdx, lcid),simParameters.maxRLCSDULength), 1);
                    receiveRLCSDU(gNB, ueIdx, lcid, rlcSDU);
                end
            end
        end
        
        % Run the schedulers. Functions internally check if the UL/DL
        % scheduler is set to run in this slot. If yes, schedule the
        % resources and send the corresponding UL and DL assignments
        resourceAssignmentsUL = runULSchedulerTDD(gNB);
        resourceAssignmentsDL = runDLSchedulerTDD(gNB);
        if ~isempty(resourceAssignmentsUL) || ~isempty(resourceAssignmentsDL) % Check if UL/DL assignments are done
            controlTx(gNB, resourceAssignmentsUL, resourceAssignmentsDL); % Construct and send UL and DL assignments
        end
        
        % Run the Rx operation at UEs for simultaneous reception of control packets
        for ueIdx = 1:simParameters.NumUEs % For all UEs
            controlRx(UEs{ueIdx}); % Receive UL and DL assignments, if any sent by gNB
            % Get RLC statistics
            ueRLCStats{ueIdx} = getRLCStatistics(UEs{ueIdx}, ueIdx);
            gNBRLCStats{ueIdx} = getRLCStatistics(gNB, ueIdx);
        end
        logRLCStats(simRLCLogger, ueRLCStats, gNBRLCStats); % Update RLC statistics logs
    end
    
    % Perform the symbol boundary operations
    if symbolType == 0 % DL symbol
        dataTx(gNB); % Send the PDSCH packets, if any scheduled
        for ueIdx = 1:simParameters.NumUEs % For all UEs
            % Read current NDI value at UEs for DL HARQ processes (for logging purpose)
            HARQProcessStatus(ueIdx, :) = getLastNDIFlagHarq(UEs{ueIdx}, 0); % 0 for DL
            % Receive the PDSCH packets from gNB that are scheduled to be
            % received in this symbol. Return the information of Rx
            % success/failure
            rxResultUEs{ueIdx} = dataRx(UEs{ueIdx});
            % Read the UL channel quality at gNB for each of the UEs (for logging purpose)
            channelQuality(ueIdx,:) = getChannelQualityStatus(gNB, 1, ueIdx); % 1 for UL direction
        end
        [UEMetrics(:, 1), UEMetrics(:, 2)]  = getCurrTTIBytes(gNB); % Read throughput and goodput bytes sent for each UE (for logging purpose)
        UEMetrics(:, 3) = getBufferStatus(gNB); % Read pending DL buffer (in bytes) for each UE at gNB (for logging purpose)
    end
    
    if symbolType == 1 % UL Symbol
        for ueIdx = 1:simParameters.NumUEs % For all UEs
            % Read current NDI value at UEs for UL HARQ processes (for logging purpose)
            HARQProcessStatus(ueIdx, :) = getLastNDIFlagHarq(UEs{ueIdx}, 1); % 1 for UL
            % UE sends the PUSCH packet if it is a Tx start symbol (as conveyed by gNB in
            % earlier received UL assignments)
            dataTx(UEs{ueIdx});
            % UE sends the BSR packet and ACK/NACK for PDSCHs
            controlTx(UEs{ueIdx});
            % Read throughput and goodput bytes transmitted by this UE in the current TTI (for logging purpose)
            [UEMetrics(ueIdx, 1), UEMetrics(ueIdx, 2)] = getCurrTTIBytes(UEs{ueIdx});
            % Read pending UL buffer (in bytes) on UE (for logging purpose)
            UEMetrics(ueIdx, 3) = getBufferStatus(UEs{ueIdx}); 
             % Read the DL channel quality at gNB for each of the UEs (for logging purpose)
            channelQuality(ueIdx,:) = getChannelQualityStatus(gNB, 0, ueIdx); % 0 for DL direction
        end
        % Receive PUSCH packets from UEs that are scheduled to be received
        % in this symbol. Return the information of Rx success/failure
        rxResultUEs = dataRx(gNB);
        controlRx(gNB); % Receive BSRs and PDSCH feedback
    end
    
    % Update logs based on the current symbol run of UEs and gNB
    logScheduling(simSchedulingLogger, symbolNum, [resourceAssignmentsUL resourceAssignmentsDL], UEMetrics, channelQuality, HARQProcessStatus, rxResultUEs, symbolType);
    
    % RB assignment visualization (if enabled)
    if simParameters.RBVisualization
        if symbolNum > 1 && (simParameters.SchedulingType == 1 && (mod(symbolNum, 14) == 0)) || (simParameters.SchedulingType == 0 && (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 symbolNum > 1 && mod(symbolNum-1, 14) == 0 && 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 symbolNum > 1 && mod(symbolNum-1, 14) == 0 && mod(slotNum, simParameters.MetricsStepSize) == 0
        plotMetrics(simSchedulingLogger);
        plotMetrics(simRLCLogger);
    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

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

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

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

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

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

  • Отображение нисходящих метрических графиков: Как восходящие метрические графики, 'Нисходящие показатели производительности Планировщика' отображают соответствующие подграфики для направления 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' или 'охрана'. Для находящегося на пазе планирования тип может только быть 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. Значения представляют байты MAC UL/DL, переданные/для UEs в этом символе. Обратите внимание на то, что общие байты пропускной способности для полной передачи PUSCH/PDSCH показывают в строке, соответствующей первому символу передачи.

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

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

  • Успех/Отказ Rx: Вектор-строка из длины N, где N является количеством UEs. Возможными значениями является или 'RxSuccess', 'RxFailure' или 'noRx'. 'noRx' не означает DL (или UL), передача планируется. Например: ['RxSuccess' 'RxSuccess' 'RxFailure' 'noRx'] означает, что пакеты от UE-1 и UE-2 получены успешно, в то время как пакет от UE-3 не был или получен или был поврежден. UE-4 не был запланирован для этого символа.

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

Журналы RLC: Обратитесь к NR PUSCH FDD, Планируя пример для формата журнала RLC.

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

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

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

% Read the logs and write them to MAT-files
timeStepLogs = getSchedulingLogs(simSchedulingLogger); % MAC scheduling logs
schedulingGrantLogs = getGrantLogs(simSchedulingLogger); % Scheduling assignments log
rlcLogs = getRLCLogs(simRLCLogger); % RLC statistics logs
save(simParameters.SimulationLogFile, 'timeStepLogs', 'schedulingGrantLogs', 'rlcLogs'); % Save simulation logs in a MAT-file
save(simParameters.ParametersLogFile, 'simParameters'); % Save simulation parameters in a MAT-file

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

Можно изменить существующий UL и DL планирование функциональности, чтобы запланировать ресурсы паза. Планирование ресурсов UL паза реализовано в scheduleULResourcesSlot функция hNRGNBMACScheduler.m. Заполните выход uplinkGrants из этой функции с массивом допустимого UL планирование присвоений. Для находящегося на пазе планирования, uplinkGrants может иметь максимум одно присвоение на UE. Для основанного на символе планирования паз может иметь несколько присвоений на соответствие UE различному TTIs. Каждым элементом в этом массиве является предоставление PUSCH на UE. Структура присвоения PUSCH имеет эти поля:

  • RNTI: Присвоение для этого UE. Это поле не является частью фактического пакета присвоения, отправленного в UEs.

  • Type: Является ли присвоение для новой передачи ('newTx') или повторной передачи ('reTx')). Это поле не является частью фактического пакета присвоения, отправленного в UEs, потому что поле NDI достаточно, чтобы передать это.

  • HARQIndex: Выбрал ID процесса UL HARQ.

  • RBGAllocationBitmap: Присвоение ресурса частотного диапазона. Битовый массив групп блока ресурса пропускной способности PUSCH. Значение 1 указывает, что RBG присвоен UE.

  • StartSymbol: Начальный символ присвоения PUSCH.

  • NumSymbols: Количество символов выделено для присвоения PUSCH.

  • SlotOffset: Смещение паза присвоений PUSCH относительно текущего паза (где планирование делается).

  • MCS: Выбранная схема модуляции и кодирования.

  • NDI: Новый флаг индикатора данных.

  • RV: Версия сокращения.

Снимок экрана показывает ресурсы UL паза, распределяемого в четырех присвоениях PUSCH. Это также показывает содержимое четвертого присвоения.

Точно так же scheduleDLResourcesSlot функция hNRGNBMACScheduler.m реализует соответствующую функциональность DL. Присвоение PDSCH имеет одно дополнительное поле 'FeedbackSlotOffset' как показано в фигуре. Поле является смещением паза времени передачи ACK/NACK от паза приема PDSCH.

Setting выход для функций scheduleULResourcesSlot и scheduleDLResourcesSlot позволяет вам управлять присвоением всего RBGs паза целиком. Можно также управлять присвоением каждого RBG TTI. Для ссылки вы видите, что существующее планирует стратегии, существующие в функциях помощника hNRSchedulingStrategyBestCQI.m, hNRSchedulingStrategyPF.m, и hNRSchedulingStrategyRR.m. Обратитесь к NR PUSCH FDD, Планируя пример для процедуры, чтобы реализовать пользовательскую стратегию планирования.

Чтобы расширить функциональность этого примера, чтобы поддержать несколько логических каналов, обратитесь к NR PUSCH FDD, Планируя пример.

На основе выбранной стратегии планирования этот пример демонстрирует присвоение UL и ресурсов DL к нескольким UEs gNB. Физический уровень абстрагирован в примере. UL и DL планирование производительности анализируются на основе графиков во время выполнения пропускной способности MAC, полезной пропускной способности MAC, справедливости доли ресурса и незаконченного буферного состояния 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.

Похожие темы

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