Этот пример показывает удар на производительность сети, должную передавать в нисходящем направлении интерференцию межъячейки (DL), вызванную соседними ячейками. Пример демонстрирует сеть New Radio (NR) 5G нескольких ячеек, действующих в том же диапазоне частот. Каждой ячейке поместили gNB в центре ячейки, которая служит набору оборудования пользователя (UE). Стек NR на узлах включает управление линией радиосвязи (RLC), среднее управление доступом (MAC) и физические слои (PHY).
Пример полагает, что эти операции в gNB и UEs упрощают передачи DL и приемы.
Полный пакет PDSCH передается в первом символе его выделенного набора символов. Приемник обрабатывает пакет в символе сразу после последнего символа в выделенном наборе символов.
Этот пример модели:
Интерференция межъячейки Co-канала.
Находящееся на пазе и основанное на символе планирование DL ресурсов PDSCH.
Конфигурируемое расстояние между поднесущими, приводящее к различной длительности паза.
Выделение, состоящее из нескольких несмежных участков, ресурсов частотного диапазона в терминах ресурса блокирует группы (RBGs).
Опорный сигнал демодуляции PDSCH (DM-RS).
Качественное измерение канала DL UEs на основе CSI-RS получено от gNB. По умолчанию элемент ресурса CSI-RS передается в каждом пазе для каждого блока ресурса (RB) в полосе пропускания DL для всего UEs. Та же настройка CSI-RS применима ко всему UEs в ячейке.
Потери при распространении в свободном пространстве (FSPL) и аддитивный белый Гауссов шум (AWGN).
Настройка антенны одного входа одного выхода (SISO).
Одна часть полосы пропускания через целую несущую.
Пример принимает, что пакеты управления, такие как присвоение DL, обратная связь PDSCH, и отчет качественной характеристики канала (CQI), приняты, чтобы быть отправленными из полосы, то есть, без потребности ресурсов для передачи и гарантировали безошибочный прием.
В сотовых системах каждая ячейка работает с особой несущей частотой. Ячейки, работающие с той же несущей частотой, называются ячейками co-канала. Ячейки Co-канала могут вмешаться в передачи между ними.
Рассмотрите эту демонстрационную сетевую топологию, состоящую из 3 ячеек. Ячейка 1 и ячейка 3 работает с тем же диапазоном частот. Ячейка 2 работает с различным диапазоном частот и не вмешивается в ячейку 1 или ячейка 3.
Узел (gNB или UE) состоит из приложений, генерирующих трафик, в дополнение к RLC, MAC и PHY. Классы помощника hNRGNB.m и hNRUE.m создают gNB и узлы UE соответственно, содержа RLC, MAC и слои PHY. Для получения дополнительной информации о каждом слое обратитесь к Оценке результатов деятельности Ячейки NR с примером Интегрирования Физического уровня.
Для этой симуляции, набор следующие ключевые параметры конфигурации.
Время симуляции
Количество ячеек
Радиус ячейки (все UEs, соединенные с gNB, на этом расстоянии),
Положения gNBs
Количество UEs в каждой ячейке
Сигнал к интерференционному и шумовому отношению (SINR) к таблице отображения CQI для 0,1 частот появления ошибочных блоков (BLER). Интерполяционная таблица используется, чтобы сопоставить полученный SINR с индексом CQI для 0,1 BLER. Интерполяционная таблица соответствует таблице CQI согласно 3GPP таблица 5.2.2.1-3 TS 38.214. Для получения дополнительной информации о процессе генерации этой интерполяционной таблицы, смотрите 5G пример Создания отчетов CSI Нисходящего канала NR.
Передайте степень gNB
Полоса пропускания несущей DL в терминах количества блоков ресурса (RBS)
Несущая частота DL
Расстояние между поднесущими
Модель трафика приложения DL
Сконфигурируйте параметры симуляции в simParameters
структура.
rng('default'); % Reset the random number generator simParameters = []; % Clear the simParameters variable simParameters.NumFramesSim = 20; % 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)
Задайте количество ячеек в симуляции. Ячейки приняты, чтобы иметь последовательные идентификаторы ячейки (NCellIDs) от 0
to NumCells-1
. Если вы изменяете количество ячеек, гарантируете что количество строк в simParameters.GNBPosition
должно быть равно NumCells
.
simParameters.NumCells = 3; % Number of cells simParameters.CellRadius = 500; % Radius of each cell (in meters) % Validate the number of cells validateattributes(simParameters.NumCells, {'numeric'}, {'nonempty', 'integer', 'scalar', '>', 0, '<=', 1008}, 'simParameters.NumCells', 'NumCells'); % Validate the cell radius validateattributes(simParameters.CellRadius, {'numeric'}, {'nonempty', 'real', 'scalar', '>', 0, 'finite'}, 'simParameters.CellRadius', 'CellRadius');
N-by-3
матрица представляет положение gNBs в (X, Y, Z) координаты, где 'N
'количество ячеек в симуляции. Номер строки 'P
'представляет эти X, Y, и координаты Z gNB в ячейке, имеющей ячейку ID 'P-1
'. Например, значение [3000, 600, 0] в 2-й строке представляет (X, Y, Z) координаты gNB в ячейке, имеющей ячейку ID 1.
simParameters.GNBPosition = [1700 600 0; 3000 600 0; 2500 2000 0]; % Validate the gNB positions validateattributes(simParameters.GNBPosition, {'numeric'}, {'nonempty', 'real', 'nrows', simParameters.NumCells, 'ncols', 3, 'finite'}, 'simParameters.GNBPosition', 'GNBPosition');
Задайте количество UEs в ячейке. Каждая ячейка содержит то же количество UEs.
simParameters.NumUEs = 4; % Validate the number of UEs in each cell validateattributes(simParameters.NumUEs, {'numeric'}, {'nonempty', 'integer', 'scalar','>', 0, '<=', 65519}, 'simParameters.NumUEs', 'NumUEs');
Задайте степень передачи gNB в dBm.
simParameters.GNBTxPower = 32;
Установите полосу пропускания канала на 10 МГц и расстояние между поднесущими (SCS) к 30 кГц, как задано в 3GPP Раздел TS 38.104 5.3.2.
simParameters.NumRBs = 24; simParameters.SCS = 30; % kHz simParameters.DLCarrierFreq = 2.635e9; % DL carrier frequency in Hz simParameters.DLBandwidth = 10e6; % DL bandwidth in Hz
Задайте SINR к таблице отображения CQI для BLER 0,1.
simParameters.SINR90pc = [-5.46 -0.46 4.54 9.05 11.54 14.04 15.54 18.04 ...
20.04 22.43 24.93 25.43 27.43 30.43 33.43];
Задайте стратегию планирования и максимальный предел на RBS, выделенном для PDSCH. Предел передачи применяется только к новым присвоениям PDSCH, а не к повторным передачам.
simParameters.RBAllocationLimitDL = 15;
Задайте ID ячейки интереса. Всю визуализацию и метрики показывают для этой ячейки.
simParameters.CellOfInterest = 2; % Set a value from 0 to NumCells-1 % Validate Cell of interest validateattributes(simParameters.CellOfInterest, {'numeric'}, {'nonempty', 'integer', 'scalar', '>=', 0, '<',simParameters.NumCells}, 'simParameters.CellOfInterest', 'CellOfInterest');
CQIVisualization
и RBVisualization
параметры управляют отображением визуализации CQI и визуализации присвоения RB соответственно. Чтобы включить график визуализации RB, установите RBVisualization
поле к true
.
simParameters.CQIVisualization = true; simParameters.RBVisualization = false;
Установите enableTraces
как true
регистрировать трассировки. Если enableTraces
установлен в false
, затем CQIVisualization
и RBVisualization
отключены автоматически, и трассировки не зарегистрированы симуляция. Чтобы ускорить симуляцию, установите enableTraces
к false
.
enableTraces = true;
Обновляйте выходные метрические графики периодически, задавая NumMetricsSteps
обновления в рамках симуляции. NumMetricsSteps
должно быть меньше чем или равно количеству пазов в симуляции.
simParameters.NumMetricsSteps = 20;
Запишите журналы в MAT-файлы. Пример использует эти журналы для анализа методом моделирования сообщения и визуализации.
parametersLogFile = 'simParameters'; % For logging the simulation parameters simulationLogFile = 'simulationLogs'; % For logging the simulation traces simulationMetricsFile = 'simulationMetrics'; % For logging the simulation metrics
Установите периодическую модель трафика приложения DL для UEs. Следующая настройка применяется к каждой ячейке.
dlAppDataRate = 16e3; % DL application data rate in kilo bits per second (kbps) % Validate the DL application data rate validateattributes(dlAppDataRate, {'numeric'}, {'nonempty', 'scalar', 'finite', '>', 0}, 'dlAppDataRate', 'dlAppDataRate');
На основе первичных параметров конфигурации вычислите выведенные параметры. Кроме того, подайте некоторый пример определенные константы.
simParameters.DuplexMode = 0; % FDD simParameters.ULCarrierFreq = 2.515e9; % UL carrier frequency in Hz simParameters.ULBandwidth = 10e6; % UL bandwidth in Hz simParameters.NCellIDList = 0:simParameters.NumCells-1; % List of physical cell IDs simParameters.Mobility = false; % Set to true to enable mobility model in the cell of interest ueOfInterest = 2; % RNTI of the UE on which mobility can be enabled in the cell of interest
Задайте настройку ресурса CSI-RS для ячеек, приняв, что все UEs в ячейке измеряют качество канала на том же ресурсе CSI-RS.
csirsConfig = cell(1, simParameters.NumCells); for cellIdx = 1:simParameters.NumCells csirsConfig{cellIdx} = nrCSIRSConfig('NID', simParameters.NCellIDList(cellIdx), 'NumRB', simParameters.NumRBs, 'RowNumber', 2, 'SubcarrierLocations', 1, 'SymbolLocations', 0); end
Задайте настройку отчета CSI.
csiReportConfig = struct('SubbandSize', 8, 'CQIMode', 'Subband'); simParameters.CSIReportConfig = {csiReportConfig};
Установите BSRPeriodicity
к inf
как нет никакого трафика UL.
simParameters.BSRPeriodicity = inf; % In ms
Вычислите длительность паза для выбранного 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 и установите логическую настройку канала для всех узлов (UEs и gNBs) в примере.
numLogicalChannels = 1;
simParameters.LCHConfig.LCID = 4; % Logical channel ID (logical channel ID of data radio bearers starts from 4)
Задайте тип сущности RLC в области значений [0, 2]. Значения 0, 1, и 2 указывают на RLC UM однонаправленная сущность DL, RLC UM однонаправленная сущность UL и RLC UM двунаправленная сущность, соответственно.
simParameters.RLCConfig.EntityType = 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.EntityType; rlcChannelConfigStruct.LogicalChannelID = simParameters.LCHConfig.LCID;
Сгенерируйте положения UEs в каждой ячейке.
simParameters.UEPosition = generateUEPositions(simParameters); simParameters.MaxReceivers = simParameters.NumCells * (simParameters.NumUEs + 1); % Number of nodes if ~isfield(simParameters, 'SchedulingType') || simParameters.SchedulingType == 0 % If no scheduling type is specified or slot-based scheduling is specified tickGranularity = 14; simParameters.PUSCHMappingType = 'A'; simParameters.PDSCHMappingType = 'A'; else % Symbol-based scheduling tickGranularity = 1; simParameters.PUSCHMappingType = 'B'; simParameters.PDSCHMappingType = 'B'; end
Настройте ячейки с отдельной ячейкой, состоящей из одного gNB и нескольких UEs. Для каждой ячейки создайте gNB и объекты UE, инициализируйте информацию о качестве канала для UEs и настройте логический канал в gNB и UEs. Классы помощника hNRGNB.m и hNRUE.m создают gNB и узлы UE соответственно, содержа RLC, MAC и слои PHY.
gNB = cell(simParameters.NumCells, 1); UEs = cell(simParameters.NumCells, simParameters.NumUEs); % Create packet distribution object packetDistributionObj = hNRPacketDistribution(simParameters); cellParam = simParameters; % Cell level parameters for cellIdx = 1:simParameters.NumCells % For each cell cellParam.NCellID = simParameters.NCellIDList(cellIdx); % Cell ID cellParam.Position = simParameters.GNBPosition(cellIdx, :); % gNB position in (x,y,z) coordinates cellParam.CSIRSConfig = csirsConfig(cellIdx); cellParam.CSIReportConfig = {csiReportConfig}; gNB{cellIdx} = hNRGNB(cellParam); % Create gNB node scheduler = hNRSchedulerProportionalFair(cellParam); % Create proportional fair scheduler addScheduler(gNB{cellIdx}, scheduler); % Add scheduler to gNB gNB{cellIdx}.PhyEntity = hNRGNBPhy(cellParam); % Create the PHY layer instance configurePhy(gNB{cellIdx}, cellParam); % Configure the PHY layer setPhyInterface(gNB{cellIdx}); % Set up the interface to PHY layer % For each cell, create the set of UE nodes and place them randomly within the cell radius for ueIdx = 1:simParameters.NumUEs cellParam.Position = simParameters.UEPosition{cellIdx}(ueIdx, :); % Position of UE in (x,y,z) coordinates cellParam.CSIReportConfig = csiReportConfig; UEs{cellIdx, ueIdx} = hNRUE(cellParam, ueIdx); UEs{cellIdx, ueIdx}.PhyEntity = hNRUEPhy(cellParam, ueIdx); % Create the PHY layer instance configurePhy(UEs{cellIdx, ueIdx}, cellParam); % Configure the PHY layer setPhyInterface(UEs{cellIdx, ueIdx}); % Set up the interface to PHY % Setup logical channel at gNB for the UE configureLogicalChannel(gNB{cellIdx}, ueIdx, rlcChannelConfigStruct); % Setup logical channel at UE configureLogicalChannel(UEs{cellIdx, ueIdx}, ueIdx, rlcChannelConfigStruct); % Add application data traffic pattern generators to gNB node packetSize = 9000; % Maximum RLC service data unit (SDU) length, in bytes, as specified in 3GPP TS 38.323. % 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 app = networkTrafficOnOff('PacketSize', packetSize, 'GeneratePacket', true, ... 'OnTime', simParameters.NumFramesSim/100, 'OffTime', 0, 'DataRate', dlAppDataRate); gNB{cellIdx}.addApplication(ueIdx, simParameters.LCHConfig.LCID, app); end % Setup the UL and DL packet distribution mechanism hNRSetUpPacketDistribution(cellParam, gNB{cellIdx}, UEs(cellIdx, :), packetDistributionObj); end % Install mobility (if enabled) if simParameters.Mobility % Get index of the cell of interest cellIdx = simParameters.CellOfInterest + 1; maxSpeed = 20; % In meters per sec % Install random waypoint mobility on UE of interest in the cell of interest mobilityModel = hRandomWaypointMobility(InitialPosition=simParameters.UEPosition{cellIdx}(ueOfInterest, :), MaxSpeed=maxSpeed,... CellCenter=simParameters.GNBPosition(cellIdx, :), CellRadius=simParameters.CellRadius, BoundaryShape='Circle'); UEs{cellIdx, ueOfInterest}.Mobility = mobilityModel; end
Симуляция является пазом запуска пазом. Для каждой ячейки, в каждом пазе, выполняются эти операции:
Запустите слои MAC и PHY gNB
Запустите слои MAC и PHY UEs
Специфичное для слоя логгирование и визуализация
Усовершенствуйте таймер для узлов. Каждый 1 мс это также отправляет триггер в слои RLC и приложение. Прикладной уровень и слой RLC выполняют их запланированные операции на основе триггера таймера на 1 мс.
Отобразите сетевую топологию.
plotNetwork(simParameters);
Создайте объекты регистрировать трассировки PHY и MAC.
linkDir = 0; % Indicates DL if enableTraces simSchedulingLogger = cell(simParameters.NumCells, 1); simPhyLogger = cell(simParameters.NumCells, 1); for cellIdx = 1:simParameters.NumCells simParameters.NCellID = simParameters.NCellIDList(cellIdx); % Create an object for MAC DL scheduling traces logging simSchedulingLogger{cellIdx} = hNRSchedulingLogger(simParameters, linkDir); % Create an object for PHY layer traces logging simPhyLogger{cellIdx} = hNRPhyLogger(simParameters); end end
Сохраните индекс ячейки ID интереса.
cellOfInterestIdx = find(simParameters.CellOfInterest == simParameters.NCellIDList);
Создайте объект для CQI и визуализации сетки RB
if enableTraces && (simParameters.CQIVisualization || simParameters.RBVisualization) gridVisualizer = hNRGridVisualizer(simParameters, 'CellOfInterest', simParameters.CellOfInterest, ... 'MACLogger', simSchedulingLogger{cellOfInterestIdx}, 'VisualizationFlag', linkDir); end
Создайте объект для MAC и метрической визуализации PHY.
nodes = struct('UEs', {UEs(cellOfInterestIdx, :)}, 'GNB', gNB{cellOfInterestIdx}); metricsVisualizer = hNRMetricsVisualizer(simParameters, 'CellOfInterest', simParameters.CellOfInterest, ... 'Nodes', nodes, 'EnableSchedulerMetricsPlots', true, 'EnablePhyMetricsPlots', true, 'VisualizationFlag', linkDir);
Запустите цикл обработки
slotNum = 0; numSymbolsSim = numSlotsSim * 14; % Simulation time in units of symbol duration (assuming normal cyclic prefix) % Execute all the symbols in the simulation for symbolNum = 1 : tickGranularity : numSymbolsSim if mod(symbolNum - 1, 14) == 0 slotNum = slotNum + 1; end % All the cells operating on same SCS hence slot durations are same for cellIdx = 1:simParameters.NumCells % For each cell % Run MAC and PHY layers of gNB run(gNB{cellIdx}); % Run MAC and PHY layers of UEs for ueIdx = 1:simParameters.NumUEs run(UEs{cellIdx, ueIdx}); end if enableTraces % MAC logging logCellSchedulingStats(simSchedulingLogger{cellIdx}, symbolNum, gNB{cellIdx}, UEs(cellIdx, :), linkDir); % PHY logging logCellPhyStats(simPhyLogger{cellIdx}, symbolNum, gNB{cellIdx}, UEs(cellIdx, :)); end end % Visualization % Check slot boundary if symbolNum > 1 && ((simParameters.SchedulingType == 1 && mod(symbolNum, 14) == 0) || (simParameters.SchedulingType == 0 && mod(symbolNum-1, 14) == 0)) % If the update periodicity is reached, plot scheduler metrics and PHY metrics at slot boundary if mod(slotNum, simParameters.MetricsStepSize) == 0 plotLiveMetrics(metricsVisualizer); end end for cellIdx = 1:simParameters.NumCells % Advance timer ticks for gNB and UEs by the number of symbols per slot advanceTimer(gNB{cellIdx}, tickGranularity); for ueIdx = 1:simParameters.NumUEs advanceTimer(UEs{cellIdx, ueIdx}, tickGranularity); end end end
Получите метрики симуляции simParameters.CellOfInterest
и сохраните его в MAT-файле. Метрики симуляции сохранены в MAT-файле с именем файла как simulationMetricsFile
.
metrics = getMetrics(metricsVisualizer);
save(simulationMetricsFile, 'metrics');
В конце симуляции достигнутое значение для индикаторов производительности системы сравнивается с их теоретическими пиковыми значениями (рассматривающий нулевые издержки). Отображенные показатели эффективности являются достигнутой скоростью передачи данных (UL и DL), достиг спектрального КПД (UL и DL), и BLER, наблюдаемый для UEs (DL и UL). Пиковые значения вычисляются согласно 3GPP TR 37.910.
displayPerformanceIndicators(metricsVisualizer);
Peak DL Throughput: 59.72 Mbps. Achieved Cell DL Throughput: 10.38 Mbps Achieved DL Throughput for each UE: [2.06 5.96 1.11 1.25] Achieved Cell DL Goodput: 10.25 Mbps Achieved DL Goodput for each UE: [2.01 5.96 1.05 1.23] Peak DL spectral efficiency: 5.97 bits/s/Hz. Achieved DL spectral efficiency for cell: 1.03 bits/s/Hz Block error rate for each UE in the downlink direction: [0.01 0 0.01 0.005]
Пять типов показанной визуализации во время выполнения:
Отображение Сетевой Топологии: рисунок показывает сконфигурированную топологию ячейки. Для каждой ячейки это показывает положение gNB и связанного UEs.
Отображение значений CQI для UEs по полосе пропускания PDSCH: Для получения дополнительной информации см. 'Качественное описание' Визуализации Канала фигуры в NR PUSCH FDD, Планируя пример.
Отображение присвоения сетки ресурса на UEs: 2D сетка частоты времени показывает распределение ресурсов UEs. Можно включить эту визуализацию в разделе 'Logging and Visualization Configuration'. Для получения дополнительной информации см. 'описание' Выделения Сетки Ресурса фигуры в NR PUSCH FDD, Планируя пример.
Отображение DL планирование метрических графиков: Для получения дополнительной информации см. 'Нисходящее описание' показателей производительности Планировщика фигуры в NR FDD, Планируя пример Оценки результатов деятельности.
Отображение Частот появления ошибочных блоков DL: Для получения дополнительной информации смотрите 'Частоту появления ошибочных блоков (BLER) Визуализация' описание фигуры в Оценке результатов деятельности Ячейки NR с примером Интегрирования Физического уровня.
Параметры, используемые для симуляции и журналов симуляции, сохранены в MAT-файлах для анализа методом моделирования сообщения и визуализации. Параметры симуляции сохранены в MAT-файле с именем файла как значение параметра конфигурации parametersLogFile
. На журналы временного шага, планируя журналы присвоения и журналы BLER получены для каждой ячейки в симуляции и сохраненный в MAT-файле simulationLogFile
. После симуляции откройте файл, чтобы загрузить NCellID
, DLTimeStepLogs
, SchedulingAssignmentLogs
, и BLERLogs
в рабочей области.
NCellID: Это хранит ячейку ID и представляет ячейку, которой принадлежат журналы симуляции.
Журналы Временного шага DL: Хранит на журналы паза симуляции с каждым пазом как одна строка в симуляции. Для получения дополнительной информации формата журнала, смотрите раздел 'Simulation Logs' NR PUSCH FDD, Планируя пример.
Планирование журналов Присвоения: информация всех присвоений планирования и сопутствующей информации зарегистрирована этот файл. Для получения дополнительной информации формата журнала, смотрите раздел 'Simulation Logs' в NR FDD, Планируя пример Оценки результатов деятельности.
Журналы BLER: информация о Блочной ошибке, наблюдаемая в симуляции, зарегистрирована этот файл. Для получения дополнительной информации формата журнала, смотрите раздел 'BLER Logs' в Оценке результатов деятельности Ячейки NR с примером Интегрирования Физического уровня.
Можно запустить скрипт NRPostSimVisualization, чтобы получить визуализацию симуляции сообщения журналов. Для получения дополнительной информации об опциях, чтобы запустить этот скрипт, смотрите, что NR FDD Планирует пример Оценки результатов деятельности.
if enableTraces % Get the logs simulationLogs = cell(simParameters.NumCells, 1); for cellIdx = 1:simParameters.NumCells if(simParameters.DuplexMode == 0) % FDD logInfo = struct('NCellID', [], 'DLTimeStepLogs', [], 'SchedulingAssignmentLogs', [], 'BLERLogs', [], 'AvgBLERLogs', []); logInfo.DLTimeStepLogs = getSchedulingLogs(simSchedulingLogger{cellIdx}); else % TDD logInfo = struct('NCellID', [], 'TimeStepLogs', [], 'SchedulingAssignmentLogs', [], 'BLERLogs', [], 'AvgBLERLogs', []); logInfo.TimeStepLogs = getSchedulingLogs(simSchedulingLogger{cellIdx}); end logInfo.NCellID = simParameters.NCellIDList(cellIdx); logInfo.SchedulingAssignmentLogs = getGrantLogs(simSchedulingLogger{cellIdx}); % Scheduling assignments log logInfo.BLERLogs = getBLERLogs(simPhyLogger{cellIdx}); % BLER logs simulationLogs{cellIdx} = logInfo; end save(parametersLogFile, 'simParameters'); % Save simulation parameters in a MAT-file save(simulationLogFile, 'simulationLogs'); % Save simulation logs in a MAT-file end
Можно использовать этот пример, чтобы далее исследовать эти опции:
Смоделируйте восходящую интерференцию между узлами путем конфигурирования связанной с восходящим каналом настройки. Для получения дополнительной информации смотрите Оценку результатов деятельности Ячейки NR с примером Интегрирования Физического уровня.
Смоделируйте сценарии Агрессора-жертвы: агрессор является источником интерференции, и жертва страдает из-за интерференции. Рассмотрите сценарий DL в следующем рисунке. Макро-ячейка UE далеко от макро-базовой станции (BS) и близко к маленькой ячейке. В направлении DL макро-ячейка UE страдает от интерференции маленькой ячейкой BS. Маленькая ячейка BS называется агрессором, и макро-UE называется жертвой.
Модель несколько кластеров, где каждый кластер состоит из ячеек, работающих с различными частотами, и анализирует удар интерференции на пользователях границы ячейки.
Смоделируйте эффекты внутриячейковой мобильности на нисходящих метриках: модель мобильности, установленная на UE, определяет шаблон, вдоль которого UE перемещается в конкретной ячейке. Установите Mobility
поле в разделе 'Derived Parameters', чтобы включить мобильность для ueOfInterest
в CellOfInterest
. График ниже демонстрирует эффект мобильности UE на полезной пропускной способности на время симуляции 1 000 систем координат. Полезная пропускная способность постепенно уменьшается, когда UE переезжает от gNB. Однако в сравнении, статические UEs выдерживают свои скорости передачи данных в течение симуляции.
Полезная пропускная способность строит для ячейки интереса с мобильностью, установленной на UE-2
Полезная пропускная способность строит для ячейки интереса со статическим UEs
На основе описанных параметров симуляции пример оценивает эффективность системы, измеренной в терминах различных метрик. Различная визуализация показывает эффективность времени выполнения системы. Более полный анализ методом моделирования сообщения при помощи сохраненных журналов дает подробное изображение операций, происходящих на на базис паза.
function plotNetwork(simParameters) % Create the figure figure('Name', 'Network Topology Visualization', 'units', 'normalized', 'outerposition', [0 0 1 1], 'Visible', "on"); title('Network Topology Visualization'); hold on; for cellIdx = 1:simParameters.NumCells % Plot the circle th = 0:pi/60:2*pi; xunit = simParameters.CellRadius * cos(th) + simParameters.GNBPosition(cellIdx, 1); yunit = simParameters.CellRadius * sin(th) + simParameters.GNBPosition(cellIdx, 2); if simParameters.CellOfInterest == simParameters.NCellIDList(cellIdx) h1 = plot(xunit, yunit, 'Color', 'green'); % Cell of interest else h2 = plot(xunit, yunit, 'Color', 'red'); end xlabel('X-Position (meters)') ylabel('Y-Position (meters)') % Add tool tip data for gNBs s1 = scatter(simParameters.GNBPosition(cellIdx, 1), simParameters.GNBPosition(cellIdx, 2), '^','MarkerEdgeColor', 'magenta'); cellIdRow = dataTipTextRow('Cell - ',{num2str(simParameters.NCellIDList(cellIdx))}); s1.DataTipTemplate.DataTipRows(1) = cellIdRow; posRow = dataTipTextRow('Position[X, Y]: ',{['[' num2str(simParameters.GNBPosition(cellIdx, :)) ']']}); s1.DataTipTemplate.DataTipRows(2) = posRow; % Add tool tip data for UEs uePosition = simParameters.UEPosition{cellIdx}; for ueIdx = 1:size(uePosition, 1) s2 = scatter(uePosition(ueIdx, 1), uePosition(ueIdx, 2), '.','MarkerEdgeColor', 'blue'); ueIdRow = dataTipTextRow('UE - ',{num2str(ueIdx)}); s2.DataTipTemplate.DataTipRows(1) = ueIdRow; posRow = dataTipTextRow('Position[X, Y]: ',{['[' num2str(uePosition(ueIdx, :)) ']']}); s2.DataTipTemplate.DataTipRows(2) = posRow; end end % Create the legend if simParameters.NumCells > 1 legend([h1 h2 s1 s2], 'Cell of interest', 'Interfering cells', 'gNodeB', 'UE', 'Location', 'northeastoutside') else legend([h1 s1 s2], 'Cell of interest', 'gNodeB', 'UE', 'Location', 'northeastoutside') end axis auto hold off; daspect([1000,1000,1]); % Set data aspect ratio end function uePositions = generateUEPositions(simParameters) % Return the position of UEs in each cell uePositions = cell(simParameters.NumCells, 1); for cellIdx=1:simParameters.NumCells gnbXCo = simParameters.GNBPosition(cellIdx, 1); % gNB X-coordinate gnbYCo = simParameters.GNBPosition(cellIdx, 2); % gNB Y-coordinate gnbZCo = zeros(simParameters.NumUEs, 1); % gNB Z-coordinate theta = rand(simParameters.NumUEs, 1)*(2*pi); % Expression to calculate position of UEs with in the cell. By default, % it will place the UEs randomly with in the cell r = sqrt(rand(simParameters.NumUEs, 1))*simParameters.CellRadius; x = round(gnbXCo + r.*cos(theta)); y = round(gnbYCo + r.*sin(theta)); uePositions{cellIdx} = [x y gnbZCo]; end end
[1] 3GPP TS 38.104. “NR; передача радио Базовой станции (BS) и прием”. Проект Партнерства третьего поколения; Сеть радиодоступа Technical Specification Group.
[2] 3GPP TS 38.214. “NR; процедуры Физического уровня для данных”. Проект Партнерства третьего поколения; Сеть радиодоступа Technical Specification Group.
[3] 3GPP TS 38.321. “NR; спецификация протокола Среднего управления доступом (MAC)”. Проект Партнерства третьего поколения; Сеть радиодоступа Technical Specification Group.
[4] 3GPP TS 38.322. “NR; спецификация протокола Управления линией радиосвязи (RLC)”. Проект Партнерства третьего поколения; Сеть радиодоступа Technical Specification Group.
[5] 3GPP TS 38.323. “NR; спецификация Пакетного протокола сходимости данных (PDCP)”. Проект Партнерства третьего поколения; Сеть радиодоступа Technical Specification Group.
[6] 3GPP TS 38.331. “NR; спецификация протокола Радио-управления ресурсами (RRC)”. Проект Партнерства третьего поколения; Сеть радиодоступа Technical Specification Group.
[7] 3GPP TR 37.910. “Исследование сам оценка к представлению IMT-2020”. Проект Партнерства третьего поколения; Сеть радиодоступа Technical Specification Group.