Этот пример оценивает пропускную способность и эффективность справедливости доли ресурса восходящего канала (UL) планирование стратегии в режиме дуплекса деления частоты (FDD) с интегрированным слоем управления линией радиосвязи (RLC). UL планирование стратегии присваивает физический восходящий канал совместно использованные ресурсы канала (PUSCH) ресурсы к набору оборудования пользователя (UEs), соединенный с gNB. Пример использует неподтвержденный режим (UM) слоя RLC и передачи физический слой (PHY). Слой PHY передачи не включает обработки физического уровня и принимает основанный на вероятности подход к пакетным отказам приема модели. Пример регистрирует события в симуляции и также показывает визуализацию времени выполнения, чтобы наблюдать производительность сети.
В этом примере показано, как стратегия планирования (управляемый gNB) присваивает ресурсы UL среди UEs. Пример рассматривает следующие операции в gNB и UEs, которые упрощают передачи UL и приемы.
Полный пакет PUSCH передается в первом символе его выделенного набора символов. Приемник обрабатывает пакет в символе сразу после последнего символа в выделенном наборе символов.
Планировщик запускается каждый p пазы, чтобы присвоить ресурсы UL, где p является сконфигурированной периодичностью планировщика. В каждом запуске количество запланированных пазов равно периодичности запущенного планировщика, p. Первый паз, среди p пазов, которые будут запланированы в запуске, является следующим предстоящим пазом, который удовлетворяет возможности времени для подготовки PUSCH UEs. Например, рисунок показывает способ, которым планировщик выбирает пазы во время двух последовательных запусков. Это принимает периодичность планировщика (p) 3 пазов. Следовательно, планировщик выполняется после каждых 3 пазов и планирует ресурсы для 3 пазов. Возможность времени для подготовки PUSCH всего UEs принята как больше, чем 1 паз (14 символов), но меньше чем 2 паза (28 символов).
Запуск 1: Когда планировщик запустится в начале Паза-A, он планирует 3 паза, начинающие с Паза-C, потому что для Паза-A и Вставляют-B UEs, не получают достаточно времени для подготовки PUSCH (UEs получает время 0 символов в начале Паза-A и 14 символов в начале Паза-B). Для Паза-C UEs получают 28 символов для подготовки PUSCH, и это удовлетворяет возможности времени для подготовки PUSCH. Следовательно, Паз-C, D, и E планируются в этом запуске.
Запуск 2: Когда планировщик запустится в начале Паза-D, он планирует следующие 3 непрерывных паза, начинающие с Паза-F (Паз-F, G, и H).
Можно выбрать любую из реализованных стратегий планирования: пропорциональная ярмарка (PF), лучший CQI или циклический алгоритм (RR). Различные поддерживаемые входные параметры к планировщику UL перечислены наряду со стратегиями планирования, которые рассматривают их.
Два пакета управления, буферный отчет о состоянии (BSR) и присвоение UL, приняты, чтобы быть отправленными из полосы без потребности ресурсов для передачи.
Опорный сигнал демодуляции (DM-RS) не моделируется в этом примере. Однако один символ сохранен неиспользованным для него в присвоениях PUSCH.
Этот пример модели:
Паз базирующееся планирование UL. Планировщик UL гарантирует, что UEs получают необходимое время для подготовки PUSCH.
Выделение, состоящее из нескольких несмежных участков, ресурсов частотного диапазона в терминах ресурса блокирует группы (RBGs).
Конфигурируемый интервал поднесущей, приводящий к различной длительности паза.
Асинхронный гибридный автоматический повторный запрос UL (HARQ) механизм.
Обнаружение успешности или неуспешности приема UL UEs, использующим новый индикатор данных (NDI), отмечает существующий в присвоении UL.
Несколько логических каналов, чтобы поддержать различные шаблоны трафика приложения.
Логическое установление приоритетов канала (LCP) в UE, чтобы распределить полученное присвоение UL среди логических каналов.
Периодический шаблон трафика приложения UL.
RLC, действующий в режиме UM.
Для симуляции, набор эти ключевые параметры конфигурации:
Время симуляции
Количество UEs
Расстояние UEs от gNB (влияет на значения UL CQI для UEs),
Шаблон трафика приложения в UEs, чтобы генерировать трафик
Настройка RLC для сущностей Tx и Rx в UEs и gNB соответственно
Логическая настройка канала UEs и gNB
Планирование стратегии: PF, Лучший CQI, RR
Периодичность BSRs, отправленного UEs, чтобы сообщить gNB о незаконченной буферной сумме
Время для подготовки PUSCH для UEs
Пропускная способность PUSCH в терминах количества блоков ресурса (RBS)
Интервал поднесущей
Тип настройки размера 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 % 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. 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. For example, the value % 1000 at index (4, 1) represents a packet of size 1000 bytes generated by % UE-4 for logical channel ID 1 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 property value of a UE with RNTI value 'i' and logical channel ID 'j'. % 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 property value of a UE with RNTI value 'i' and logical channel ID 'j'. % 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 % Packet periodicities of UEs in terms of number of slots appPeriodicityUEsSlots = simParameters.PacketPeriodicityUEs ./ slotDuration; % 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); % Logical channel id (logical channel ID 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 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 % 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
Создайте gNB и объекты UE, инициализируйте информацию об условии канала UL для UEs в gNB и настройте логические каналы в gNB и UE. Классы помощника hNRGNB.m и hNRUE.m создают gNB и узлы UE соответственно, содержа слой RLC и MAC. Для слоя МАКа hNRGNB.m использует класс помощника hNRGNBMAC.m, чтобы реализовать функциональность gNB MAC, и hNRUE.m использует hNRUEMAC.m, чтобы реализовать функциональность УИ МАКА. Планировщики реализованы в hNRSchedulerRoundRobin.m (Циклический алгоритм), hNRSchedulerProportionalFair.m (Пропорциональная ярмарка), hNRSchedulerBestCQI.m (Лучший CQI). Все планировщики наследовались базовому классу 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 UEs
Слой определенное логгирование и визуализация
Усовершенствуйте таймер для узлов. Каждый 1 мс это также отправляет триггер в слои RLC и приложение. Прикладной уровень и слой RLC выполняют их запланированные операции на основе триггера таймера на 1 мс.
% To store the following UE metrics for each slot: 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 UESlotMetrics = zeros(simParameters.NumUEs, 3); % To store the RLC statistics for each slot ueRLCStats = cell(simParameters.NumUEs, 1); gNBRLCStats = cell(simParameters.NumUEs, 1); % To store current UL CQI values on the RBs for different UEs uplinkChannelQuality = zeros(simParameters.NumUEs, simParameters.NumRBs); % To store last received NDI values for UL HARQ processes HARQProcessStatus = zeros(simParameters.NumUEs, simParameters.NumHARQ); % Create an object for MAC scheduling information visualization and logging (UL direction is represented as 1) simSchedulingLogger = hNRSchedulingLogger(simParameters, 1); % Create an object for RLC visualization and logging (UL direction is represented as 1) simRLCLogger = hNRRLCLogger(simParameters, lchInfo, 1); symbolNum = 0; % Run processing loop for slotNum = 1:numSlotsSim % Run MAC and PHY layers of gNB run(gNB.MACEntity); run(gNB.PhyEntity); % Run MAC and PHY layers of UEs for ueIdx = 1:simParameters.NumUEs % Read the last received NDI flags for HARQ processes for % logging (Reading it before it gets overwritten by run function of MAC) HARQProcessStatus(ueIdx, :) = getLastNDIFlagHarq(UEs{ueIdx}.MACEntity, 1); % 1 for UL run(UEs{ueIdx}.MACEntity); run(UEs{ueIdx}.PhyEntity); end % RLC logging for ueIdx = 1:simParameters.NumUEs % For all UEs % Get RLC statistics ueRLCStats{ueIdx} = getRLCStatistics(UEs{ueIdx}, ueIdx); gNBRLCStats{ueIdx} = getRLCStatistics(gNB, ueIdx); end logRLCStats(simRLCLogger, ueRLCStats, gNBRLCStats); % Update RLC statistics logs % MAC logging % Read UL assignments done by gNB MAC scheduler at current time. % Resource assignments returned by a scheduler is empty, if UL % scheduler was not scheduled to run at the current time or no % resources got scheduled resourceAssignmentsUL = getCurrentSchedulingAssignments(gNB.MACEntity); for ueIdx = 1:simParameters.NumUEs % Read the UL channel quality at gNB for each of the UEs for logging uplinkChannelQuality(ueIdx,:) = getChannelQuality(gNB, 1, ueIdx); % 1 for UL % Read throughput and goodput bytes transmitted for this UE in the % current TTI for logging [UESlotMetrics(ueIdx, 1), UESlotMetrics(ueIdx, 2)] = getTTIBytes(UEs{ueIdx}); UESlotMetrics(ueIdx, 3) = getBufferStatus(UEs{ueIdx}); % Read pending buffer (in bytes) on UE end % Update scheduling logs based on the current slot run of UEs and gNB. % Logs are updated in each slot, RB grid visualizations are updated % every frame, and metrics plots are updated every metricsStepSize % slots logScheduling(simSchedulingLogger, symbolNum + 1, resourceAssignmentsUL, UESlotMetrics, uplinkChannelQuality, HARQProcessStatus, 1); % Visualization % If RB Visualization flag is set, update the RB assignment grid at the % last slot of each frame if simParameters.RBVisualization && mod(slotNum, numSlotsFrame) == 0 plotRBGrids(simSchedulingLogger); end % If CQI Visualization flag is set, update the CQI grid at the last % slot of each frame if simParameters.CQIVisualization && mod(slotNum, numSlotsFrame) == 0 plotCQIRBGrids(simSchedulingLogger); end % Plot MAC scheduling performance, RLC throughput metrics at every metricsStepSize slots if mod(slotNum, simParameters.MetricsStepSize) == 0 plotMetrics(simSchedulingLogger); plotMetrics(simRLCLogger); end tickGranularity = 14; % Number of symbols in a slot % 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 % Symbol number in the simulation symbolNum = symbolNum + tickGranularity; end
Четыре типа показанной визуализации во время выполнения:
Отображение значений CQI для UEs по пропускной способности PUSCH: Для получения дополнительной информации смотрите 'Качественную фигуру' Визуализации Канала для получения дополнительной информации.
Отображение присвоения сетки ресурса на UEs: 2D сетка частоты времени обновляет каждые 10 мс (длина системы координат) и показывает выделение RB UEs в предыдущей системе координат. Процесс HARQ для присвоений PUSCH также показывают рядом с RNTI UEs. Новые передачи отображают черным цветом, и повторные передачи показывают в синем использовании ID процесса HARQ каждого UE, присвоение повторной передачи может быть сопоставлено со своей ранее не пройдено передачей. Для получения дополнительной информации смотрите 'фигуру' Выделения Сетки Ресурса для получения дополнительной информации.
Отображение UL планирование метрических графиков: 'Восходящая фигура' показателей производительности Планировщика включает графики: пропускная способность UL (на UE и ячейку), полезная пропускная способность UL (на UE и ячейку), процент доли ресурса среди UEs (из общих ресурсов UL), чтобы передать справедливость планирования и ожидания, которое UL буферизуют состояние UEs, чтобы показать, получают ли UEs достаточные ресурсы. Максимальное достижимое значение скорости передачи данных для пропускной способности UL показывают с пунктирной линией в графиках полезной пропускной способности и пропускной способности. Показатели производительности строят обновление для каждого metricsStepSize
пазы.
Отображение метрического графика RLC: 'фигура' визуализации пропускной способности RLC представляет пропускную способность слоя RLC (на логический канал) для выбранного UE. Метрики RLC строят обновление для каждого metricsStepSize
пазы.
Параметры, используемые для журналов симуляции и симуляции, сохранены в файлах MAT для постанализа методом моделирования и визуализации. Параметры симуляции сохранены в файле MAT с именем файла как значение параметра конфигурации simParameters.ParametersLogFile
. На журналы временного шага, планируя журналы присвоения и журналы RLC сохранены в файле MAT simParameters.SimulationLogFile
. После симуляции откройте файл, чтобы загрузить ULTimeStepLogs
, SchedulingAssignmentLogs
и RLCLogs
в рабочей области.
Журналы временного шага: таблица показывает запись шага шага расчета. Каждая строка таблицы представляет паз.
Каждая строка таблицы представляет паз и содержит следующую информацию:
Система координат: Структурируйте номер.
Паз: Номер слота в системе координат.
Битовый массив Выделения 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] средние значения, что пропускная способность UL имеет 13 RBGs и UE-1, присвоены индексы RBG: 2, 3, 5, 7 и 9; UE-2 присвоен индексы 0, 1 и 10 RBG; UE-3 присвоен, индексы 4, 6, 8, 11 и 12 и UE-4 RBG не присвоены никакой RBG.
MCS: Вектор-строка из длины N, где N является количеством UEs. Каждое значение соответствует схеме модуляции и кодирования (MCS) индекс для передачи PUSCH. Например, [10 12 8 - 1] означает, что только UE-1, UE-2 и UE-3 присвоены ресурсы UL для этого паза и используют значения MCS 10, 12, и 8, соответственно.
Процесс HARQ: Вектор-строка из длины N, где N является количеством UEs. Значение является ID процесса HARQ, используемым UE для передачи PUSCH. Например, [0 3 6 - 1] означает, что только UE-1, UE-2 и UE-3 присвоены ресурсы UL для этого паза и используют идентификаторы процесса HARQ 0, 3, и 6, соответственно.
NDI: Вектор-строка из длины N, где N является количеством UEs. Значение является флаговым значением NDI в присвоении UL для передачи PUSCH. Например, [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. Например, ['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) соответствует значению UL CQI для UE с RNTI i в RB j.
Состояние HARQ NDI: матрица N-by-P, где N является количеством UEs и P, является количеством процессов HARQ на UEs. Элементом матрицы A в положении (i, j) является последний полученный флаг NDI в UE i для ID процесса HARQ j. Для новых передач должны переключиться это значение и флаг NDI в присвоении PUSCH. Например, в пазе 1 системы координат 5 описанных в журнале планирования, UE-1 использует ID HARQ 0, и последнее флаговое значение NDI для ID HARQ 0 в UE-1 равняется 1. Чтобы указать на новую передачу, флаговые значения NDI превращаются на 0 в присвоении PUSCH.
Байты пропускной способности: Вектор-строка из длины N, где N является количеством UEs. Значения представляют байты MAC, переданные UEs в этом пазе.
Байты полезной пропускной способности: Вектор-строка из длины N, где N является количеством UEs. Значения представляют новые байты MAC передачи, переданные UEs в этом пазе.
Буферное Состояние UEs: Вектор-строка из длины N, где N является количеством UEs. Значения представляют сумму незаконченных буферов в UEs.
Планирование журналов присвоения: информация всех присвоений планирования и сопутствующей информации зарегистрирована этот файл. Таблица показывает демонстрационные записи в журнале.
Журналы RLC: Каждая строка в журналах RLC представляет паз и содержит эту информацию:
Система координат: Структурируйте номер.
Паз: Номер слота в системе координат.
Статистика UE RLC: ячейка N-by-P, где N является продуктом количества UEs и количества логических каналов и P, является количеством собранных статистических данных. Каждая строка представляет статистику логического канала в UE. Последняя строка содержит совокупную статистику RLC целой симуляции.
статистика gNB RLC: ячейка N-by-P, где N является продуктом количества UEs и количества логических каналов и P, является количеством собранных статистических данных. Каждая строка представляет статистику логического канала UE в gNB. Последняя строка содержит совокупную статистику RLC целой симуляции.
Каждая строка UE и таблицы gNB RLC статистики представляет логический канал UE и содержит:
RNTI: Радиосеть временный идентификатор UE.
LCID: Логический идентификатор канала.
TxDataPDU: Количество данных PDUs, отправленный RLC в слой MAC.
TxDataBytes: Количество байтов данных, отправленных RLC в слой MAC.
ReTxDataPDU: Количество данных PDUs, ретранслируемый RLC к слою MAC.
ReTxDataBytes: Количество байтов данных, ретранслируемых RLC к слою MAC.
TxControlPDU: Количество управления PDUs, отправленный RLC в слой MAC.
TxControlBytes: Количество служебных байтов, отправленных RLC в слой MAC.
TxPacketsDropped: Количество RLC SDUs зашло RLC из-за переполнения буфера Tx.
TxBytesDropped: Количество байтов зашло RLC из-за переполнения буфера Tx.
TimerPollRetransmitTimedOut: Число раз опрос ретранслирует таймер, истекло.
RxDataPDU: Количество данных PDUs получено RLC от слоя MAC.
RxDataBytes: Количество байтов данных получено RLC от слоя MAC.
RxDataPDUDropped: Количество полученных данных PDUs от MAC, которые пропущены слоем RLC.
RxDataBytesDropped: Количество полученных байтов данных от MAC, которые пропущены слоем RLC.
RxDataPDUDuplicate: Количество дублирующегося PDUs получено RLC от слоя MAC.
RxDataBytesDuplicate: Количество дублирующихся байтов данных получено RLC от слоя MAC.
RxControlPDU: Количество управления PDUs получено RLC от слоя MAC.
RxControlBytes: Количество служебных байтов получено RLC от слоя MAC.
TimerReassemblyTimedOut: Число раз таймер повторной сборки истекло.
TimerStatusProhibitTimedOut: Число раз состояние запрещает таймер, истекло.
Можно запустить скрипт 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
Пример использует эти функции помощника и классы:
hNRNode.m: базовый класс узла NR и для gNB и для UE
hNRGNB.m: функциональность узла gNB
hNRUE.m: функциональность узла UE
hNRRLCEntity.m: Базовый класс для RLC UM и сущностей AM
hNRUMEntity.m: функциональность RLC UM
hNRRLCDataPDUInfo.m: Создает информационный объект PDU RLC
hNRRLCDataReassembly.m: Создайте информационный объект повторной сборки SDU RLC
hNRRLCBufferStatus.m: Генерирует буферный объект информации о статусе RLC
hNRMAC.m: функциональность базового класса MAC NR
hNRGNBMAC.m: функциональность gNB MAC
hNRUEMAC.m: функциональность УИ МАКА
hNRScheduler.m: Базовая функциональность планировщика MAC
hNRSchedulerBestCQI.m: Реализации лучший CQI планирование стратегии
hNRSchedulerProportionalFair.m: Реализует пропорциональную справедливую стратегию планирования
hNRSchedulerRoundRobin.m: циклический алгоритм Реализаций планирование стратегии
hNRMACBSR.m: Генерирует буферный отчет о состоянии
hNRMACBSRParser.m: Синтаксические анализы буферизуют отчет о состоянии
hNRMACSubPDU.m: Генерирует MAC subPDU
hNRMACPaddingSubPDU.m: Генерирует MAC subPDU с дополнением
hNRMACMultiplex.m: Генерирует PDU MAC
hNRMACPDUParser.m: PDU MAC Синтаксических анализов
hNewHARQProcesses.m: Создает новый процесс HARQ
hUpdateHARQProcess.m: Обновления процесс HARQ
hNRPhyInterface.m: слой PHY соединяет интерфейсом с классом
hNRGNBPassthroughPhy.m: слой PHY передачи gNB
hNRUEPassthroughPhy.m: слой PHY передачи UE
hNRPUSCHInfo.m: информационная структура PUSCH, переданная MAC слою PHY
hNRRxIndicationInfo.m: Информационная структура, переданная слоем PHY MAC наряду с PDU MAC
hNRPacketDistribution.m: Создает пакетный объект распределения
hNRUplinkGrantFormat.m: формат присвоения UL
hNRRLCLogger.m: Реализации логгирование статистики RLC и функциональность визуализации
hNRSchedulingLogger.m: Реализации планируя информационную функциональность логгирования и визуализации
hNRULSchedulingValidateConfig.m: Подтверждает настройку симуляции
hNRSetUpPacketDistribution.m: Настройте пакетную функциональность распределения
hNRPacketWriter.m: пакеты MAC Получений
hNRPacketInfo.m: формат Метаданных для получения пакетов MAC
NRPostSimVisualization.m: Отправьте скрипт визуализации симуляции
[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.