В этом примере моделируется схема планирования на основе символов в режиме дуплексирования с разделением по времени (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 работает в режиме UM.
Часть с одной полосой пропускания, охватывающая всю полосу пропускания несущей.
Предполагается, что следующие управляющие пакеты передаются вне полосы, т.е. без необходимости в ресурсах для передачи и гарантированного безошибочного приема: назначение 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
NumberOfGuardSymbols = TotalExingInPattern - Указан тип TotalExingWityType
= (14 * NumSlotsDLULPeriodicity) - (numDLSlots*14 + numDLSyms + numULSyms + numULSlots*14)
= 2 символа

Планировщики UL и DL распределяют ресурсы UL и DL соответственно между UE. Вы можете выбрать любую из реализованных стратегий планирования: пропорциональная ярмарка (PF), лучшая CQI или круговая (RR). Различные поддерживаемые входные данные для планировщиков показаны вместе со стратегиями планирования, которые их рассматривают.
Планировщики UL и DL работают в начале слота, когда первый символ является символом DL. Планировщики работают во время DL, так что назначения (UL и DL) могут быть мгновенно отправлены в UE в направлении DL. Предполагается, что время выполнения алгоритма планировщика, а также задержка распространения равны нулю. Выходные данные операций планирования представляют собой массив назначений. Каждое назначение содержит информационные поля для полного определения передачи PUSCH или PDSCH.
Планировщик UL
Операция планирования UL выполняется в соответствии с этими двумя шагами.
Выбор слотов для планирования: критерии, используемые в этом примере, выбирают все предстоящие слоты (включая текущий), содержащие незапланированные символы UL, которые должны быть запланированы сейчас. Такие временные интервалы должны быть запланированы сейчас, так как они не могут быть запланированы в следующем временном интервале с символами DL, в зависимости от значения способности UE времени подготовки PUSCH. Это гарантирует, что ресурсы 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.
(ii) Предполагая, что UE требуют времени подготовки PUSCH, эквивалентного 16 символам, Slot-C запланирован в Slot-A. Поскольку планирование в слоте B обеспечит только 14 символов времени подготовки PUSCH для начала передачи в слоте C. Слот-D запланирован в слоте-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. Вспомогательные классы hNRGNB.m и hNRUE.m создают узел gNB и UE соответственно, содержащий уровень RLC и MAC. Для уровня MAC hNRGNB.m использует вспомогательный класс hNRGNBMAC.m для реализации функциональных возможностей MAC gNB, а hNRUE.m использует hNRUEMAC.m для реализации функциональных возможностей MAC UE. Планировщики реализованы в hNRschedulerRoundRobin.m (RR), hNRschedulerFair.m (PF), hNRSchedulerBestCQI.m (Best CQI). Все планировщики наследуют от базового класса hNRScheduler.m, который содержит основные функции планирования. Для уровня RLC как hNRGNB.m, так и hNRUE.m используют hNRUMentity.m для реализации функциональных возможностей передатчика и приемника RLC. Уровень Passthrough PHY для UE и gNB реализован в hNRUEPassThrougHy.m и hNRGNBPassThrougHy.m соответственно.
simParameters.Position = simParameters.GNBPosition; gNB = hNRGNB(simParameters); % Create 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
Ведение журнала и визуализация на уровне
Выполните опережение таймера для узлов. Каждые 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: Рисунок «Показатели производительности планировщика восходящей линии связи» включает графики: Пропускная способность UL (на UE и соту), гудпут UL (на UE и соту), процент распределения ресурсов между UE (из общих ресурсов UL), чтобы передать справедливость планирования, и состояние буфера UL в ожидании UE, чтобы показать, получают ли UE достаточные ресурсы. Максимально достижимое значение скорости передачи данных для пропускной способности UL - metricsStepSize слоты. показано пунктирной линией на графиках пропускной способности и гудпута. Графики показателей производительности обновляются каждый для каждого metricsStepSize слоты.
Отображение графиков метрик планирования DL: Как и графики метрик восходящей линии связи, «Downlink Scheduler Performance Metrics» отображает соответствующие подграфики для направления DL. Графики показателей производительности обновляются для каждого metricsStepSize места
Отображение графика метрик RLC: Рисунок «Визуализация метрик RLC» показывает количество байтов, переданных уровнем RLC (на логический канал) для каждого UE. Обновление графика метрик RLC для каждого metricsStepSize слоты.

Параметры, используемые для моделирования, и журналы моделирования сохраняются в MAT-файлах для анализа и визуализации после моделирования. Параметры моделирования сохраняются в MAT-файле с именем файла в качестве значения параметра конфигурации. simParameters.ParametersLogFile. Журналы каждого шага времени, журналы назначения планирования и журналы RLC сохраняются в MAT-файле. simParameters.SimulationLogFile. После моделирования откройте его для загрузки TimeStepLogs, SchedulingAssignmentLogs, и RLCLogs в рабочей области.
Журналы временных шагов: В таблице показан пример записи временных шагов. Каждая строка таблицы представляет символ или интервал на основе выбранного типа планирования (на основе символа или интервала). Информация в строке предназначена для DL, если типом символа (или слота) является DL. Аналогично, для UL символ (или слот).

Каждая строка содержит следующую информацию:
Метка времени: метка времени (в миллисекундах)
Кадр: Номер кадра.
Слот: номер слота в рамке.
SymbolНомер символа в слоте (только для планирования на основе символов).
Type: Тип символа (или слота): «DL», «UL» или «Guard». Для планирования на основе слотов типом может быть только DL/UL. В качестве слота, содержащего защитные символы, предполагается слот DL с защитными символами на конце слота.
Битовая карта распределения RBG: битовая матрица 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] означает, что полоса пропускания имеет 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-by-P, где N - количество UE, а P - количество процессов HARQ. Элемент матрицы в позиции (i, j) является последним принятым флагом NDI в UE i для DL или UL HARQ ID процесса j. Для новых передач это значение и флаг NDI в назначении PUSCH или PDSCH должны переключаться для процесса HARQ в назначении.
Байты пропускной способности: вектор строки длиной N, где N - количество UE. Значения представляют байты UL или DL MAC, переданные или для UE в этом символе. Следует отметить, что суммарная пропускная способность байтов для полной передачи PUSCH или PDSCH показана в строке, соответствующей первому символу передачи.
Goodput Bytes: вектор строки длиной N, где N - количество UE. Значения представляют новые байты MAC передачи UL или DL, переданные UE в этом символе или для UE. Подобно пропускной способности, все байты гудпота для полного PUSCH или PDSCH показаны в строке, соответствующей первому символу передачи.
Состояние буфера UE: вектор строки длиной N, где N - количество UE. Значения представляют количество буферов ожидания направления UL в UE (или буферов ожидания направления DL для UE в gNB).
Журналы назначений планирования: информация обо всех назначениях планирования и связанная информация регистрируется в этой таблице. Каждая строка представляет собой одно назначение UL или DL. Для получения подробной информации о формате журнала см. раздел «Журналы моделирования» в примере оценки производительности планирования NR FDD.
Журналы RLC: Дополнительные сведения о формате журнала RLC см. в разделе Планирование FDD NR PUSCH.
Чтобы получить визуализацию журналов после моделирования, можно запустить сценарий NRPostSimVisualization. В сценарии постмульсионного моделирования предоставляется переменная isLogReplay, которая предоставляет эти опции для визуализации фигур «Распределение сетки ресурсов» и «Визуализация качества канала».
Набор isLogReplay кому true для воспроизведения журналов моделирования.
Набор isLogReplay кому false для анализа деталей конкретного кадра или конкретного слота кадра. В окне «Resource Grid Allocation» введите номер кадра и номер слота для визуализации назначения ресурсов конкретного слота, если тип планирования основан на символах. Для планирования на основе слотов введите номер кадра для визуализации назначения ресурсов для всего кадра. Введенный здесь номер кадра также управляет номером кадра для фигуры «Визуализация качества канала».
% 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 и UE» документа Оценка производительности ячеек NR с интеграцией физического уровня.
Можно также переключить режим работы объекта RLC из режима единой системы обмена сообщениями в режим подтверждения (AM) путем изменения полей структуры ввода. EntityType и SeqNumFieldLength в configureLogicalChannel функция hNRNode.m. Для получения дополнительной информации см. раздел «Дальнейшие исследования» в документе Оценка эффективности планирования NR FDD.
На основе выбранной стратегии планирования этот пример демонстрирует назначение ресурсов UL и DL множеству UE посредством gNB. Производительность планирования UL и DL анализируется на основе графиков времени выполнения пропускной способности, goodput, справедливости распределения ресурсов и состояния ожидающего буфера UE. Более тщательный анализ после моделирования с использованием сохраненных журналов позволяет получить детальную картину операций, выполняемых на основе символа или слота.
В примере используются следующие вспомогательные функции и классы:
HStartNode.m: базовый класс беспроводного узла
hNRNode.m: базовый класс узла NR
hNRGNB.m: функциональность узла gNB
hNRUE.m: функциональные возможности узла UE
helperApplication.m: Функциональные возможности прикладного уровня
hNRRLEntity.m: Базовый класс для объектов RLC UM и AM
hNRUMEntity.m: Функциональные возможности RLC UM
hNRAMEntity.m: функциональные возможности RLC AM
hNRRLCDataPDUInfo.m: Создание информационного объекта PDU RLC
hNRRLCBufferStatus.m: Создает объект информации о состоянии буфера RLC
hNRRLCDataRecembly.m: Создание информационного объекта RLC SDU для повторной сборки
hNRMAC.m: функциональность базового класса NR MAC
hNRGNBMAC.m: функциональность MAC gNB
hNRUEMAC.m: Функциональность MAC UE
hNRscheduler.m: Основные функции планировщика MAC
hNRschedulerBestCQI.m: Реализует лучшую стратегию планирования CQI
hNRschedulerHair.m: Реализует стратегию пропорционального справедливого планирования
hNRRschedulerRoundRobin.m: Реализует стратегию циклического планирования
hNRMACBSR.m: Создание отчета о состоянии буфера
hNRMACBSRParser.m: Анализ отчета о состоянии буфера
hNRMACSubPDU.m: Создание подPDU MAC
hNRMACPaddingSubPDU.m: Создание подPDU MAC с дополнением
hNRMACMultiplex.m: генерирует PDU MAC
hNRMACPDUParser.m: Синтаксический анализ MAC PDU
hNewHARQPprocesses.m: Создание нового процесса HARQ
hStartHARQProcess.m: Обновление процесса HARQ
hNRPhyInterface.m: класс интерфейса уровня PHY
hNRGNBPassthroughPhy.m: gNB сквозной слой PHY
hNRUEPassthroughPhy.m: UE через слой PHY
hNRGNBPhy.m: Функциональность PHY gNB
hNRUEPhy.m: Функциональность PHY UE
hNRPUSCHInfo.m: Информационная структура PUSCH, передаваемая MAC на уровень PHY
hNRPDSCHInfo.m: информационная структура PDSCH передается MAC на уровень PHY
hNRRxInfo.m: Информационная структура, передаваемая PHY-уровнем MAC вместе с MAC PDU
hNRUplinkGrantFormat.m: формат назначения UL
HNRDownlinkGrantFormat.m: формат назначения DL
hNRPacketDistribution.m: Создание объекта распространения пакетов
hNRPhyRxBuffer.m: Создает объект буфера приема PHY-сигнала
hSkipWeakTimingOffset.m: Пропускать оценки смещения времени со слабой корреляцией
hNRRLCLogger.m: Реализует функции регистрации и визуализации статистики RLC
hNRRschedulingLogger.m: Реализует функции регистрации и визуализации информации планирования
hNRPhyLogger.m: Реализует функции регистрации и визуализации частоты ошибок блоков восходящего и нисходящего каналов
hNRRschedulingTDDValidateConfig.m: Проверка конфигурации моделирования
hNRSetUpPacketDistribution.m: Настройка функциональности распределения пакетов
hNRPacketWriter.m: Захватывает пакеты MAC
hNRPacketInfo.m: формат метаданных для захвата MAC-пакетов
hNRMetricalVisualizer.m: Реализует функции визуализации метрик
NRPostSimVisualization.m: Сценарий визуализации после моделирования
[1] 3GPP TS 38.214. "НР; Процедуры физического уровня для данных. "Проект партнерства третьего поколения; Техническая спецификация на сеть радиодоступа группы.
[2] 3GPP TS 38.321. "НР; Спецификация протокола управления доступом к среде (MAC). "Проект партнерства 3-го поколения; Техническая спецификация на сеть радиодоступа группы.
[3] 3GPP TS 38.322. "НР; Спецификация протокола управления радиоканалом (RLC). "Проект партнерства 3-го поколения; Техническая спецификация на сеть радиодоступа группы.
[4] 3GPP TS 38.331. "НР; Спецификация протокола управления радиоресурсами (RRC). "Проект партнерства 3-го поколения; Техническая спецификация на сеть радиодоступа группы.