Этот пример оценивает пропускную способность и справедливость распределения ресурсов стратегии планирования восходящей линии связи (UL) в режиме дуплекса с частотным разделением каналов (FDD) с интегрированным уровнем управления радиоканалом (RLC). Стратегия планирования UL присваивает ресурсы физического восходящего общего канала (PUSCH) набору пользовательского оборудования (UE), соединенного с gNB. В примере используется неподчиненный режим (UM) слоя RLC и пройденного физического (PHY) слоя. Прохождение PHY- слоя не включает какую-либо обработку физического слоя и принимает основанный на вероятностях подход к моделированию отказов приема пакетов. Пример регистрирует события в симуляции, а также показывает визуализацию времени запуска, чтобы наблюдать эффективность сети.
В этом примере показано, как стратегия планирования (управляемая gNB) присваивает ресурсы UL среди UE. Пример рассматривает следующие операции в пределах gNB и UE, которые облегчают передачи и приемы UL.
Полный пакет PUSCH передается в первом символе выделенного набора символов. Приемник обрабатывает пакет в символе сразу после последнего символа в выделенном наборе символов.
Планировщик запускает каждые p пазов, чтобы назначить ресурсы UL, где p - сконфигурированная периодичность планировщика. В каждом запуске количество запланированных пазов равно периодичности выполнения планировщика, с. Первый паз, среди p пазов, которые будут запланированы в прогоне, является следующим предстоящим пазом, который удовлетворяет временной возможности подготовки PUSCH UE. Для примера рисунок показывает, как планировщик выбирает пазы в течение двух последовательных запусков. Это принимает периодичность планировщика (p) из 3 пазов. Следовательно, планировщик запускается после каждые 3 пазы и планирует ресурсы для 3 пазов. Возможность подготовки PUSCH для всех UE принята как больше, чем 1 паз (14 символов), но меньше, чем 2 пазы (28 символов).
Run-1: Когда планировщик запускается в начале слота-A, он планирует 3 пазы, начиная с слота-C, потому что для слота-A и слота-B UE не получают достаточное время подготовки PUSCH (UE получает время 0 символов в начале слота-A и 14 символов в начале слота- Для слота С UE получают 28 символов для подготовки PUSCH, и это удовлетворяет возможности подготовки PUSCH. Следовательно, Slot-C, D и E запланированы в этом запуске.
Run-2: Когда планировщик запускается в начале Slot-D, он планирует следующие 3 смежных пазы, начиная с Slot-F (Slot-F, G и H).
Вы можете выбрать любую из реализованных стратегий планирования: пропорциональную справедливость (PF), лучший CQI или round robin (RR). Различные поддерживаемые входы для планировщика UL перечислены вместе со стратегиями планирования, которые их рассматривают.
Два пакета управления, отчет о состоянии буфера (BSR) и назначение UL, приняты, чтобы быть посланы вне полосы без необходимости ресурсов для передачи.
Опорный сигнал демодуляции (DM-RS) не моделируется в этом примере. Однако один символ остается неиспользованным для него в назначениях PUSCH.
Этот пример моделирует:
Основанное на пазе и основанное на символе планирование UL. Планировщик UL обеспечивает, чтобы UE получили необходимое время подготовки PUSCH.
Несмежное распределение ресурсов частотного диапазона в терминах групп ресурсных блоков (RBG).
Конфигурируемый интервал между поднесущими, приводящий к различным длительности паза.
Механизм асинхронного гибридного автоматического запроса повторения (HARQ) UL.
Успешный прием UL или обнаружение отказа UE с помощью нового флага индикатора данных (NDI), присутствующего в присвоении UL.
Несколько логических каналов для поддержки различных шаблонов трафика приложений.
Определение приоритетов логического канала (LCP) в UE для распределения принятого назначения UL между логическими каналами.
Периодический шаблон трафика приложения UL.
RLC, работающий в режиме единой системы обмена сообщениями.
Для симуляции установите следующие ключевые параметры конфигурации:
Время симуляции
Количество 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. Классы helper hNRGNB.m и hNRUE.m создают узлы gNB и UE соответственно, содержащие слои RLC и MAC. Для MAC-уровня hNRGNB.m использует helper class hNRGNBMAC.m для реализации функциональности gNB MAC и hNRUE.m использует hNRUEMAC.m для реализации функциональности UE MAC. Планировщики реализованы в hNRSchedulerRoundRobin.m (Round robin), hNRSbestCQI.m (Пропорциональная ярмарка), hNRSchedulerBestCQI.m (Best CQI I Все планировщики наследуют от базового класса hNRScheduler.m, который содержит основные функциональные возможности планирования. Для слоя RLC и hNRGNB.m, и hNRUE.m используют hNRUMEntity.m для реализации функциональности передатчика и приемника RLC. Слой Passthrough PHY для UE и gNB реализован в hNRUEPassThroughPhy.m и hNRGNBPassThroughPhy.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
Layer specific logging и визуализация
Продвигайте таймер для узлов. Каждые 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: Рисунок 'Uplink Scheduler Performance Metrics' включает графики: Пропускная способность UL (для каждого UE и камеры), положительное положение UL (для каждого UE и камеры), процент доли ресурса среди UE (из общих ресурсов UL), чтобы передать справедливость планирования, и ожидаемое состояние буфера UL для UE, чтобы показать, получают ли UE достаточные ресурсы. Максимальное достижимое значение скорости передачи данных для пропускной способности UL показано штриховой линией на графиках пропускной способности и качества. Метрики эффективности графиков обновляться для каждого metricsStepSize
пазы.
Отображение графика метрик RLC: рисунок 'RLC Metrics Visualization' представляет количество байтов, переданных слоем RLC (на логический канал) для каждого UE. Метрики RLC графика обновляются для каждого metricsStepSize
пазы.
Параметры, используемые для журналов симуляции и симуляции, сохраняются в файлах MAT для постсимуляционного анализа и визуализации. Параметры симуляции сохраняются в файле MAT с именем файла в качестве значения параметра конфигурации simParameters.ParametersLogFile
. Журналы для каждого временного шага, журналы назначения расписания и журналы RLC сохраняются в файле MAT simParameters.SimulationLogFile
. После симуляции откройте файл для загрузки ULTimeStepLogs
, SchedulingAssignmentLogs
и RLCLogs
в рабочей области.
Журналы временных шагов: Таблица показывает запись шага расчета шага. Каждая строка таблицы представляет пазу.
Каждая строка таблицы представляет пазу и содержит следующую информацию:
Timestamp: Время (в миллисекундах) с начала симуляции.
Система координат: Номер система координат.
Паз: Номер паза в системе координат.
RBG Allocation Bitmap: N-на-P битовая матрица, где N - количество UE, а P - количество RBG. Если RBG назначена конкретному UE, соответствующий бит устанавливается равным 1. Для примера [0 0 1 1 0 1 0 1 0 1 0 0 0; 1 1 0 0 0 0 0 0 0 0 1 0 0; 0 0 0 0 1 0 1 0 1 0 0 1 1; 0 0 0 0 0 0 0 0 0 0 0 0 0 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-на-P матрица, где N - количество UE, а P - количество процессов HARQ в UE. Элемент матрицы в положении (i, j) является последним полученным флагом NDI в UE i для HARQ-процесса j. Для новых передач это значение и флаг NDI в назначении PUSCH должны переключаться. Для примера в паз 1 из системы координат 5, описанной в журнале планирования, UE-1 использует HARQ ID 0, и последнее значение флага NDI для HARQ ID 0 на UE-1 равняется 1. Чтобы указать новую передачу, значения флага NDI изменяются на 0 в присвоении PUSCH.
Пропускная способность Bytes: Вектор-строка длины N, где N - количество UE. Значения представляют MAC-байты, переданные UE в этом пазе.
Goodput Bytes: Вектор-строка длины N, где N - количество UE. Значения представляют новые MAC-байты передачи, переданные UE в этом пазе.
Состояние буфера UE: Вектор-строка длины N, где N - количество UE. Значения представляют количество ожидающих буферов в UE.
Журналы назначения расписания: Информация обо всех назначениях расписания и связанной информации регистрируется в этом файле. В таблице показаны выборки записей журнала.
Журналы RLC: каждая строка в журналах RLC представляет пазу и содержит следующую информацию:
Временная метка: Timestamp (в миллисекундах)
Система координат: Номер система координат.
Паз: Номер паза в системе координат.
UE RLC statistics: N-на-P камера, где N является продуктом количества UE и количества логических каналов, а P - количество собранных статистических данных. Каждая строка представляет статистику логического канала в UE. Последняя строка содержит кумулятивную статистику RLC всей симуляции.
gNB RLC статистика: N-на-P камера, где N является продуктом количества UE и количества логических каналов, а P - количество собранных статистических данных. Каждая строка представляет статистику логического канала UE в gNB. Последняя строка содержит кумулятивную статистику RLC всей симуляции.
Каждая строка таблицы статистики RLC UE и gNB представляет логический канал UE и содержит:
RNTI: Временный идентификатор UE в радиосети.
LCID: Логический идентификатор канала.
TxDataPDU: Количество PDU данных, отправленных RLC на слой.
TxDataBytes: Количество байтов данных, отправленных RLC на слой.
ReTxDataPDU: Количество PDU данных, повторно переданных RLC на слой.
ReTxDataBytes: количество байтов данных, повторно переданных RLC на слой.
TxControlPDU: Количество управляющих PDU, отправленных RLC на слой.
TxControlBytes: Количество управляющих байтов, отправленных RLC на слой.
TxPacketsDropt: Количество SDU RLC, сброшенных RLC из-за переполнения буфера Tx.
TxBytesDropt: количество байтов, отброшенных RLC из-за переполнения буфера Tx.
TimerPollRetransmitTimedOut: количество раз, когда истек срок действия таймера повторной передачи опроса.
RxDataPDU: Количество PDU данных, полученных RLC от MAC- слоя.
RxDataBytes: Количество байтов данных, полученных RLC от MAC- слоя.
RxDataPDUDropped: Количество полученных PDU данных от MAC, которые отбрасываются слоем RLC.
RxDataBytesDropt: Количество полученных байтов данных от MAC, которые отбрасываются слоем RLC.
RxDataPDUDuplicate: количество повторяющихся PDU, полученных RLC от MAC- слоя.
RxDataBytesDuplicate: количество повторяющихся байтов данных, полученных RLC от MAC- слоя.
RxControlPDU: Количество управляющих PDU, полученных RLC от MAC- слоя.
RxControlBytes: Количество управляющих байтов, полученных RLC от MAC- слоя.
TimerReassemblyTimedOut: Количество задержек таймера повторной сборки.
TimerStatusProbanitTimedOut: Количество просрочек таймера запрета состояния.
Можно запустить скрипт NRPostSimVisualization, чтобы получить визуализацию журналов после симуляции. В симуляцию post скрипта вы получаете переменную 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
В примере используются эти вспомогательные функции и классы:
hWirelessNode.m: Базовый класс беспроводного узла
hNRNode.m: базовый класс узла NR как для gNB, так и для UE
hNRGNB.m: функциональность узла gNB
hNRUE.m: функциональность узла UE
helperApplication.m: функциональность слоя
hNRRLCEntity.m: Базовый класс для сущностей RLC UM и AM
hNRUMEntity.m: функциональность RLC UM
hNRRLCDataPDUInfo.m: Создает информационный объект PDU RLC
hNRRLCDataReassembly.m: создайте информационный объект повторной сборки RLC SDU
hNRRLCBufferStatus.m: Генерирует объект информации о состоянии буфера RLC
hNRMAC.m: функциональность базового класса NR MAC
hNRGNBMAC.m: функциональность gNB MAC
hNRUEMAC.m: функциональность UE MAC
hNRScheduler.m: функциональность планировщика Core MAC
hNRSchedulerBestCQI.m: Реализует лучшую стратегию планирования CQI
hNRSchedulerProportionalFair.m: Реализует пропорциональную стратегию справедливого планирования
hNRSchedulerRoundRobin.m: Реализует стратегию кругового планирования
hNRMACBSR.m: Генерирует отчет о состоянии буфера
hNRMACBSRParser.m: Анализ отчета о состоянии буфера
hNRMACSubPDU.m: генерирует MAC subPDU
hNRMACPaddiningSubPDU.m: генерирует MAC subPDU с заполнением
hNRMACMultiplex.m: генерирует MAC PDU
hNRMACPDUParser.m: Анализирует MAC PDU
hNewHARQProcesses.m: Создает новый процесс HARQ
hUpdateHARQProcess.m: обновляет процесс HARQ
hNRPhyInterface.m: класс интерфейса слоя PHY
hNRGNBPassthroughPhy.m: gNB прохождение PHY слоя
hNRUEPassthroughPhy.m: прохождение по UE слою
hNRPUSCHInfo.m: информационная структура PUSCH передана MAC на слой PHY
hNRRxIndicationInfo.m: Информационная структура передана слоем PHY на MAC вместе с MAC PDU
hNRPacketDistribution.m: Создает объект распределения пакетов
hNRUplinkGrantFormat.m: формат назначения UL
hNRRLCLogger.m: Реализует функции логгирования и визуализации статистики RLC
hNRSchedulingLogger.m: Реализует функции логгирования и визуализации информации о планировании
hNRULSchedulingValidateConfig.m: проверяет строение симуляции
hNRSetUpPacketDistribution.m: Настройка функциональности распределения пакетов
hNRPacketWriter.m: Захватывает пакеты MAC
hNRPacketInfo.m: Формат метаданных для захвата MAC-пакетов
hNRMetricsVisualizer.m: Реализует функциональность визуализации метрик
NRPostSimVisualization.m: Визуализация после симуляции скрипта
[1] 3GPP TS 38.214. "NR; Процедуры физического слоя данных ". 3-ья Генерация проект Партнерства; Группа технических спецификаций Радиосеть доступ.
[2] 3GPP TS 38.321. "NR; Спецификация протокола управления средним доступом (MAC). "3rd Генерация Partnership Project; Группа технических спецификаций Радиосеть доступ.
[3] 3GPP TS 38.322. "NR; Спецификация протокола Radio Ссылки Control (RLC). "3rd Генерация Partnership Project; Группа технических спецификаций Радиосеть доступ.