В этом примере оценивается пропускная способность и эффективность справедливости распределения ресурсов стратегии планирования восходящей линии связи (UL) в режиме дуплексирования с частотным разделением каналов (FDD) с интегрированным уровнем управления радиоканалом (RLC). Стратегия планирования UL назначает физические ресурсы общего канала восходящей линии связи (PUSCH) набору пользовательских устройств (UE), соединенных с gNB. В примере используется неподтвержденный режим (UM) уровня RLC и физический уровень (PHY). Сквозной PHY-уровень не включает в себя никакой обработки на физическом уровне и использует подход на основе вероятности для моделирования сбоев приема пакетов. Пример регистрирует события в моделировании, а также показывает визуализацию времени выполнения для наблюдения за производительностью сети.
Этот пример показывает, как стратегия планирования (управляемая gNB) назначает ресурсы UL среди UE. В примере рассматриваются следующие операции в пределах gNB и UE, которые облегчают передачи и приемы UL.

Полный пакет PUSCH передается в первом символе его выделенного набора символов. Приемник обрабатывает пакет в символе сразу после последнего символа в назначенном наборе символов.
Планировщик запускает каждые p слотов для назначения ресурсов UL, где p - сконфигурированная периодичность планировщика. В каждом прогоне количество запланированных слотов равно периодичности прогона планировщика, р. Первый слот из p слотов, которые должны быть запланированы в прогоне, является следующим предстоящим слотом, который удовлетворяет способности UE времени подготовки PUSCH. Например, на рисунке показано, как планировщик выбирает слоты во время двух последовательных прогонов. Он предполагает периодичность планировщика (p) в 3 слота. Следовательно, планировщик работает после каждых 3 слотов и планирует ресурсы для 3 слотов. Предполагается, что время подготовки PUSCH для всех UE превышает 1 слот (14 символов), но меньше 2 слотов (28 символов).
Run-1: Когда планировщик запускается в начале слота A, он планирует 3 слота, начиная с слота C, поскольку для слота A и слота B UE не получают достаточного времени подготовки PUSCH (UE получает время 0 символов в начале слота A и 14 символов в начале слота B). Для слота-C UE получают 28 символов для подготовки PUSCH, и это удовлетворяет возможности времени подготовки PUSCH. Следовательно, в этом прогоне запланированы слоты-C, D и E.
Run-2: Когда планировщик запускается в начале Slot-D, он планирует следующие 3 смежных слота, начиная с Slot-F (Slot-F, G и H).

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

Предполагается, что два управляющих пакета, отчет о состоянии буфера (BSR) и назначение UL, передаются вне полосы без необходимости ресурсов для передачи.
В этом примере опорный сигнал демодуляции (DM-RS) не моделируется. Однако один символ остается неиспользуемым для него в назначениях PUSCH.
Примеры моделей:
Планирование UL на основе слотов и символов. Планировщик UL гарантирует, что UE получают требуемое время подготовки PUSCH.
Несмежное выделение ресурсов частотной области в виде групп блоков ресурсов (RBG).
Конфигурируемый интервал между поднесущими, приводящий к различным длительным интервалам.
Асинхронный механизм гибридного автоматического запроса на повторение (HARQ) UL.
Успешность приема UL или обнаружение отказа UE с использованием флага индикатора новых данных (NDI), присутствующего в назначении UL.
Несколько логических каналов для поддержки различных шаблонов трафика приложений.
Определение приоритетов логического канала (LCP) в UE для распределения принятого назначения UL между логическими каналами.
Периодическая схема трафика приложения UL.
RLC работает в режиме UM.
Для моделирования задайте следующие ключевые параметры конфигурации:
Время моделирования
Количество UE
Расстояние UE от gNB (влияет на значения UL CQI для UE)
Шаблон трафика приложения в UE для генерации трафика
Конфигурация RLC для объектов Tx и Rx в UE и gNB соответственно
Конфигурация логического канала UE и gNB
Стратегия планирования: PF, Best CQI, RR
Периодичность BSR, посылаемых UE для информирования gNB о количестве ожидающего буфера
Время подготовки PUSCH для UE
Полоса пропускания PUSCH в терминах количества блоков ресурсов (RB)
Интервал между поднесущими
Тип конфигурации размера RBG
Начальное качество канала UL и механизм его обновления
rng('default'); % Reset the random number generator simParameters = []; % Clear the simulation parameters simParameters.NumFramesSim = 200; % Simulation time in terms of number of 10 ms frames simParameters.SchedulingType = 0; % Set the value to 0 (slot based scheduling) or 1 (symbol based scheduling) % 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 simulation parameters % simParameters.UEDistance and simParameters.PacketPeriodicityUEs are % array of length equal to NumUEs; and simParameters.PacketSizesUEs, % properties of simParameters.RLCConfig, and simParameters.LCHConfig % consists of number of rows equal to numUEs. simParameters.NumUEs = 4; % Number of logical channels in each UE. If you change the number of % logical channels, ensure that the simulation parameters % simParameters.PacketSizesUEs, properties of simParameters.RLCConfig, and % simParameters.LCHConfig consists of number of columns equal to % NumLogicalChannels. The logical channels associated to data radio bearers % use logical channel identifiers (LCIDs) starting from 4. So, the % logical channels are assumed to have LCIDs starting from 4 to NumLogicalChannels+3. simParameters.NumLogicalChannels = 3; simParameters.UEDistance = [100; 250; 700; 750]; % Distance of UEs from gNB (in meters) % Set the application traffic pattern for UEs. For example, the vector % element value 10 at index 4 represents that for each of the logical % channels of UE-4, a packet is generated every 10 ms simParameters.PacketPeriodicityUEs = [30; 20; 30; 10]; % Periodicity at which UEs generate packets in logical channels (in ms) % The N-by-P matrix represents the size of packet generated by the UE in % each logical channel, where 'N' represents the number of UEs and 'P' % represents the number of logical channels. A matrix element at position (i, j) % represents packet size (in bytes) generated by UE with RNTI 'i' for LCID 'j+3'. % For example, the value 12000 at index (3, 1) represents a packet % of size 12000 bytes generated by UE-3 for LCID 4 simParameters.PacketSizesUEs = [4000 6000 8000; 500 8000 8000; 12000 8000 4000; 1000 8000 4000]; % RLC configuration % Each property of RLCConfig must be an N-by-P matrix, where 'N' represents the number of UEs % and 'P' represents the number of logical channels. A matrix element at position % (i, j) corresponds to a property value of a UE with RNTI 'i' and LCID 'j+3'. % Sequence number (SN) field length (in bits) to be used by each UE for their logical channels simParameters.RLCConfig.SNFieldLength = [6 6 12; 6 6 12; 6 12 6; 6 6 12]; % Reassembly timer to be used by each UE for their logical channels simParameters.RLCConfig.ReassemblyTimer = [5 10 15; 5 5 10; 5 5 5; 5 10 15]; % Max number of service data units (SDUs) in the Tx buffer of each logical channel (to model Tx buffer overflow) simParameters.RLCConfig.MaxTxBufferSDUs = [4 3 11; 3 5 4; 6 1 3; 11 6 26]; % Logical channel (LCH) configuration % Each property of LCHConfig must be an N-by-P matrix, where 'N' represents the number of UEs % and 'P' represents the number of logical channels. A matrix element at position % (i, j) corresponds to a property value of a UE with RNTI 'i' and LCID 'j+3'. % Mapping between logical channel and logical channel group (LCG) ID simParameters.LCHConfig.LCGID = [1 3 2; 1 2 2; 1 2 3; 5 1 2]; % Priority of each logical channel simParameters.LCHConfig.Priority = [1 5 8; 1 1 6; 4 10 4; 10 11 13]; % Prioritized bit rate (PBR) of each logical channel (in kilo bytes per second) simParameters.LCHConfig.PBR = [8 16 32; 8 128 32; 8 16 32; 8 16 32]; % Bucket size duration (BSD) of each logical channel (in ms) simParameters.LCHConfig.BSD = [5 10 50; 5 20 20; 5 5 5; 5 10 20]; % Medium access control (MAC) configuration % Set the scheduler run periodicity in terms of number of slots. Value must be % less than the number of slots in a 10 ms frame simParameters.SchedulerPeriodicity = 4; simParameters.SchedulerStrategy = 'PF'; % Supported scheduling strategies: 'PF', 'RR' and 'BestCQI' % 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.BSRPeriodicity = 5; % In ms simParameters.EnableHARQ = true; % Flag to enable or disable HARQ. If disabled, there are no retransmissions simParameters.NumHARQ = 16; % Number of HARQ processes in each UE % PUSCH preparation time. gNB ensures that PUSCH assignment is received at % UEs PUSCHPrepTime ahead of the transmission time simParameters.PUSCHPrepTime = 200; % In microseconds % Maximum RBs allotted to a UE in a slot for a PUSCH transmission (limit is % applicable for new PUSCH assignments and not for the retransmissions) simParameters.RBAllocationLimitUL = 15; % PHY layer and channel configuration % RB count for 5 MHz band with 15 kHz subcarrier spacing (SCS). The complete % UL bandwidth is assumed to be allotted for PUSCH simParameters.NumRBs = 25; simParameters.SCS = 15; % kHz simParameters.ULBandwidth = 5e6; % Hz simParameters.ULCarrierFreq = 2.515e9; % Hz % Set the RBG size configuration to 1 (configuration-1 RBG table) or 2 % (configuration-2 RBG table) as defined in 3GPP TS 38.214 Section % 5.1.2.2.1 simParameters.RBGSizeConfig = 1; % 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: RBCQI = RBCQI +/- CQIDelta simParameters.ChannelUpdatePeriodicity = 0.5; % In sec simParameters.CQIDelta = 1; % 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 achievable CQI value in decreasing % order simParameters.CQIvsDistance = [ 200 15; 500 12; 800 10; 1000 8; 1200 7]; % Logging and visualization configuration % Flag to enable or disable run time 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. simParameters.RBVisualization = true; % The output metrics plots are updated NumMetricsSteps times during simulation simParameters.NumMetricsSteps = 20; % MAT-files used for post simulation visualization simParameters.ParametersLogFile = 'simParameters'; % For logging the simulation parameters simParameters.SimulationLogFile = 'simulationLogs'; % For logging the simulation logs hNRULSchedulingValidateConfig(simParameters); % Validate the simulation configuration
На основе основных параметров конфигурации вычислите производные параметры.
simParameters.NCellID = 1; % Physical cell ID simParameters.DLCarrierFreq = 2.635e9; % Hz simParameters.DLBandwidth = 10e6; % Hz simParameters.GNBPosition = [0 0 0]; % Position of gNB in (x,y,z) coordinates % Slot duration for the selected SCS and number of slots in a 10 ms frame slotDuration = 1/(simParameters.SCS/15); % Slot duration in ms numSlotsFrame = 10/slotDuration; % Number of slots in 10 ms frame numSlotsSim = simParameters.NumFramesSim * numSlotsFrame; % Number of slots in the simulation % Maximum RLC SDU length (in bytes) simParameters.maxRLCSDULength = 9000; % RLC entity direction. Value 0 represents downlink only, 1 % represents UL only and 2 represents both UL and downlink % directions. Setting entity direction to have only UL simParameters.RLCConfig.EntityDir = ones(simParameters.NumUEs, simParameters.NumLogicalChannels); % LCID (LCID of data radio bearers starts from 4) simParameters.LCHConfig.LCID = ones(simParameters.NumUEs, simParameters.NumLogicalChannels) .* (4:4+simParameters.NumLogicalChannels-1); % Construct information for RLC logger and visualizer lchInfo = repmat(struct('RNTI', [], 'LCID', [], 'EntityDir', []), [simParameters.NumUEs 1]); for idx = 1:simParameters.NumUEs lchInfo(idx).RNTI = idx; lchInfo(idx).LCID = simParameters.LCHConfig.LCID(idx, :); lchInfo(idx).EntityDir = simParameters.RLCConfig.EntityDir(idx, :); end % Find maximum achievable CQI value for UEs based on their distance from % the gNB maxUECQIs = zeros(simParameters.NumUEs, 1); % To store the maximum achievable CQI value for UEs for ueIdx = 1:simParameters.NumUEs % Based on the distance of the UE from gNB, find matching row in % CQIvsDistance mapping matchingRowIdx = find(simParameters.CQIvsDistance(:, 1) > simParameters.UEDistance(ueIdx)); if isempty(matchingRowIdx) maxUECQIs(ueIdx) = simParameters.CQIvsDistance(end, 2); else maxUECQIs(ueIdx) = simParameters.CQIvsDistance(matchingRowIdx(1), 2); end end % Define initial UL channel quality as an N-by-P matrix, % where 'N' is the number of UEs and 'P' is the number of RBs in the carrier % bandwidth. The initial value of CQI for each RB, for each UE, is given % randomly and is limited by the maximum achievable CQI value corresponding % to the distance of the UE from gNB simParameters.InitialChannelQualityUL = zeros(simParameters.NumUEs, simParameters.NumRBs); % To store current UL CQI values on the RBs for different UEs for ueIdx = 1:simParameters.NumUEs % Assign random CQI values for the RBs, limited by the maximum achievable CQI value simParameters.InitialChannelQualityUL(ueIdx, :) = randi([1 maxUECQIs(ueIdx)], 1, simParameters.NumRBs); end % 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 if ~isfield(simParameters, 'SchedulingType') || simParameters.SchedulingType == 0 % If no scheduling type is specified or slot based scheduling is specified rbAssignmentPlotPeriodicity = numSlotsFrame; % Update RB assignment visualization every frame (10 ms) tickGranularity = 14; simParameters.PUSCHMappingType = 'A'; simParameters.PDSCHMappingType = 'A'; else % Symbol based scheduling rbAssignmentPlotPeriodicity = 1; % Update RB assignment visualization every slot tickGranularity = 1; simParameters.PUSCHMappingType = 'B'; simParameters.PDSCHMappingType = 'B'; end
Создайте объекты gNB и UE, инициализируйте информацию о состоянии канала UL для UE в gNB и настройте логические каналы в gNB и UE. Вспомогательные классы hNRGNB.m и hNRUE.m создают узлы gNB и UE соответственно, содержащие уровень RLC и MAC. Для уровня MAC hNRGNB.m использует вспомогательный класс hNRGNBMAC.m для реализации функциональных возможностей MAC gNB, а hNRUE.m использует hNRUEMAC.m для реализации функциональных возможностей MAC UE. Планировщики реализованы в hNRschedulerRoundRobin.m (Round Robin), hNRschedulerFair.m (Пропорциональная ярмарка), hNRSchedulerBestCQI.m (Best CQI). Все планировщики наследуют от базового класса hNRScheduler.m, который содержит основные функции планирования. Для уровня RLC как hNRGNB.m, так и hNRUE.m используют hNRUMentity.m для реализации функциональных возможностей передатчика и приемника RLC. Уровень Passthrough PHY для UE и gNB реализован в hNRUEPassThrougHy.m и hNRGNBPassThrougHy.m соответственно.
simParameters.Position = simParameters.GNBPosition; gNB = hNRGNB(simParameters); % Create gNB node % Create and add scheduler switch(simParameters.SchedulerStrategy) case 'RR' % Round robin scheduler scheduler = hNRSchedulerRoundRobin(simParameters); case 'PF' % Proportional fair scheduler scheduler = hNRSchedulerProportionalFair(simParameters); case 'BestCQI' % Best CQI scheduler scheduler = hNRSchedulerBestCQI(simParameters); end addScheduler(gNB, scheduler); % Add scheduler to gNB gNB.PhyEntity = hNRGNBPassThroughPhy(simParameters); % Create passthrough PHY configurePhy(gNB, simParameters); setPhyInterface(gNB); % Set the interface to PHY layer % Create the set of UE nodes UEs = cell(simParameters.NumUEs, 1); for ueIdx = 1:simParameters.NumUEs simParameters.Position = [simParameters.UEDistance(ueIdx) 0 0]; % Position of UE UEs{ueIdx} = hNRUE(simParameters, ueIdx); simParameters.InitialChannelQualityDL = simParameters.InitialChannelQualityUL; UEs{ueIdx}.PhyEntity = hNRUEPassThroughPhy(simParameters, ueIdx); % Add passthrough PHY configurePhy(UEs{ueIdx}, simParameters); setPhyInterface(UEs{ueIdx}); % Set the interface to PHY layer % Initialize the UL CQI values at gNB updateChannelQuality(gNB, simParameters.InitialChannelQualityUL(ueIdx, :), 1, ueIdx); % 1 for UL % Setup logical channels for lcIdx = 1:simParameters.NumLogicalChannels % Create RLC channel configuration structure rlcChannelConfigStruct.EntityType = simParameters.RLCConfig.EntityDir(ueIdx, lcIdx); rlcChannelConfigStruct.LogicalChannelID = simParameters.LCHConfig.LCID(ueIdx, lcIdx); rlcChannelConfigStruct.SeqNumFieldLength = simParameters.RLCConfig.SNFieldLength(ueIdx, lcIdx); rlcChannelConfigStruct.MaxTxBufferSDUs = simParameters.RLCConfig.MaxTxBufferSDUs(ueIdx, lcIdx); rlcChannelConfigStruct.ReassemblyTimer = simParameters.RLCConfig.ReassemblyTimer(ueIdx, lcIdx); rlcChannelConfigStruct.EntityType = simParameters.RLCConfig.EntityDir(ueIdx, lcIdx); rlcChannelConfigStruct.LCGID = simParameters.LCHConfig.LCGID(ueIdx, lcIdx); rlcChannelConfigStruct.Priority = simParameters.LCHConfig.Priority(ueIdx, lcIdx); rlcChannelConfigStruct.PBR = simParameters.LCHConfig.PBR(ueIdx, lcIdx); rlcChannelConfigStruct.BSD = simParameters.LCHConfig.BSD(ueIdx, lcIdx); % Setup logical channel at gNB for the UE configureLogicalChannel(gNB, ueIdx, rlcChannelConfigStruct); % Setup logical channel at UE configureLogicalChannel(UEs{ueIdx}, ueIdx, rlcChannelConfigStruct); % Add data traffic pattern generators to UE nodes. Application data % is pumped to RLC layer as per the installed traffic pattern packetSize = simParameters.PacketSizesUEs(ueIdx, lcIdx); % Calculate the data rate (in kbps) of On-Off traffic pattern using % packet size (in bytes) and packet interval (in ms) dataRate = ceil(1000/simParameters.PacketPeriodicityUEs(ueIdx)) * packetSize * 8e-3; % Limit the size of the generated application packet to the maximum % RLC SDU size. The maximum supported RLC SDU size is 9000 bytes if packetSize > simParameters.maxRLCSDULength packetSize = simParameters.maxRLCSDULength; end % Create an object for On-Off network traffic pattern and add it to the % specified UE. This object generates the uplink (UL) data traffic on the UE app = networkTrafficOnOff('PacketSize', packetSize, 'GeneratePacket', true, ... 'OnTime', simParameters.NumFramesSim/100, 'OffTime', 0, 'DataRate', dataRate); UEs{ueIdx}.addApplication(ueIdx, simParameters.LCHConfig.LCID(ueIdx, lcIdx), app); end end % Setup the UL and DL packet distribution mechanism simParameters.MaxReceivers = simParameters.NumUEs; % Create DL packet distribution object dlPacketDistributionObj = hNRPacketDistribution(simParameters, 0); % Create UL packet distribution object ulPacketDistributionObj = hNRPacketDistribution(simParameters, 1); hNRSetUpPacketDistribution(simParameters, gNB, UEs, dlPacketDistributionObj, ulPacketDistributionObj);
Моделирование выполняется по слоту. В каждом слоте выполняются следующие операции:
Запуск уровней MAC и PHY gNB
Запуск уровней MAC и PHY UE
Ведение журнала и визуализация на уровне
Выполните опережение таймера для узлов. Каждые 1 мс он также посылает триггер на уровни приложений и RLC. Прикладной уровень и уровень RLC выполняют запланированные операции на основе триггера таймера 1 мс.
% Create an object for MAC scheduling information visualization and logging (UL direction is represented as 1) simSchedulingLogger = hNRSchedulingLogger(simParameters, 1); % Create RLC statistics logging object simRLCLogger = hNRRLCLogger(simParameters, lchInfo); % Create metrics visualization object (UL direction is represented as 1) visualizer = hNRMetricsVisualizer(simParameters, 'RLCLogger', simRLCLogger, 'LCHInfo', lchInfo, 'MACLogger', simSchedulingLogger, 'VisualizationFlag', 1); % Run processing loop slotNum = 0; numSymbolsSim = numSlotsSim * 14; % Simulation time in units of symbol duration % Execute all the symbols in the simulation for symbolNum = 1 : tickGranularity : numSymbolsSim if mod(symbolNum - 1, 14) == 0 slotNum = slotNum + 1; end % Run MAC and PHY of gNB run(gNB); % Run MAC and PHY layers of UEs for ueIdx = 1:simParameters.NumUEs run(UEs{ueIdx}); end % RLC logging (only at slot boundary) if (simParameters.SchedulingType == 1 && mod(symbolNum, 14) == 0) || (simParameters.SchedulingType == 0 && mod(symbolNum-1, 14) == 0) logCellRLCStats(simRLCLogger, gNB, UEs); % Update RLC statistics logs end % MAC logging logCellSchedulingStats(simSchedulingLogger, symbolNum, gNB, UEs, 1); % For UL % Visualization % Check slot boundary if symbolNum > 1 && ((simParameters.SchedulingType == 1 && mod(symbolNum, 14) == 0) || (simParameters.SchedulingType == 0 && mod(symbolNum-1, 14) == 0)) % RB assignment visualization (if enabled) if simParameters.RBVisualization if mod(slotNum, rbAssignmentPlotPeriodicity) == 0 % Plot at slot boundary, if the update periodicity is reached plotRBGrids(simSchedulingLogger); end end % CQI grid visualization (if enabled) if simParameters.CQIVisualization if mod(slotNum, numSlotsFrame) == 0 % Plot at frame boundary plotCQIRBGrids(simSchedulingLogger); end end % If the update periodicity is reached, plot scheduler metrics and RLC metrics visualization % at slot boundary if mod(slotNum, simParameters.MetricsStepSize) == 0 plotMetrics(visualizer, slotNum); end end % Advance timer ticks for gNB and UEs by 14 symbols advanceTimer(gNB, tickGranularity); for ueIdx = 1:simParameters.NumUEs advanceTimer(UEs{ueIdx}, tickGranularity); end end




Показаны четыре типа визуализации во время выполнения:
Отображение значений CQI для UE по полосе пропускания PUSCH: Для получения более подробной информации см. рисунок «Визуализация качества канала».
Отображение назначения сети ресурсов для UE: 2-D временная частотная сетка обновляется каждые 10 мс (длина кадра) и показывает распределение RB для UE в предыдущем кадре. Процесс HARQ для назначений PUSCH также показан вместе с RNTI UE. Новые передачи показаны черным цветом, а повторные передачи показаны синим цветом с использованием идентификатора процесса HARQ каждого UE, назначение повторной передачи может быть отображено на его ранее неудачную передачу. Для получения более подробной информации см. рисунок «Распределение сетки ресурсов».
Отображение графиков метрик планирования UL: Рисунок «Показатели производительности планировщика восходящей линии связи» включает графики: Пропускная способность UL (на UE и соту), гудпут UL (на UE и соту), процент распределения ресурсов между UE (из общих ресурсов UL), чтобы передать справедливость планирования, и состояние буфера UL в ожидании UE, чтобы показать, получают ли UE достаточные ресурсы. Максимально достижимое значение скорости передачи данных для пропускной способности UL показано пунктирной линией на графиках пропускной способности и гудпута. Графики показателей производительности обновляются для каждого metricsStepSize слоты.
Отображение графика метрик RLC: Цифра «визуализация метрик RLC» представляет количество байтов, переданных уровнем RLC (на логический канал) для каждого UE. Обновление графика метрик RLC для каждого metricsStepSize слоты.
Параметры, используемые для журналов моделирования и моделирования, сохраняются в MAT-файлах для постсимуляционного анализа и визуализации. Параметры моделирования сохраняются в MAT-файле с именем файла в качестве значения параметра конфигурации. simParameters.ParametersLogFile. Журналы каждого шага времени, журналы назначения планирования и журналы RLC сохраняются в файле MAT simParameters.SimulationLogFile. После моделирования откройте файл для загрузки ULTimeStepLogs, SchedulingAssignmentLogs и RLCLogs в рабочей области.
Журналы временных шагов: В таблице показан пример записи временных шагов. Каждая строка таблицы представляет слот.

Каждая строка таблицы представляет слот и содержит следующую информацию:
Временная метка: Время (в миллисекундах) с начала моделирования.
Кадр: Номер кадра.
Слот: номер слота в рамке.
Битовая карта распределения RBG: битовая матрица N-by-P, где N - количество UE, а P - количество RBG. Если RBG назначается конкретному UE, соответствующий бит устанавливается равным 1. Например, [0 0 1 1 0 1 0 1 0 1 0 0 0; 1 1 0 0 0 0 0 0 0 0 1 0 0; 0 0 0 0 1 0 1 0 1 0 0 1 1; 0 0 0 0 0 0 0 0 0 0 0 0 0] означает, что ширина полосы пропускания UL имеет 13 RBG и UE-1 присваиваются индексы RBG: 2, 3, 5, 7 и 9; UE-2 присваиваются индексы RBG 0, 1 и 10; UE-3 присваиваются индексы RBG 4, 6, 8, 11 и 12, а UE-4 не присваиваются никакие RBG.
MCS: Вектор строки длиной N, где N - количество UE. Каждое значение соответствует индексу схемы модуляции и кодирования (MCS) для передачи PUSCH. Например, [10 12 8 -1] означает, что только UE-1, UE-2 и UE-3 назначаются ресурсы UL для этого слота и используют значения MCS 10, 12 и 8 соответственно.
Процесс HARQ: Вектор строки длиной N, где N - количество UE. Значение представляет собой идентификатор процесса HARQ, используемый UE для передачи PUSCH. Например, [0 3 6 -1] означает, что только UE-1, UE-2 и UE-3 назначены ресурсы UL для этого слота и используют идентификаторы процесса HARQ 0, 3 и 6 соответственно.
NDI: вектор строки длиной N, где N - количество UE. Значение является значением флага NDI в назначении UL для передачи PUSCH. Например, [0 0 1 -1] означает, что только UE-1, UE-2 и UE-3 назначены ресурсы UL для этого слота и используют значения флага NDI (которые определяют, используется ли новая передача или повторная передача) 0, 0 и 1 соответственно.
Tx Type: Tx Type указывает тип передачи (новая передача или повторная передача). Вектор строки длиной N, где N - количество UE. Возможные значения: 'newTx', 'reTx', или'noTx'. 'noTxозначает, что UE не выделены ресурсы PUSCH. Например, ['newTx' 'newTx' 'reTx' 'noTx"] означает, что только UE-1, UE-2 и UE-3 назначаются ресурсы UL для этого слота. UE-1 и UE-2 передают новый пакет из указанного процесса HARQ, в то время как UE-3 повторно передает пакет в буфере указанного процесса HARQ.
CQI для UE: матрица N-за-P, где N - количество UE, а P - количество RB в полосе пропускания. Матричный элемент в положении (i, j) соответствует значению UL CQI для UE с RNTI i в RB j.
Матрица HARQ NDI Status: N-by-P, где N - количество UE, а P - количество процессов HARQ на UE. Элемент матрицы в позиции (i, j) является последним принятым флагом NDI в UE i для идентификатора j процесса HARQ. Для новых передач это значение и флаг NDI в назначении PUSCH должны переключаться. Например, в слоте 1 кадра 5, описанного в журнале планирования, UE-1 использует идентификатор HARQ 0 и последнее значение флага NDI для идентификатора HARQ 0 в UE-1 равно 1. Чтобы указать новую передачу, значения флага NDI изменяются на 0 в назначении PUSCH.
Байты пропускной способности: вектор строки длиной N, где N - количество UE. Значения представляют байты MAC, передаваемые UE в этом слоте.
Goodput Bytes: вектор строки длиной N, где N - количество UE. Значения представляют новые байты MAC передачи, переданные UE в этом слоте.
Состояние буфера UE: вектор строки длиной N, где N - количество UE. Значения представляют количество ожидающих буферов в UE.
Журналы назначений планирования: В этот файл заносится информация обо всех назначениях планирования и соответствующая информация. В таблице приведены примеры записей журнала.
Журналы RLC: Каждая строка в журналах RLC представляет слот и содержит следующую информацию:
Метка времени: метка времени (в миллисекундах)
Кадр: Номер кадра.
Слот: номер слота в рамке.
Статистика RLC UE: ячейка N-за-P, где N - произведение количества UE и количества логических каналов, а P - количество собранных статистических данных. Каждая строка представляет статистику логического канала в UE. Последняя строка содержит кумулятивную статистику RLC всего моделирования.
Статистика RLC gNB: ячейка N-за-P, где N - произведение количества UE и количества логических каналов, а P - количество собранных статистических данных. Каждая строка представляет статистику логического канала UE в gNB. Последняя строка содержит кумулятивную статистику RLC всего моделирования.
Каждая строка таблицы статистики RLC UE и gNB представляет логический канал UE и содержит:
RNTI: временный идентификатор радиосети UE.
LCID: идентификатор логического канала.
TxDataPDU: количество PDU данных, отправленных RLC на уровень MAC.
TxDataBytes: количество байтов данных, отправленных RLC на уровень MAC.
RETxDataPDU: количество PDU данных, повторно переданных RLC на уровень MAC.
RETxDataBytes: количество байтов данных, повторно переданных RLC на уровень MAC.
TxControlPDU: количество управляющих PDU, отправленных RLC на уровень MAC.
TxControlBytes: количество управляющих байтов, отправленных RLC на уровень MAC.
TxPacketDroped: количество СБД RLC, отброшенных RLC из-за переполнения буфера Tx.
TxBytesDroped: количество байтов, отброшенных RLC из-за переполнения буфера Tx.
TimerPollRetransmitTimedOut: количество истекших таймеров повторной передачи опроса.
RxDataPDU: количество PDU данных, принятых RLC от уровня MAC.
RxDataBytes: количество байтов данных, полученных RLC от уровня MAC.
RxDataPDUDropped: количество полученных PDU данных от MAC, которые отбрасываются уровнем RLC.
RxDataBytesDroped: количество полученных байтов данных от MAC, которые отбрасываются уровнем RLC.
RxDataPDUUuplicate: количество повторяющихся PDU, полученных RLC от уровня MAC.
RxDataBytesDuplicate: количество повторяющихся байтов данных, полученных RLC от уровня MAC.
RxControlPDU: количество управляющих PDU, полученных RLC от уровня MAC.
RxControlBytes: количество управляющих байтов, полученных RLC от уровня MAC.
TimerRecemblyTimedOut: Количество истекших таймеров повторной сборки.
TimerStartProhibitTimedOut: количество истекших таймеров запрета состояния.
Чтобы получить визуализацию журналов после моделирования, можно запустить сценарий NRPostSimVisualization. В сценарии постмульсионного моделирования предоставляется переменная isLogReplay, которая предоставляет эти опции для визуализации фигур «Распределение сетки ресурсов» и «Визуализация качества канала».
Набор isLogReplay кому true для воспроизведения журналов моделирования.
Набор isLogReplay кому false для анализа журналов моделирования и ввода номера кадра для визуализации информации планирования конкретного кадра
% Read the logs and save them in MAT-files simulationLogs = cell(1, 1); simulationLogs{1} = struct('ULTimeStepLogs',[], 'SchedulingAssignmentLogs',[] ,'RLCLogs',[]); [~, simulationLogs{1}.ULTimeStepLogs] = getSchedulingLogs(simSchedulingLogger); % UL time step scheduling logs simulationLogs{1}.SchedulingAssignmentLogs = getGrantLogs(simSchedulingLogger); % Scheduling assignments log simulationLogs{1}.RLCLogs = getRLCLogs(simRLCLogger); % RLC statistics logs save(simParameters.SimulationLogFile, 'simulationLogs'); % Save simulation logs in a MAT-file save(simParameters.ParametersLogFile, 'simParameters'); % Save simulation parameters in a MAT-file
В примере используются следующие вспомогательные функции и классы:
HStartNode.m: базовый класс беспроводного узла
hNRNode.m: базовый класс узла NR как для gNB, так и для UE
hNRGNB.m: функциональность узла gNB
hNRUE.m: функциональные возможности узла UE
helperApplication.m: Функциональные возможности прикладного уровня
hNRRLEntity.m: Базовый класс для объектов RLC UM и AM
hNRUMEntity.m: Функциональные возможности RLC UM
hNRRLCDataPDUInfo.m: Создание информационного объекта PDU RLC
hNRRLCDataRecembly.m: Создание информационного объекта RLC SDU для повторной сборки
hNRRLCBufferStatus.m: Создает объект информации о состоянии буфера RLC
hNRMAC.m: функциональность базового класса NR MAC
hNRGNBMAC.m: функциональность MAC gNB
hNRUEMAC.m: Функциональность MAC UE
hNRscheduler.m: Основные функции планировщика MAC
hNRschedulerBestCQI.m: Реализует лучшую стратегию планирования CQI
hNRschedulerHair.m: Реализует стратегию пропорционального справедливого планирования
hNRRschedulerRoundRobin.m: Реализует стратегию циклического планирования
hNRMACBSR.m: Создание отчета о состоянии буфера
hNRMACBSRParser.m: Анализ отчета о состоянии буфера
hNRMACSubPDU.m: Создание подPDU MAC
hNRMACPaddingSubPDU.m: Создание подPDU MAC с дополнением
hNRMACMultiplex.m: генерирует PDU MAC
hNRMACPDUParser.m: Синтаксический анализ MAC PDU
hNewHARQPprocesses.m: Создание нового процесса HARQ
hStartHARQProcess.m: Обновление процесса HARQ
hNRPhyInterface.m: класс интерфейса уровня PHY
hNRGNBPassthroughPhy.m: gNB сквозной слой PHY
hNRUEPassthroughPhy.m: UE через слой PHY
hNRPUSCHInfo.m: Информационная структура PUSCH, передаваемая MAC на уровень PHY
hNRRxInfo.m: Информационная структура, передаваемая PHY-уровнем MAC вместе с MAC PDU
hNRPacketDistribution.m: Создание объекта распространения пакетов
hNRUplinkGrantFormat.m: формат назначения UL
hNRRLCLogger.m: Реализует функции регистрации и визуализации статистики RLC
hNRRschedulingLogger.m: Реализует функции регистрации и визуализации информации планирования
hNRULschedulingValidateConfig.m: Проверка конфигурации моделирования
hNRSetUpPacketDistribution.m: Настройка функциональности распределения пакетов
hNRPacketWriter.m: Захватывает пакеты MAC
hNRPacketInfo.m: формат метаданных для захвата MAC-пакетов
hNRMetricalVisualizer.m: Реализует функции визуализации метрик
NRPostSimVisualization.m: Сценарий визуализации после моделирования
[1] 3GPP TS 38.214. "НР; Процедуры физического уровня для данных. "Проект партнерства третьего поколения; Техническая спецификация на сеть радиодоступа группы.
[2] 3GPP TS 38.321. "НР; Спецификация протокола управления доступом к среде (MAC). "Проект партнерства 3-го поколения; Техническая спецификация на сеть радиодоступа группы.
[3] 3GPP TS 38.322. "НР; Спецификация протокола управления радиоканалом (RLC). "Проект партнерства 3-го поколения; Техническая спецификация на сеть радиодоступа группы.