В этом примере моделируется ячейка 5G New Radio (NR) с конфигурацией антенны с множеством входов и множеством выходов (MIMO) и оценивается производительность сети. Можно настроить стратегию планирования для использования возможностей MIMO нисходящей линии связи и анализа производительности. В этом примере выполняется измерение по опорным сигналам информации о состоянии многоканального канала (CSI-RS), которые gNB использует для принятия решений о планировании MIMO.
MIMO повышает производительность сети за счет повышения пропускной способности и надежности соты. Пример выполняет отображение уровня и предварительное кодирование для использования MIMO в направлении нисходящей линии связи (DL). Отчет CSI, посылаемый UE, служит в качестве входных данных для принятия решений планирования MIMO.
В примере рассматриваются эти операции в gNB и UE, которые облегчают передачу и прием DL.

Примеры моделей:
Однокодовое пространственное мультиплексирование DL для выполнения многослойной передачи. Однокодовое слово ограничивает число уровней передачи до 4.
Предварительное кодирование DL для отображения уровней передачи в антенные порты. В примере предполагается преобразование «один к одному» из антенных портов в физические антенны.
Измерение качества канала DL посредством UE на основе многокорпутного CSI-RS, принятого от gNB. Одна и та же конфигурация CSI-RS применяется ко всем UE.
Индикатор матрицы предварительного кодирования (PMI) и индикатор качества канала (CQI), сообщаемые UE. Пример не поддерживает оценку ранга и предоставляет ранг, который должен быть сообщен UE в качестве параметра конфигурации. UE сообщает PMI и CQI относительно сконфигурированного ранга. В примере Type-1 PMI поддерживается однопанельная кодовая книга.
Опорный сигнал демодуляции PDSCH (DM-RS).
Потеря тракта свободного пространства (FSPL), аддитивный белый гауссов шум (AWGN) и модель канала распространения кластерной линии задержки (CDL).
Узлы передают управляющие пакеты (назначение DL, обратная связь PDSCH и отчет CSI) вне полосы частот без необходимости в ресурсах для передачи и гарантированного безошибочного приема.
Это ключевые аспекты DL-MIMO.

Пространственное мультиплексирование использует MIMO для выполнения многослойной передачи. Минимальное количество передающих и приемных антенн ограничивает количество уровней (или максимальный ранг). Процесс отображения уровня отображает модулированные символы кодового слова на различные уровни. Он отображает каждый символ кодового слова на уровень. Например, на этой фигуре показано отображение кодового слова на четыре уровня.
Предварительное кодирование, которое следует за отображением уровня, отображает уровни передачи на антенные порты. Предварительное кодирование применяет матрицу предварительного кодирования к уровням передачи и выводит потоки данных на антенные порты CSI-RS.

Сообщение CSI представляет собой процесс, посредством которого UE для передач DL сообщает соответствующее количество уровней передачи (ранг), значений PMI и CQI в gNB. UE оценивает эти значения, выполняя измерения канала на своих сконфигурированных ресурсах CSI-RS. Для получения дополнительной информации посмотрите 5G НОМЕР Передачи информации из космоса CSI Сообщение о примере. Планировщик gNB использует эту рекомендацию для определения количества уровней передачи DL, матрицы предварительного кодирования, схемы модуляции и кодирования (MCS).
Узел (gNB или UE) представляет собой композицию слоев стека NR. Вспомогательные классы hNRGNB.m и hNRUE.m создают узлы gNB и UE соответственно, содержащие управление радиолинией (RLC), протокол доступа к среде (MAC) и физический уровень (PHY). Для получения дополнительной информации см. пример оценки производительности ячеек NR с интеграцией физического уровня.

Конфигурирование параметров моделирования в simParameters структура.
rng('default'); % Reset the random number generator simParameters = []; % Clear the simParameters variable simParameters.NumFramesSim = 10; % Simulation time in terms of number of 10 ms frames simParameters.SchedulingType = 0; % Set the value to 0 (slot based scheduling) or 1 (symbol based scheduling)
Укажите количество UE в каждой ячейке, предполагая, что UE имеют последовательные временные идентификаторы радиосети (RNTI) из 1 кому simParameters.NumUEs. При изменении количества UE убедитесь, что эти параметры моделирования представляют собой массивы длиной, равной значению simParameters.NumUEs: simParameters.UEDistance, simParameters.DLPacketPeriodicityUEs, simParameters.DLPacketSizesUEs, simParameters.UERxAnts.
simParameters.NumUEs = 4; simParameters.UEDistance = [450; 600; 1000; 1500]; % Validate the distance of UEs from the gNB validateattributes(simParameters.UEDistance, {'numeric'}, {'nonempty', 'vector', 'finite', 'numel', simParameters.NumUEs, '>', 0}, 'simParameters.UEDistance', 'UEDistance');
Укажите счетчики антенн в gNB и UE.
simParameters.GNBTxAnts = 16; simParameters.UERxAnts = [2; 2; 2; 2];
Установите пропускную способность канала в 10 МГц и подперевозчика, делающего интервалы (между SCS) к 15 кГц, как определено в 3GPP раздел 5.3.2 TS 38.104.
simParameters.NumRBs = 52; simParameters.SCS = 15; % kHz simParameters.DLBandwidth = 10e6; % Hz simParameters.DLCarrierFreq = 2.635e9; % Hz
Укажите конфигурацию CSI-RS.
simParameters.CSIRSRowNumber = 11; % CSI-RS row number as per 3GPP TS 38.211 Table 7.4.1.5.3-1 simParameters.CSIRSSubcarrierLocation = [1 3 5 7]; simParameters.CSIRSSymbolLocation = 0; simParameters.CSIRSPeriod = [10 2]; % Slot periodicity and offset
Укажите конфигурацию отчета CSI.
simParameters.PMIMode = 'Subband'; % 'Wideband' or 'Subband' simParameters.CQIMode = 'Subband'; % 'Wideband' or 'Subband' simParameters.PanelDimensions = [8 1]; % [N1 N2] as per 3GPP TS 38.214 Table 5.2.2.2.12 simParameters.SubbandSize = 4; % Refer TS 38.214 Table 5.2.1.4-2 for valid subband sizes simParameters.CodebookMode = 1; % 1 or 2
Установите ранг, который должен быть сообщен UE в отчете CSI. Пример не поддерживает оценку ранга, поэтому UE используют этот ранг, чтобы рекомендовать подходящие PMI и CQI. Для каждого UE установите число, меньшее или равное минимуму передающих антенн gNB и приемных антенн UE. Это только рекомендованный ранг, и вы можете настроить планировщик gNB, чтобы использовать другой ранг для передачи PDSCH.
simParameters.RankIndicator = [2 2 2 2];
Задайте отношение сигнал-помеха-плюс-шум (SINR) к таблице отображения индекса CQI для частоты блочных ошибок (BLER) 0,1.
simParameters.SINR90pc = [-7.46 -2.46 2.54 7.05 9.54 12.04 13.54 16.04 ...
18.04 20.43 22.93 23.43 25.43 28.43 31.43];Укажите мощность передачи.
simParameters.GNBTxPower = 35; % Tx power for gNB in dBmУкажите стратегию планирования и максимальный предел для RB, выделенных для PDSCH. Предел передачи применяется только к новым назначениям PDSCH, а не к повторным передачам.
simParameters.SchedulerStrategy = 'PF'; % Supported scheduling strategies: 'PF', 'RR', and 'BestCQI' simParameters.RBAllocationLimitDL = 25; % For PDSCH
CQIVisualization и RBVisualization параметры управляют отображением визуализации CQI RB и визуализации назначения RB. Чтобы включить график визуализации RB, установите RBVisualization поле в true.
simParameters.CQIVisualization = true; simParameters.RBVisualization = false;
Пример периодически обновляет графики метрик. Задайте количество обновлений во время моделирования.
simParameters.NumMetricsSteps = 20;
Запишите журналы в MAT-файлы. В примере эти журналы используются для анализа и визуализации после моделирования.
simParameters.ParametersLogFile = 'simParameters'; % For logging the simulation parameters simParameters.SimulationLogFile = 'simulationLogs'; % For logging the simulation logs
Установка периодической схемы трафика приложения DL для UE.
simParameters.DLPacketPeriodicityUEs = [2; 2; 3; 3]; % Periodicity (in ms) at which gNB generates the DL packets simParameters.DLPacketSizesUEs = [10000; 9000; 7500; 7500]; % Size of the generated DL packets (in bytes) % Validate the DL traffic periodicity validateattributes(simParameters.DLPacketPeriodicityUEs, {'numeric'}, {'nonempty', 'integer', 'vector', 'numel', simParameters.NumUEs, 'finite', '>', 0}, 'simParameters.DLPacketPeriodicityUEs', 'DLPacketPeriodicityUEs'); % Validate the size of DL packet generated by gNBs for UEs validateattributes(simParameters.DLPacketSizesUEs, {'numeric'}, {'nonempty', 'integer', 'nrows', simParameters.NumUEs, 'finite', '>=', 0}, 'simParameters.DLPacketSizesUEs', 'DLPacketSizesUEs');
Вычислите производные параметры на основе основных параметров конфигурации, указанных в предыдущем разделе, и задайте некоторые специфические для примера константы.
simParameters.DuplexMode = 0; % FDD (Value as 0) or TDD (Value as 1) simParameters.NCellID = 1; % Physical cell ID simParameters.Position = [0 0 0]; % Position of gNB in (x,y,z) coordinates simParameters.ChannelModelType = 'CDL'; % To model CDL propagation channel simParameters.ULBandwidth = simParameters.DLBandwidth; % Hz simParameters.ULCarrierFreq = 2.6454e9; % Hz
Вычислите длительность слота для выбранной SCS и количество слотов в кадре 10 мс.
slotDuration = 1/(simParameters.SCS/15); % In ms numSlotsFrame = 10/slotDuration; % Number of slots in a 10 ms frame numSlotsSim = simParameters.NumFramesSim * numSlotsFrame; % Number of slots in the simulation
Установите интервал, в течение которого в примере обновляется визуализация метрик с точки зрения количества слотов. Поскольку в этом примере используется гранулярность по времени для одного слота, MetricsStepSize поле должно быть целым числом.
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
Укажите один логический канал для каждого UE и задайте конфигурацию логического канала для всех узлов (UE и gNB) в примере.
numLogicalChannels = 1; simParameters.LCHConfig.LCID = 4;
Укажите направление объекта RLC как 0 для указания только DL, 1 для указания только UL, или 2 для указания как UL, так и DL.
simParameters.RLCConfig.EntityDir = 0;
Создание структуры конфигурации канала RLC.
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;
Установите максимальную длину блока данных службы RLC (SDU) в байтах, как указано в 3GPP TS 38,323.
simParameters.maxRLCSDULength = 9000;
Установите гранулярность такта моделирования (в терминах символов OFDM) и тип отображения в соответствии с сконфигурированным типом планирования.
if ~isfield(simParameters, 'SchedulingType') || simParameters.SchedulingType == 0 % If no scheduling type is specified or slot based scheduling is specified rbAssignmentPlotPeriodicity = numSlotsFrame; % Update RB assignment visualization every frame (10 ms) simParameters.PDSCHMappingType = 'A'; else % Symbol based scheduling rbAssignmentPlotPeriodicity = 1; % Update RB assignment visualization every slot simParameters.PDSCHMappingType = 'B'; end
Создайте объекты gNB и UE, инициализируйте информацию о качестве канала для UE и установите логический канал в gNB и UE. Вспомогательные классы hNRGNB.m и hNRUE.m создают узел gNB и узел UE соответственно, каждый из которых содержит RLC, MAC и PHY.
gNB = hNRGNB(simParameters); % Create gNB node % Create 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 = hNRGNBPhy(simParameters); % Create the PHY instance configurePhy(gNB, simParameters); % Configure the PHY setPhyInterface(gNB); % Set the interface to PHY % 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); ueParam = simParameters; ueParam.UERxAnts = simParameters.UERxAnts(ueIdx); ueParam.RankIndicator = simParameters.RankIndicator(ueIdx); UEs{ueIdx}.PhyEntity = hNRUEPhy(ueParam, ueIdx); % Create the PHY instance configurePhy(UEs{ueIdx}, ueParam); % Configure the PHY setPhyInterface(UEs{ueIdx}); % Set up the interface to PHY % Set up logical channel at gNB for the UE configureLogicalChannel(gNB, ueIdx, rlcChannelConfigStruct); % Set up logical channel at UE configureLogicalChannel(UEs{ueIdx}, ueIdx, rlcChannelConfigStruct); % Add DL data traffic pattern generators to gNB for the UEs 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 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
Настройте механизм распределения пакетов.
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);
Выполните имитационный слот по слоту. В каждом слоте выполните эти операции.
Запустите gNB.
Запустите UE.
Регистрировать и визуализировать метрики для каждого слоя.
Передайте таймер для узлов и отправляйте триггер на уровни приложений и RLC каждые миллисекунды. Уровни приложения и RLC выполняют запланированные операции на основе триггера таймера 1 мс.
Создание объектов для протоколирования и визуализации MAC и PHY.
simSchedulingLogger = hNRSchedulingLogger(simParameters, 0); % 0 for DL simPhyLogger = hNRPhyLogger(simParameters, 0); % 0 for DL visualizer = hNRMetricsVisualizer(simParameters, 'MACLogger', simSchedulingLogger, 'PhyLogger', simPhyLogger, 'VisualizationFlag', 0);
Запустите цикл обработки.
slotNum = 0; numSymbolsSim = numSlotsSim * 14; % Simulation time in units of symbol duration tickGranularity = 1; % Execute all the symbols in the simulation for symbolNum = 1 : tickGranularity : numSymbolsSim if mod(symbolNum - 1, 14) == 0 slotNum = slotNum + 1; end % Run the gNB run(gNB); % Run the UEs for ueIdx = 1:simParameters.NumUEs run(UEs{ueIdx}); end % MAC logging logCellSchedulingStats(simSchedulingLogger, symbolNum, gNB, UEs, 0); % For DL % PHY logging logCellPhyStats(simPhyLogger, 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 % If the update periodicity is reached, plot scheduler metrics and PHY metrics visualization % at slot boundary if mod(slotNum, simParameters.MetricsStepSize) == 0 plotMetrics(visualizer, slotNum); end end % Advance timer ticks for gNB and UEs advanceTimer(gNB, tickGranularity); for ueIdx = 1:simParameters.NumUEs advanceTimer(UEs{ueIdx}, tickGranularity); end end



В примере показано четыре способа визуализации во время выполнения:
Отображение значений CQI для UE по полосе пропускания PDSCH: Для получения подробной информации см. описание рисунка «Визуализация качества канала» в примере планирования NR PUSCH FDD.
Отображение назначения сети ресурсов для UE: Временная частотная сетка показывает распределение ресурсов для UE. Эту визуализацию можно включить в разделе Конфигурация сценария. Для получения дополнительной информации см. описание рисунка «Распределение матрицы ресурсов» в примере планирования NR PUSCH FDD.
Отображение графиков метрик планирования DL: Для получения подробной информации см. описание рисунка «Метрики производительности планировщика Downlink» в примере оценки производительности планирования NR FDD.
Отображение частоты ошибок блоков DL: Для получения подробной информации см. описание рисунка «Частота ошибок блоков (BLER)» в примере «Оценка производительности ячеек NR с интеграцией физического уровня».
В примере параметры моделирования и журналы сохраняются в виде MAT-файлов для постсимуляционного анализа и визуализации. В примере параметры моделирования сохраняются в MAT-файле с именем файла в качестве значения параметра конфигурации. simParameters.ParametersLogFile. Кроме того, в MAT-файле сохраняются журналы за шаг, журналы назначений планирования и журналы BLER. simParameters.SimulationLogFile. После моделирования откройте файл для загрузки DLTimeStepLogs, SchedulingAssignmentLogs в рабочей области.
Журналы временных шагов: Для получения подробной информации о формате журнала см. раздел «Журналы моделирования» в примере планирования NR PUSCH FDD.
Журналы назначений планирования: Информация обо всех назначениях планирования. Для получения дополнительной информации о формате журнала см. раздел «Журналы моделирования» в примере оценки производительности планирования NR FDD.
Журналы ошибок блоков: информация об ошибках блоков, наблюдаемая в направлении DL. Для получения подробной информации о формате журнала см. раздел «Журналы моделирования» в примере оценки производительности ячеек NR с интеграцией физического уровня.
В конце моделирования в примере сравнивается достигнутое значение для показателей производительности системы с их теоретическими пиковыми значениями (с учетом нулевых накладных расходов). Отображаемыми показателями эффективности являются: достигнутая скорость передачи данных, достигнутая спектральная эффективность и BLER, наблюдаемая для UE. Расчеты пикового значения выполняются в соответствии с 3GPP TR 37.910.
simulationLogs = cell(1,1); if(simParameters.DuplexMode == 0) % FDD logInfo = struct('DLTimeStepLogs',[], 'SchedulingAssignmentLogs',[],'BLERLogs',[]); else logInfo = struct('TimeStepLogs',[], 'SchedulingAssignmentLogs',[],'BLERLogs',[]); end dlStats = getPerformanceIndicators(simSchedulingLogger); [logInfo.BLERLogs, logInfo.AvgBLERLogs] = getBLERLogs(simPhyLogger); % Block Error rate logs fprintf('\nPeak DL throughput: %0.2f Mbps. Achieved average DL Throughput: %0.2f Mbps', dlStats(1, 1), dlStats(2, 1));
Peak DL throughput: 129.40 Mbps. Achieved average DL Throughput: 52.01 Mbps
fprintf('\nAchieved average DL Goodput: %0.2f Mbps', dlStats(5, 1));Achieved average DL Goodput: 51.95 Mbps
fprintf('\nPeak DL spectral efficiency: %0.2f bits/s/Hz. Achieved average DL spectral efficiency: %0.2f bits/s/Hz', dlStats(3, 1), dlStats(4, 1));Peak DL spectral efficiency: 12.94 bits/s/Hz. Achieved average DL spectral efficiency: 5.20 bits/s/Hz
disp(['Block error rate for each UE in the downlink direction: [' num2str(round(logInfo.AvgBLERLogs(:, 1)', 2)) ']']);
Block error rate for each UE in the downlink direction: [0.01 0 0 0]
Визуализацию журналов после моделирования можно выполнить с помощью сценария NRPostSimVisualization. Дополнительные сведения о параметрах запуска этого сценария см. в примере оценки производительности планирования NR FDD.
% Read the logs and save them in MAT-files if(simParameters.DuplexMode == 0) % FDD logInfo.DLTimeStepLogs = getSchedulingLogs(simSchedulingLogger); else % TDD logInfo.TimeStepLogs = getSchedulingLogs(simSchedulingLogger); end logInfo.SchedulingAssignmentLogs = getGrantLogs(simSchedulingLogger); % Scheduling assignments log simulationLogs{1} = logInfo; save(simParameters.ParametersLogFile, 'simParameters'); % Save simulation parameters in a MAT-file save(simParameters.SimulationLogFile, 'simulationLogs'); % Save simulation logs in a MAT-file
Этот пример можно использовать для дальнейшего изучения пользовательского планирования.
Существующую стратегию планирования можно изменить для реализации пользовательской стратегии. Следуйте шагам в разделе «Дальнейшее исследование» в примере оценки производительности планирования NR FDD, в котором описаны шаги по написанию пользовательской стратегии планирования для конфигурации с одним входом и одним выходом (SISO). Кроме того, конфигурация MIMO добавляет больше полей в структуру назначения планирования. Заполните поля назначений планирования значениями для матрицы предварительного кодирования, количеством уровней в соответствии с пользовательской стратегией планирования. Для получения дополнительной информации об информационных полях назначения планирования см. описание scheduleDLResourcesSlot функция в файле hNRscheduler.m.
Планировщик в примере выбирает матрицу ранга и предварительного кодирования, которую UE сообщает в CSI. Можно также настроить это поведение для выбора любого ранга и матрицы предварительного кодирования путем переопределения функции. selectRankAndPrecodingMatrix в пользовательском планировщике. Дополнительные сведения см. в описании selectRankAndPrecodingMatrix функция в файле hNRscheduler.m helper
[1] 3GPP TS 38.104. "НР; радиопередача и прием базовой станции (BS). "Проект партнерства 3-го поколения; Техническая спецификация на сеть радиодоступа группы.
[2] 3GPP TS 38.214. "НР; Процедуры физического уровня для данных. "Проект партнерства третьего поколения; Техническая спецификация на сеть радиодоступа группы.
[3] 3GPP TS 38.321. "НР; Спецификация протокола управления доступом к среде (MAC). "Проект партнерства 3-го поколения; Техническая спецификация на сеть радиодоступа группы.
[4] 3GPP TS 38.322. "НР; Спецификация протокола управления радиоканалом (RLC). "Проект партнерства 3-го поколения; Техническая спецификация на сеть радиодоступа группы.
[5] 3GPP TS 38.323. "НР; Спецификация протокола конвергенции пакетных данных (PDCP). "Проект партнерства 3-го поколения; Техническая спецификация на сеть радиодоступа группы.
[6] 3GPP TS 38.331. "НР; Спецификация протокола управления радиоресурсами (RRC). "Проект партнерства 3-го поколения; Техническая спецификация на сеть радиодоступа группы.
[7] 3GPP TR 37.910. «Исследование по самооценке в направлении представления IMT-2020» Проект партнерства третьего поколения; Техническая спецификация на сеть радиодоступа группы.