Этот пример моделирует основанную на символах схему планирования в режиме дуплекса с делением каналов (TDD) и оценивает эффективность сети. Основанное на символах планирование ресурсов допускает более короткие сроки передачи, охватывающие несколько символов в пазе. В режиме TDD передачи физического общего канала восходящей линии связи (PUSCH) и физического общего канала нисходящей линии связи (PDSCH) планируются в одной полосе частот с разделением во временном интервале. Можно настроить стратегию планирования и оценить эффективность сети. Эффективность стратегии планирования оценивается с точки зрения достигнутой пропускной способности и справедливости в совместном использовании ресурсов.
Пример рассматривает следующие операции в пределах gNB и UE, которые облегчают передачи и приемы UL и DL.
Полный пакет PUSCH или PDSCH передается в первом символе выделенного набора символов. Приемник обрабатывает пакет в символе сразу после последнего символа в выделенном наборе символов.
Этот пример моделирует:
Конфигурируемый шаблон TDD DL-UL.
Основанное на слоте и основанное на символах планирование DL и UL. Планировщик UL обеспечивает, чтобы UE получили необходимое время подготовки PUSCH.
Несмежное распределение частотного диапазона ресурсов в терминах групп ресурсных блоков (RBG).
Конфигурируемый интервал между поднесущими, приводящий к различным длительности паза.
Конфигурируемые свойства опорного сигнала демодуляции (DM-RS).
Механизм асинхронного гибридного автоматического запроса повторения (HARQ).
Периодический шаблон трафика приложений DL и UL.
RLC, работающий в режиме единой системы обмена сообщениями.
Часть с одной пропускной способностью, охватывающая всю пропускную способность поставщика услуг.
Следующие управляющие пакеты приняты за пределы полосы, т.е. без необходимости в ресурсах для передачи и гарантированного приема без ошибок: назначение UL, назначение DL, отчет о состоянии буфера (BSR), обратная связь PDSCH и отчет CQI. Эти управляющие пакеты следуют таймингам TDD DL и UL. Например, обратная связь BSR и PDSCH отправляется по UL-времени, в то время как назначения ресурсов отправляются по DL-времени.
NR обеспечивает гибкий способ настройки ресурсов DL и UL. Для определения пользовательского строения TDD используются следующие параметры:
Периодичность передачи DL-UL в мс.
Ссылка на интервал между поднесущими для вычисления количества пазов в шаблоне DL-UL. В этом примере принято, что оно совпадает с фактическим интервалом между поднесущими, используемым для передачи.
Количество последовательных полных пазов DL в начале каждого шаблона DL-UL.
Количество последовательных символов DL в начале паза после последнего полного паза DL.
Количество последовательных полных пазов UL в конце каждого шаблона DL-UL.
Количество последовательных символов UL в конце паза, предшествующего первому полному пазу UL.
Пример не моделирует гибкие символы, поэтому символы с неопределенным типом символа приняты для периода защиты. Вот пример результирующего шаблона TDD DL-UL, основанного на этих параметрах. Этот шаблон DL-UL повторяется на временной шкале.
reference_scs
= 15 кГц (т.е. паз 1 мс), DLULPeriodicity
= 5 мс, numDLSlots
= 3, numDLSyms
= 7, numULSlots
= 1, numULSyms
= 5
Количество пазов в периодичности DL-UL относительно опорной SCS 15 кГц, NumSlotsDLULPeriodicity
= 5
Number Of Guard Symbols = Total Symbols In Pattern - Total Symbols With Type Specified
= (14 * NumSlotsDLULPeriodicity
) - (numDLSlots
*14 + numDLSyms
+ numULSyms
+ numULSlots
*14)
= 2 символа
Планировщики UL и DL распределяют ресурсы UL и DL соответственно между UE. Вы можете выбрать любую из реализованных стратегий планирования: пропорциональную справедливость (PF), лучший CQI или round robin (RR). Различные поддерживаемые входы для планировщиков показаны вместе со стратегиями планирования, которые их рассматривают.
И планировщики UL, и DL запускаются в начале паза, когда первый символ является символом DL. Планировщики выполняются во времени DL, так что назначения (UL и DL) могут быть мгновенно отправлены в UE в направлении DL. Время запуска алгоритма планировщика, а также задержка распространения приняты равными нулю. Выходы операций планирования являются массивом назначений. Каждое назначение содержит информационные поля для полного определения передачи PUSCH или PDSCH.
Планировщик UL
Операция планирования UL следует этим двум шагам.
Выберите пазы для планирования: Критерии, используемые в этом примере, выбирают все предстоящие пазы (включая текущий), содержащие незапланированные символы UL, которые должны быть запланированы сейчас. Такие пазы должны быть запланированы сейчас, так как они не могут быть запланированы в следующем пазе с символами DL, в зависимости от значения возможности подготовки PUSCH UE. Это гарантирует, что ресурсы UL запланированы как можно ближе к фактическому времени передачи.
Ниже приведены 2 примера для объяснения выбора пазов UL в этом примере для планирования на основе времени подготовки PUSCH.
(i) Принимая, что UE требуется время подготовки PUSCH, эквивалентное 10 символам, когда планировщик UL запускается в слоте-A, он не выбирает какой-либо паз для планирования. Поскольку планирование в следующем пазе (т.е. слоте-B) обеспечивает достаточное время подготовки PUSCH (14 символов) для передачи UL в слоте-C. Позже, когда планировщик UL запускается в слоте-B, он выбирает и слот-C, и слот-D для планирования. Слот-D запланирован в самом слоте-B (а не в слоте-C), поскольку слот-C является полным пазом UL и, следовательно, не имеет никаких символов DL для отправки назначений в направлении DL.
Принимая, что UE требуется время подготовки PUSCH, эквивалентное 16 символам, слот-C запланирован в самом слоте-A. Поскольку планирование в слоте-B обеспечит только 14 символов времени подготовки PUSCH, чтобы начать передачу в слоте-C Slot-D запланирован в Slot-B.
2. Планирование ресурсов: Если на первом этапе выбраны какие-либо пазы, присвойте UL-ресурсы этих пазов UE.
Планировщик DL
Планировщик DL запускается в каждом пазе, начиная с символа DL, и присваивает ресурсы первого предстоящего паза, содержащего символы DL. Таким образом, когда планировщик DL запускается в начале слота-A, он планирует ресурсы DL слота-B.
NR позволяет TTI запускаться в любом положении символа в пазе и с детализацией TTI в символах. Рисунок показывает, как планировщик UL работает в этом примере, чтобы планировать символы UL паза с детализацией TTI двух символов. Показанный паз содержит шесть символов UL. Планировщик завершает итерацию символов UL в трех итерациях с каждой итерацией, распределяющей частотные ресурсы двух символов. Планировщик DL также следует аналогичному подходу для планирования DL.
Установите параметры для симуляции.
rng('default'); % Reset the random number generator simParameters = []; % Clear simParameters variable simParameters.NumFramesSim = 100; % Simulation time in terms of number of 10 ms frames % Number of UEs in the simulation. UEs are assumed to have sequential radio % network temporary identifiers (RNTIs) from 1 to NumUEs. If you change the % number of UEs, ensure that the following simulation parameters are array % of length equal to NumUEs: simParameters.UEDistance, % simParameters.ULPacketPeriodicityUEs, simParameters.ULPacketSizesUEs, % simParameters.DLPacketPeriodicityUEs, simParameters.DLPacketSizesUEs simParameters.NumUEs = 4; simParameters.UEDistance = [100; 150; 300; 400]; % Distance of UEs from gNB (in meters) % Set the value of scheduling type to 0 (slot-based scheduling) or 1 % (symbol-based scheduling). If value is not set, the default value is 0 simParameters.SchedulingType = 1; % Set the time-domain assignment in terms of symbol duration. If number of % symbols (DL or UL) are not enough for this granularity then a smaller % valid granularity is chosen. Applicable only for symbol-based scheduling. % For slot-based scheduling, biggest possible granularity in a slot is % chosen simParameters.TTIGranularity = 4; % Define the TDD DL-UL pattern. The reference subcarrier spacing used for % calculating slot duration for the pattern is assumed to be same as actual % subcarrier spacing used for transmission as defined by simParameters.SCS. % Keep only the symbols intended for guard period during DLULPeriodicity % with type (DL or UL) unspecified simParameters.DLULPeriodicity = 5; % Duration of the DL-UL pattern in ms simParameters.NumDLSlots = 2; % Number of consecutive full DL slots at the beginning of each DL-UL pattern simParameters.NumDLSyms = 8; % Number of consecutive DL symbols in the beginning of the slot following the last full DL slot simParameters.NumULSyms = 4; % Number of consecutive UL symbols in the end of the slot preceding the first full UL slot simParameters.NumULSlots = 2; % Number of consecutive full UL slots at the end of each DL-UL pattern % 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 8 as the % distance falls within the [501, 1000] meters range, as per the mapping. % Set the distance in increasing order and the maximum achievable CQI value % in decreasing order simParameters.CQIvsDistance = [ 200 15; 300 12; 500 10; 1000 8; 1200 7]; % Set the periodic UL and DL application traffic pattern for UEs simParameters.ULPacketPeriodicityUEs = [20; 30; 20; 30]; % Periodicity (in ms) at which the UL packets are generated by UEs simParameters.ULPacketSizesUEs = [4000; 6000; 5500; 4000]; % Size of the UL packets (in bytes) generated by UEs simParameters.DLPacketPeriodicityUEs = [20; 15; 15; 20]; % Periodicity (in ms) at which the DL packets are generated for UEs at gNB simParameters.DLPacketSizesUEs = [6000; 5000; 10000; 8000]; % Size of the DL packets generated (in bytes) for UEs at gNB % Medium access control (MAC) configuration simParameters.SchedulerStrategy = 'PF'; % Supported scheduling strategies: 'PF', 'RR' and 'BestCQI' % PUSCH preparation time. gNB ensures that PUSCH assignment is received at % UEs PUSCHPrepTime ahead of the transmission time simParameters.PUSCHPrepTime = 200; % In microseconds % Maximum RBs allotted to a UE for PUSCH and PDSCH transmissions (limit is % applicable for new transmission assignments and not for the retransmissions) simParameters.RBAllocationLimitUL = 15; % For PUSCH simParameters.RBAllocationLimitDL = 15; % For PDSCH simParameters.BSRPeriodicity = 1; % Buffer status report transmission periodicity (in ms) simParameters.DMRSTypeAPosition = 2; % PUSCH DM-RS configuration simParameters.PUSCHDMRSAdditionalPosTypeB = 0; simParameters.PUSCHDMRSAdditionalPosTypeA = 0; simParameters.PUSCHDMRSConfigurationType = 1; % PDSCH DM-RS configuration simParameters.PDSCHDMRSAdditionalPosTypeB = 0; simParameters.PDSCHDMRSAdditionalPosTypeA = 0; simParameters.PDSCHDMRSConfigurationType = 1; % PHY layer and channel configuration % RB count for 5 MHz band with 15 kHz subcarrier spacing (SCS). The complete % bandwidth is assumed to be allotted for PUSCH or PDSCH simParameters.NumRBs = 25; simParameters.SCS = 15; % kHz simParameters.DLBandwidth = 5e6; % Hz simParameters.ULBandwidth = 5e6; % Hz simParameters.DLCarrierFreq = 2.595e9; % Hz simParameters.ULCarrierFreq = 2.595e9; % Hz % Configure parameters to update channel conditions for the UEs. Channel % quality is periodically improved or deteriorated by CQIDelta every % channelUpdatePeriodicity seconds for all RBs of a UE. Whether channel % conditions for a particular UE improve or deteriorate is randomly % determined: RB_CQI = RB_CQI +/- CQIDelta simParameters.ChannelUpdatePeriodicity = 0.2; % In sec simParameters.CQIDelta = 1; % Logging and visualization configuration % Flag to enable or disable runtime CQI visualization simParameters.CQIVisualization = true; % Flag to enable or disable run time visualization of RB assignment. If enabled, % then for slot-based scheduling it updates every frame (10 ms) to show RB % allocation to the UEs for different slots of the last frame. For % symbol-based scheduling, it updates every slot to show RB allocation to % the UEs over different symbols of the last slot simParameters.RBVisualization = false; % The output metrics plots are updated periodically NumMetricsSteps times within the % simulation duration simParameters.NumMetricsSteps = 20; % MAT-files to write the logs into. They are used for post simulation analysis and visualization simParameters.ParametersLogFile = 'simParameters'; % For logging the simulation parameters simParameters.SimulationLogFile = 'simulationLogs'; % For logging the simulation logs hNRSchedulingTDDValidateConfig(simParameters); % Validate the simulation configuration
На основе первичных параметров конфигурации вычислите выведенные параметры. Кроме того, установите некоторые конкретные константы примера.
simParameters.DuplexMode = 1; % TDD (example specific constant) if simParameters.SchedulingType % Symbol-based scheduling simParameters.PUSCHMappingType = 'B'; simParameters.PDSCHMappingType = 'B'; else % Slot-based scheduling simParameters.PUSCHMappingType = 'A'; simParameters.PDSCHMappingType = 'A'; end simParameters.NCellID = 1; % Physical cell ID simParameters.GNBPosition = [0 0 0]; % Position of gNB in (x,y,z) coordinates numLogicalChannels = 1; % Only 1 logical channel is assumed in each UE (Example specific constant) slotDuration = 1/(simParameters.SCS/15); % Slot duration in ms numSlotsFrame = 10/slotDuration; % Number of slots in 10 ms frame numSlotsSim = simParameters.NumFramesSim * numSlotsFrame; % Simulation time in units of slot duration numSymbolsSim = numSlotsSim * 14; % Simulation time in units of symbol duration % Interval at which metrics visualization updates in terms of number of % slots. Make sure that MetricsStepSize is an integer simParameters.MetricsStepSize = ceil(numSlotsSim / simParameters.NumMetricsSteps); if mod(numSlotsSim, simParameters.NumMetricsSteps) ~= 0 % Update the NumMetricsSteps parameter if numSlotsSim is not % completely divisible by it simParameters.NumMetricsSteps = floor(numSlotsSim / simParameters.MetricsStepSize); end % Logical channel id (logical channel ID of data radio bearers starts from 4) simParameters.LCHConfig.LCID = 4; % RLC entity direction. Value 0 represents DL only, 1 % represents UL only and 2 represents both UL and DL % directions. Setting entity direction to have both UL and DL simParameters.RLCConfig.EntityDir = 2; % Construct information for RLC logger lchInfo = repmat(struct('RNTI',[],'LCID',[],'EntityDir',[]), [simParameters.NumUEs 1]); for idx = 1:simParameters.NumUEs lchInfo(idx).RNTI = idx; lchInfo(idx).LCID = simParameters.LCHConfig.LCID; lchInfo(idx).EntityDir = simParameters.RLCConfig.EntityDir; end % Create RLC channel configuration structure rlcChannelConfigStruct.LCGID = 1; % Mapping between logical channel and logical channel group ID rlcChannelConfigStruct.Priority = 1; % Priority of each logical channel rlcChannelConfigStruct.PBR = 8; % Prioritized bitrate (PBR), in kilobytes per second, of each logical channel rlcChannelConfigStruct.BSD = 10; % Bucket size duration (BSD), in ms, of each logical channel rlcChannelConfigStruct.EntityType = simParameters.RLCConfig.EntityDir; rlcChannelConfigStruct.LogicalChannelID = simParameters.LCHConfig.LCID; % Maximum RLC SDU length (in bytes) as per 3GPP TS 38.323 simParameters.maxRLCSDULength = 9000; % Calculate maximum achievable CQI value for the UEs based on their distance % from the gNB maxUECQIs = zeros(simParameters.NumUEs, 1); % To store the maximum achievable CQI value for UEs for ueIdx = 1:simParameters.NumUEs % Based on the distance of the UE from gNB, find matching row in CQIvsDistance mapping matchingRowIdx = find(simParameters.CQIvsDistance(:, 1) > simParameters.UEDistance(ueIdx)); if isempty(matchingRowIdx) maxUECQIs(ueIdx) = simParameters.CQIvsDistance(end, 2); else maxUECQIs(ueIdx) = simParameters.CQIvsDistance(matchingRowIdx(1), 2); end end % Define initial UL and DL channel quality as an N-by-P matrix, % where 'N' is the number of UEs and 'P' is the number of RBs in the carrier % bandwidth. The initial value of CQI for each RB, for each UE, is given % randomly and is limited by the maximum achievable CQI value corresponding % to the distance of the UE from gNB simParameters.InitialChannelQualityUL = zeros(simParameters.NumUEs, simParameters.NumRBs); % To store current UL CQI values on the RBs for different UEs simParameters.InitialChannelQualityDL = zeros(simParameters.NumUEs, simParameters.NumRBs); % To store current DL 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); % Initially, DL and UL CQI values are assumed to be equal simParameters.InitialChannelQualityDL(ueIdx, :) = simParameters.InitialChannelQualityUL(ueIdx, :); end % Update periodicity of RB assignment visualization in terms of number of slots if ~isfield(simParameters, 'SchedulingType') || simParameters.SchedulingType == 0 % If no scheduling type is specified or slot-based scheduling is specified rbAssignmentPlotPeriodicity = numSlotsFrame; % Update every frame (10 ms) else % Symbol-based scheduling rbAssignmentPlotPeriodicity = 1; % Update every slot end
Создайте объекты gNB и UE, инициализируйте информацию о качестве канала для UE и настройте логический канал в 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 (RR), hNRSbestCQI.m (PF), 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 the 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); % Add 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); 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 % Initialize the DL CQI values at gNB and UE. The DL CQI values % help gNB in scheduling, and UE in packet error probability estimation updateChannelQuality(gNB, simParameters.InitialChannelQualityDL(ueIdx, :), 0, ueIdx); % 0 for DL updateChannelQuality(UEs{ueIdx}, simParameters.InitialChannelQualityDL(ueIdx, :)); % 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 gNB and UE nodes ulPacketSize = simParameters.ULPacketSizesUEs(ueIdx); % Calculate the data rate (in kbps) of On-Off traffic pattern using % packet size (in bytes) and packet interval (in ms) ulDataRate = ceil(1000/simParameters.ULPacketPeriodicityUEs(ueIdx)) * ulPacketSize * 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 ulPacketSize > simParameters.maxRLCSDULength ulPacketSize = 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 ulApp = networkTrafficOnOff('PacketSize', ulPacketSize, 'GeneratePacket', true, ... 'OnTime', simParameters.NumFramesSim/100, 'OffTime', 0, 'DataRate', ulDataRate); UEs{ueIdx}.addApplication(ueIdx, simParameters.LCHConfig.LCID, ulApp); dlPacketSize = simParameters.DLPacketSizesUEs(ueIdx); dlDataRate = ceil(1000/simParameters.DLPacketPeriodicityUEs(ueIdx)) * dlPacketSize * 8e-3; if dlPacketSize > simParameters.maxRLCSDULength dlPacketSize = simParameters.maxRLCSDULength; end % Create an object for On-Off network traffic pattern for the specified % UE and add it to the gNB. This object generates the downlink (DL) data % traffic on the gNB for the UE dlApp = networkTrafficOnOff('PacketSize', dlPacketSize, 'GeneratePacket', true, ... 'OnTime', simParameters.NumFramesSim/100, 'OffTime', 0, 'DataRate', dlDataRate); gNB.addApplication(ueIdx, simParameters.LCHConfig.LCID, dlApp); end % Setup the UL and DL packet distribution mechanism simParameters.MaxReceivers = simParameters.NumUEs; % Create DL packet distribution object dlPacketDistributionObj = hNRPacketDistribution(simParameters, 0); % 0 for DL % Create UL packet distribution object ulPacketDistributionObj = hNRPacketDistribution(simParameters, 1); % 1 for UL hNRSetUpPacketDistribution(simParameters, gNB, UEs, dlPacketDistributionObj, ulPacketDistributionObj);
Симуляция является запуском символом по символу для выполнения соответствующих операций. Если выбрано планирование на основе слотов, выполнение переходит от текущего паза контура к следующему пазу контура. Выполняемые операции:
Запуск слоев MAC и PHY gNB
Запуск слоев MAC и PHY UE
Layer specific logging и визуализация
Продвигайте таймер для узлов. Каждые 1 мс он также отправляет триггер в слои приложения и RLC. Прикладные слои и RLC слоя выполнять свои запланированные операции на основе триггера таймера 1 мс.
% Create an object for MAC (UL & DL) scheduling information visualization and logging simSchedulingLogger = hNRSchedulingLogger(simParameters); % Create an object for RLC layer metrics logging simRLCLogger = hNRRLCLogger(simParameters, lchInfo); % Create visualization object for RLC and MAC metrics visualizer = hNRMetricsVisualizer(simParameters, 'RLCLogger', simRLCLogger, 'LCHInfo', lchInfo, 'MACLogger', simSchedulingLogger); slotNum = 0; tickGranularity = 1; % Execute all the symbols in the simulation for symbolNum = 1 : tickGranularity : numSymbolsSim symbolType = currentSymbolType(gNB); % Get current symbol type: DL/UL/Guard if mod(symbolNum - 1, 14) == 0 slotNum = slotNum + 1; end % Run MAC and PHY layers 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 mod(symbolNum - 1, 14) == 0 % logCellRLCStats(simRLCLogger, gNB, UEs); end % MAC logging logCellSchedulingStats(simSchedulingLogger, symbolNum, gNB, UEs); % 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 % Plot scheduler metrics and RLC metrics visualization at slot % boundary, if the update periodicity is reached if mod(slotNum, simParameters.MetricsStepSize) == 0 plotMetrics(visualizer, slotNum); end end % Advance timer ticks for gNB and UEs by 'tickGranularity' symbols advanceTimer(gNB, tickGranularity); for ueIdx = 1:simParameters.NumUEs % For all UEs advanceTimer(UEs{ueIdx}, tickGranularity); end end
Показаны пять типов визуализации во время выполнения:
Отображение значений CQI для UE по полосе пропускания PUSCH или PDSCH: Для получения дополнительной информации смотрите рисунок «Визуализация качества канала».
Отображение назначения ресурсной сетки для UE: 2-D частотно-временная сетка показывает распределение ресурсов для UE. Для планирования на основе слотов он обновляется каждые 10 мс (система координат) и показывает распределение RB для UE в предыдущей системе координат. Для основанного на символах планирования он обновляет каждый паз и показывает распределение RB символов предыдущего паза. Для получения дополнительной информации см. рисунок «Распределение ресурсной сетки».
Отображение графиков метрик планирования UL: Рисунок 'Uplink Scheduler Performance Metrics' включает графики: Пропускная способность UL (для каждого UE и камеры), положительное положение UL (для каждого UE и камеры), процент доли ресурса среди UE (из общих ресурсов UL), чтобы передать справедливость планирования, и ожидаемое состояние буфера UL для UE, чтобы показать, получают ли UE достаточные ресурсы. Максимальное достижимое значение скорости передачи данных для пропускной способности UL metricsStepSize
пазы. показан с пунктирной линией на графиках пропускной способности и качества. Графики показателей эффективности обновляются каждый для каждого metricsStepSize
пазы.
Отображение графиков метрик планирования DL: Как и графики метрик восходящего канала, 'Nowlink Scheduler Performance Metrics' отображает соответствующие подграфики для направления DL. Метрики эффективности графиков обновляться для каждого metricsStepSize
пазы
Отображение графика метрики RLC: рисунок 'RLC Metrics Visualization' показывает количество байтов, переданных слоем RLC (на логический канал) для каждого UE. Метрики RLC графика обновляются для каждого metricsStepSize
пазы.
Параметры, используемые для симуляции и журналов симуляции, сохраняются в MAT-файлах для постсимуляционного анализа и визуализации. Параметры симуляции сохраняются в MAT-файле с именем файла как значением параметра конфигурации simParameters.ParametersLogFile
. Журналы для каждого временного шага, журналы назначения расписания и журналы RLC сохраняются в MAT-файле simParameters.SimulationLogFile
. После симуляции откройте его, чтобы загрузить TimeStepLogs
, SchedulingAssignmentLogs
, и RLCLogs
в рабочей области.
Журналы временных шагов: Таблица показывает запись шага расчета шага. Каждая строка таблицы представляет символ или паз, основанный на выбранном типе планирования (основанном на символе или слоте). Информация в строке для DL, если тип символа (или паза) DL
. Аналогично, для UL
символ (или паз).
Каждая строка содержит следующую информацию:
Временная метка: Timestamp (в миллисекундах)
Система координат: Номер система координат.
Паз: Номер паза в системе координат.
Symbol
: Номер символа в пазе (только для составления расписаний на основе символов).
Type
: Тип символа (или паза) как 'DL', 'UL' или 'Guard'. Для планирования на основе слотов тип может быть только DL/UL. Поскольку паз, содержащий защитные символы, принят в качестве паза DL с защитными символами в конце паза.
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] означает, что полоса пропускания имеет 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 или PDSCH. Например, [10 12 8 -1] означает, что только UE-1, UE-2 и UE-3 назначены ресурсы UL (тип символа является 'UL') для этого символа и используют значения MCS 10, 12 и 8, соответственно.
Процесс HARQ: Вектор-строка длины N, где N - количество UE. Значение является идентификатором процесса HARQ, используемым UE для передачи PUSCH или используемым gNB для передачи PDSCH. Например, [0 3 6 -1] означает, что только UE-1, UE-2 и UE-3 назначены ресурсы UL (тип символа является 'UL') для этого символа и используют идентификаторы процесса HARQ 0, 3 и 6, соответственно.
NDI: Вектор-строка длины N, где N - количество UE. Значение является значением флага NDI в назначении для передачи PUSCH или PDSCH. Для примера [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 или PDSCH. Например: ['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) соответствует значению CQI для UE с RNTI i в RB j.
HARQ NDI Status: N-на-P матрица, где N - количество UE, а P - количество процессов HARQ. Элемент матрицы в положении (i, j) является последним полученным флагом NDI в UE i для DL или UL HARQ процесса ID j. Для новых передач это значение и флаг NDI в назначении PUSCH или PDSCH должны переключаться для процесса HARQ в присвоении.
Пропускная способность Bytes: Вектор-строка длины N, где N - количество UE. Значения представляют UL или DL MAC байты, переданные или для UE в этом символе. Обратите внимание, что общая пропускная способность байтов для полной передачи PUSCH или PDSCH показана в строке, соответствующей первому символу передачи.
Goodput Bytes: Вектор-строка длины N, где N - количество UE. Значения представляют новые MAC-байты передачи UL или DL, переданные UE в этом символе. Как и пропускная способность, все байты приема для полного PUSCH или PDSCH показаны в строке, соответствующей первому символу передачи.
Состояние буфера UE: Вектор-строка длины N, где N - количество UE. Значения представляют количество UL направления ожидающих буферов в UE (или DL направления ожидающих буферов для UE в gNB).
Журналы назначения расписания: Информация обо всех назначениях расписания и связанной информации записывается в эту таблицу. Каждая строка является присвоением UL или DL. Для получения дополнительной информации о формате журнала смотрите раздел 'Simulation Logs' в примере оценки эффективности планирования NR FDD.
Журналы RLC: Для получения дополнительной информации о формате журнала RLC смотрите Планирование FDD PUSCH NR.
Можно запустить скрипт NRPostSimVisualization, чтобы получить визуализацию журналов после симуляции. В симуляцию post скрипта вы получаете переменную isLogReplay
, который предоставляет эти опции для визуализации рисунков «Распределение ресурсной сетки» и «Визуализация качества канала».
Задайте isLogReplay
на true
для воспроизведения журналов симуляции.
Задайте isLogReplay
на false
для анализа деталей конкретной системы координат или конкретного паза системы координат. В окне 'Resource Grid Allocation' введите номер системы координат и номер паза, чтобы визуализировать назначение ресурса конкретного паза, если тип планирования основан на символах. Для планирования на основе слотов введите номер системы координат, чтобы визуализировать назначение ресурса для всей системы координат. Номер кадра, введенный здесь, также управляет номером системы координат для фигуры 'Channel Quality Visualization'.
% Read the logs and write them to MAT-files % Get the logs simulationLogs = cell(1,1); logInfo = struct('TimeStepLogs',[], 'SchedulingAssignmentLogs',[] ,'RLCLogs',[]); [logInfo.TimeStepLogs] = getSchedulingLogs(simSchedulingLogger); logInfo.SchedulingAssignmentLogs = getGrantLogs(simSchedulingLogger); % Scheduling assignments log logInfo.RLCLogs = getRLCLogs(simRLCLogger); % RLC statistics logs simulationLogs{1} = logInfo; save(simParameters.SimulationLogFile, 'simulationLogs'); % Save simulation logs in a MAT-file save(simParameters.ParametersLogFile, 'simParameters'); % Save simulation parameters in a MAT-file
Можно использовать этот пример для дальнейшего изучения этих опций.
Можно изменить существующую стратегию планирования для реализации пользовательской стратегии. См. раздел «Дальнейшие исследования» в примере оценки эффективности при планировании NR FDD, чтобы увидеть соответствующие шаги.
Можно также переключиться с проходного слоя PHY на 5G обработки Toolbox™ физического слоя путем создания объектов PHY с помощью hNRGNBPhy.m и hNRUEPhy.m. Для получения дополнительной информации смотрите раздел «gNB и Setup UE» в разделе «Оценка эффективности камер NR с интегрированием на физическом слое».
Можно также переключить рабочий режим сущности RLC из единой системы обмена сообщениями в квитированный режим (AM) путем изменения полей входной структуры EntityType
и SeqNumFieldLength
в configureLogicalChannel
функция hNRNode.m. Для получения дополнительной информации смотрите раздел «Дальнейшие исследования» в NR FDD «Оценка эффективности планирования».
На основе выбранной стратегии планирования этот пример демонстрирует присвоение ресурсов UL и DL нескольким UE gNB. Эффективность планирования UL и DL анализируется на основе графиков производительности во время выполнения, качества, справедливости разделения ресурсов и состояния буфера UE в ожидании. Более тщательный анализ после симуляции при помощи сохранённых журналов дает подробное представление об операциях, происходящих на основе символа или паза.
В примере используются эти вспомогательные функции и классы:
hWirelessNode.m: Базовый класс беспроводного узла
hNRNode.m: класс основы узла NR
hNRGNB.m: функциональность узла gNB
hNRUE.m: функциональность узла UE
helperApplication.m: функциональность слоя
hNRRLCEntity.m: Базовый класс для сущностей RLC UM и AM
hNRUMEntity.m: функциональность RLC UM
hNRAMEntity.m: функциональность RLC AM
hNRRLCDataPDUInfo.m: Создает информационный объект PDU RLC
hNRRLCBufferStatus.m: Генерирует объект информации о состоянии буфера RLC
hNRRLCDataReassembly.m: создайте информационный объект повторной сборки RLC SDU
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 слою
hNRGNBPhy.m: функциональность gNB PHY
hNRUEPhy.m: Функциональность UE PHY
hNRPUSCHInfo.m: информационная структура PUSCH передана MAC на слой PHY
hNRPDSCHInfo.m: информационная структура PDSCH передана MAC на слой PHY
hNRRxIndicationInfo.m: Информационная структура передана слоем PHY на MAC вместе с MAC PDU
hNRUplinkGrantFormat.m: формат назначения UL
hNRDownlinkGrantFormat.m: формат назначения DL
hNRPacketDistribution.m: Создает объект распределения пакетов
hNRPhyRxBuffer.m: Создает объект приема сигнала PHY
hSkipWeakTimingOffset.m: Пропустить оценки смещения времени со слабой корреляцией
hNRRLCLogger.m: Реализует функции логгирования и визуализации статистики RLC
hNRSchedulingLogger.m: Реализует функции логгирования и визуализации информации о планировании
hNRPhyLogger.m: Реализует функции логгирования ошибок восходящего и нисходящего блоков и визуализации
hNRSchedulingTDDValidateConfig.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; Группа технических спецификаций Радиосеть доступ.
[4] 3GPP TS 38.331. "NR; Спецификация протокола управления радиоресурсами (RRC). "3rd Генерация Partnership Project; Группа технических спецификаций Радиосеть доступ.