Этот пример демонстрирует функциональность планирования слоя среднего управления доступом (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.
NR обеспечивает гибкий способ сконфигурировать DL и ресурсы UL. Параметры, используемые, чтобы задать пользовательскую настройку TDD:
Периодичность передачи DL-UL в мс.
Ссылочный интервал поднесущей, чтобы вычислить количество пазов в шаблоне DL-UL. В этом примере это принято, чтобы быть тем же самым как фактический интервал поднесущей, используемый в передаче.
Количество последовательных всех пазов DL в начале каждого шаблона DL-UL.
Количество последовательных символов DL в начале паза после последнего всего паза DL.
Количество последовательных всех пазов UL в конце каждого шаблона DL-UL.
Количество последовательных символов 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 планирование операции выполняют эти два шага.
Выберите пазы, которые будут запланированы: критерии, используемые в этом примере, выбирают все предстоящие пазы (включая текущий) содержащий незапланированные символы 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 и объекты 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. Более полный анализ методом моделирования сообщения при помощи сохраненных журналов дает подробное изображение операций, происходящих на на основание символа/паза.
Пример использует эти функции помощника и классы:
hNRSchedulingTDDValidateConfig.m: Подтверждает настройку симуляции
hNRNodeBase.m: базовый класс узла NR
hNRGNB.m: функциональность узла gNB
hNRUE.m: функциональность узла UE
hNRMACBase.m: функциональность базового класса MAC NR
hNRGNBMAC.m: функциональность gNB MAC
hNRGNBMACScheduler.m: функциональность планировщика gNB MAC
hNRUEMAC.m: функциональность УИ МАКА
hNewHARQProcesses.m: Создает новый процесс HARQ
hUpdateHARQProcess.m: Обновления процесс HARQ
hPDSCHTBS.m: PDSCH транспортируют размер блока
hPUSCHTBS.m: PUSCH транспортируют размер блока
hNRMACBSR.m: Генерирует буферный отчет о состоянии
hNRMACBSRParser.m: Синтаксические анализы буферизуют отчет о состоянии
hNRMACSubPDU.m: Генерирует MAC subPDU
hNRMACPaddingSubPDU.m: Генерирует MAC subPDU с дополнением
hNRMACMultiplex.m: Генерирует PDU MAC
hNRMACPDUParser.m: PDU MAC Синтаксических анализов
hNRPacketExchangeBuffer.m: пакет Реализаций обменивается буферами между UE и gNB
hNRUplinkGrantFormat.m: формат присвоения UL
hNRDownlinkGrantFormat.m: формат присвоения DL
hNRSchedulingLogger.m: Реализации планируя информационную функциональность логгирования и визуализации
hNRSchedulingStrategyBestCQI.m: Реализации лучший CQI планирование стратегии
hNRSchedulingStrategyPF.m: Реализует пропорциональную справедливую стратегию планирования
hNRSchedulingStrategyRR.m: циклический алгоритм Реализаций планирование стратегии
hNRUMTransmitter.m: функциональность передатчика RLC UM
hNRUMReceiver.m: функциональность получателя RLC UM
hNRUMDataHeader.m: Генерирует заголовок PDU RLC UM
hNRUMDataPDUDecode.m: Декодирует PDU RLC
hNRUMDataPDUInfo.m: Создает информационный объект PDU RLC
hNRRLCDataReassemblyInfo.m: Создайте информационный объект повторной сборки SDU RLC
hNRRLCBufferStatus.m: Генерирует буферный объект информации о статусе RLC
hNRRLCLogger.m: Реализации логгирование статистики RLC и функциональность визуализации
[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.