Моделирование интерференции межъячейки NR

Этот пример показывает удар на производительность сети, должную передавать в нисходящем направлении интерференцию межъячейки (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-канала. Ячейки Co-канала могут вмешаться в передачи между ними.

Рассмотрите эту демонстрационную сетевую топологию, состоящую из 3 ячеек. Ячейка 1 и ячейка 3 работает с тем же диапазоном частот. Ячейка 2 работает с различным диапазоном частот и не вмешивается в ячейку 1 или ячейка 3.

Стек протокола NR

Узел (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

Многоэлементный Setup

Настройте ячейки с отдельной ячейкой, состоящей из одного 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);

Figure Network Topology Visualization contains an axes object. The axes object with title Network Topology Visualization contains 18 objects of type line, scatter. These objects represent Interfering cells, Cell of interest, gNodeB, UE.

Создайте объекты регистрировать трассировки 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

Figure Channel Quality Visualization contains objects of type heatmap, uigridlayout. The chart of type heatmap has title Channel Quality Visualization for Cell ID - 2.

Получите метрики симуляции 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.

Похожие темы