Этот пример моделирует 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 консультирует подходящее количество слоев передачи (rank), значений PMI и CQI в gNB. UE оценивает эти значения путем выполнения канальных измерений на своих сконфигурированных ресурсах CSI-RS. Для получения дополнительной информации см. 5G пример создания отчетов CSI NR Nownlink. Планировщик gNB использует это совет, чтобы решить количество слоев передачи DL, матрицу предварительного кодирования, схему модуляции и кодирования (MCS).
Узел (gNB или UE) является композицией слоев NR стека. Классы helper 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 TS 38.104, раздел 5.3.2.
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
The 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. Классы helper 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. Эту визуализацию можно включить в разделе Строении сценария. Для получения дополнительной информации см. описание рисунка «Распределение ресурсной сетки» в примере планирования FDD PUSCH NR.
Отображение графиков метрик планирования DL: Для получения дополнительной информации смотрите описание Эффективности метрики планировщика нисходящего канала рисунка в примере планирования Эффективности оценки NR FDD.
Отображение частоты ошибок блоков DL: Для получения дополнительной информации смотрите описание 'Block Error Rate (BLER) Visualization рисунка в Камеру NR Эффективности Evaluation with Physical Слоя Интегрирования пример.
Пример сохраняет параметры симуляции и журналы как MAT-файлы для постсимуляционного анализа и визуализации. Пример сохраняет параметры симуляции в MAT-файле с именем файла в качестве значения параметра конфигурации simParameters.ParametersLogFile
. Кроме того, в MAT-файле сохраняются журналы, журналы назначения расписаний и журналы BLER в качестве значения simParameters.SimulationLogFile
. После симуляции откройте файл для загрузки DLTimeStepLogs
, SchedulingAssignmentLogs
в рабочей области.
Журналы временных шагов: Подробную информацию о формате журнала см. в разделе «Журналы моделирования» примера планирования FDD PUSCH NR.
Журналы назначения расписания: Информация обо всех назначениях расписания. Для получения дополнительной информации о формате журнала см. раздел «Simulation Logs» в примере оценки эффективности планирования NR FDD.
Block Error журналы: Информация об ошибке блока, наблюдаемая в направлении 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. Для получения дополнительной информации об опциях запуска этого скрипта смотрите пример оценки эффективности планирования FDD NR.
% 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
Можно использовать этот пример для дальнейшего изучения пользовательского планирования.
Можно изменить существующую стратегию планирования для реализации пользовательской стратегии. Следуйте шагам в разделе «Дальнейшее исследование» примера оценки эффективности планирования FDD NR, в котором объясняются шаги, чтобы написать пользовательскую стратегию планирования для строения с одним входом и одним выходом (SISO). Кроме того, строение MIMO добавляет больше полей к структуре назначения планирования. Заполните поля назначений расписаний значениями для матрицы предварительного кодирования, количеством слоев в соответствии с пользовательской стратегией планирования. Для получения дополнительной информации об информационных полях назначения расписания см. описание scheduleDLResourcesSlot
функция в файле helper hNRScheduler.m.
Планировщик в примере выбирает матрицу ранга и предварительного кодирования, которую UE сообщает в CSI. Можно также настроить это поведение, чтобы выбрать любой ранг и матрицу предварительного кодирования путем переопределения функции selectRankAndPrecodingMatrix
в пользовательском планировщике. Для получения дополнительной информации смотрите описание selectRankAndPrecodingMatrix
функция в файле helper hNRScheduler.m
[1] 3GPP TS 38.104. "NR; радиопередача и прием базовой станции (BS). "3-ья Генерация партнерский проект; Группа технических спецификаций Радиосеть доступ.
[2] 3GPP TS 38.214. "NR; Процедуры физического слоя данных ". 3-ья Генерация проект Партнерства; Группа технических спецификаций Радиосеть доступ.
[3] 3GPP TS 38.321. "NR; Спецификация протокола управления средним доступом (MAC). "3rd Генерация Partnership Project; Группа технических спецификаций Радиосеть доступ.
[4] 3GPP TS 38.322. "NR; Спецификация протокола Radio Ссылки Control (RLC). "3rd Генерация Partnership Project; Группа технических спецификаций Радиосеть доступ.
[5] 3GPP TS 38.323. "NR; Спецификация протокола сходимости пакетных данных (PDCP). "3-ья Генерация проект партнерства; Группа технических спецификаций Радиосеть доступ.
[6] 3GPP TS 38.331. "NR; Спецификация протокола управления радиоресурсами (RRC). "3rd Генерация Partnership Project; Группа технических спецификаций Радиосеть доступ.
[7] 3GPP TR 37,910. «Исследование по самооценке к IMT-2020 представлению». Третья Генерация проект партнерства; Группа технических спецификаций Радиосеть доступ.