exponenta event banner

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

В этом примере показано влияние на производительность сети вследствие интерференции между ячейками нисходящей линии связи (DL), вызываемой соседними ячейками. Модели a в качестве примера 5G сеть New Radio (NR) нескольких клеток, работающих в том же диапазоне частот. Каждая сота имеет gNB, размещенный в центре соты, которая обслуживает набор пользовательских устройств (UE). Стек NR на узлах включает в себя уровни управления радиолинией (RLC), управления доступом к среде (MAC) и физические уровни (PHY).

Введение

В примере рассматриваются следующие операции в gNB и UE, которые облегчают DL-передачи и приемы.

Полный пакет PDSCH передается в первом символе его выделенного набора символов. Приемник обрабатывает пакет в символе сразу после последнего символа в назначенном наборе символов.

Примеры моделей:

  • Межканальные помехи совместного канала.

  • Планирование ресурсов PDSCH на основе слотов и символов DL.

  • Конфигурируемый интервал между поднесущими, приводящий к различным длительным интервалам.

  • Несмежное выделение ресурсов частотной области в виде групп блоков ресурсов (RBG).

  • Опорный сигнал демодуляции PDSCH (DM-RS).

  • Измерение качества канала DL посредством UE на основе CSI-RS, принятого от gNB. По умолчанию элемент ресурса CSI-RS передается в каждом слоте для каждого ресурсного блока (RB) в полосе пропускания DL для всех UE. Одна и та же конфигурация CSI-RS применима ко всем UE в соте.

  • Потери в тракте свободного пространства (FSPL) и аддитивный белый гауссов шум (AWGN).

  • Конфигурация антенны с одним входом и одним выходом (SISO).

  • Одна часть полосы пропускания по всей несущей.

Предполагается, что управляющие пакеты, такие как назначение DL, обратная связь PDSCH и отчет индикатора качества канала (CQI), передаются вне полосы частот, то есть без необходимости в ресурсах для передачи и гарантированного безошибочного приема.

Помехи совместного канала

В сотовых системах каждая ячейка работает на конкретной несущей частоте. Ячейки, работающие на одной несущей частоте, называются ячейками совместного канала. Соты совместного канала могут вмешиваться в передачи между ними.

Рассмотрим пример топологии сети, состоящей из 3 ячеек. Cell-1 и сота-3 работают в одной полосе частот. Cell-2 работает в другой полосе частот и не создает помех соте-1 или соте-3.

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

Узел (gNB или UE) состоит из приложений, генерирующих трафик, помимо RLC, управления доступом к среде (MAC) и PHY. Вспомогательные классы hNRGNB.m и hNRUE.m создают узлы gNB и UE соответственно, содержащие уровни RLC, MAC и PHY. Дополнительные сведения о каждом уровне см. в разделе «Стек протоколов NR» в примере оценки производительности ячеек NR с интеграцией физического уровня.

Конфигурация сценария

Для моделирования задайте следующие ключевые параметры конфигурации.

  • Время моделирования

  • Количество ячеек

  • Радиус ячейки (все UE, подключенные к gNB, находятся в пределах этого расстояния)

  • Позиции gNB

  • Количество UE в каждой ячейке

  • Отношение сигнала к помехе и шуму (SINR) к таблице отображения CQI для частоты ошибок блока 0,1 (BLER). Таблица поиска для отображения принятого SINR в индекс CQI для 0.1 BLER. Справочная таблица соответствует столу CQI согласно 3GPP таблица 5.2.2.1-3 TS 38.214. Для получения дополнительной информации о процессе создания этой справочной таблицы, посмотрите 5G НОМЕР Передачи информации из космоса CSI Сообщение о примере.

  • Мощность передачи gNB

  • Полоса пропускания несущей DL в терминах количества блоков ресурсов (RB)

  • Несущая частота DL

  • Интервал между поднесущими

  • Модель трафика приложения DL

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)

Количество ячеек в моделировании. Предполагается, что ячейки имеют последовательные идентификаторы ячеек (NCellID) из 0 кому NumCells-1. При изменении количества ячеек убедитесь, что количество строк в simParameters.GNBPosition равно NumCells.

simParameters.NumCells = 3; % Number of cells
simParameters.CellRadius = 500; % Radius of each cell (in meters)

N-by-2 матрица представляет положение gNB в координатах (X, Y), гдеN'- количество ячеек в моделировании. Номер строки 'P«представляет координаты X и Y gNB в ячейке, имеющей идентификатор ячейки»P-1'. Например, значение [3000, 600] во 2-й строке представляет координаты (X, Y) gNB в ячейке, имеющей ID 1.

simParameters.GNBPosition = [1700 600;
    3000 600;
    2500 2000];

% Number of UEs in a cell. Each cell contains same number of UEs
simParameters.NumUEsCell = 4;

simParameters.GNBTxPower = 32; % Tx power for gNB (in dBm)

% Set the channel bandwidth to 10 MHz and subcarrier spacing (SCS) to 30 kHz
% as defined in 3GPP TS 38.104 Section 5.3.2.
simParameters.NumRBs = 24;
simParameters.SCS = 30; % kHz
simParameters.DLCarrierFreq = 2.635e9; % Hz
simParameters.DLBandwidth = 10e6; % Hz

% SINR to CQI mapping table for 0.1 BLER
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];

% Maximum limit on the RBs allotted for PDSCH. Transmission limit is
% applicable for new PDSCH assignments and not for the retransmissions
simParameters.RBAllocationLimitDL = 15; % For PDSCH

Настройка регистрации и визуализации.

% Specify the ID of cell of interest. All the visualizations and metrics are shown for this cell
simParameters.CellOfInterest = 2; % Set a value from 0 to NumCells-1

% The parameters CQIVisualization and RBVisualization control the display
% of these visualizations: (i) CQI visualization of RBs (ii) RB assignment
% visualization. By default, the 'RBVisualization' plot is disabled. You
% can enable it by setting to 'true'
simParameters.CQIVisualization = true;
simParameters.RBVisualization = false;
% The output metrics plots are updated periodically NumMetricsSteps times within the
% simulation duration
simParameters.NumMetricsSteps = 20;
% MAT-files to write the logs into. They are used for post simulation analysis and visualization
simParameters.ParametersLogFile = 'simParameters'; % For logging the simulation parameters
simParameters.SimulationLogFile = 'simulationLogs'; % For logging the simulation logs

Настройка трафика приложения.

% Set the periodic DL application traffic model for UEs. The following
% configuration applies for each cell
simParameters.DLPacketPeriodicityUEs = 10; % Periodicity (in ms) at which the DL packets are generated for UEs at gNB
simParameters.DLPacketSizesUEs = 2e4; % Size of the DL packets generated (in bytes) for UEs at gNB

% Validate the simulation configuration
hNRIntercellInterferenceValidateConfig(simParameters);

Производные параметры

На основе основных параметров конфигурации вычислите производные параметры. Кроме того, задайте некоторые конкретные константы примера.

simParameters.DuplexMode = 0; % FDD
simParameters.ULBandwidth = 10e6; % Hz
simParameters.ULCarrierFreq = 2.515e9; % Hz
simParameters.NumUEs = simParameters.NumUEsCell; % Number of UEs in a cell
simParameters.NCellIDList = 0:simParameters.NumCells-1; % List of physical cell IDs

% CSI-RS resource configuration. All UEs are assumed to measure channel quality on same CSI-RS resource
simParameters.CSIRSRowNumber = 2; % Possible row numbers for single transmit antenna case are 1 and 2
simParameters.SubbandSize = 8; % Size of sub-band for CQI reporting in terms of number of RBs

% Set the BSRPeriodicity to 'inf' as there is no UL traffic
simParameters.BSRPeriodicity = inf; % In ms

% Slot duration for the selected SCS and number of slots in a 10 ms frame
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

% Interval at which metrics visualization updates in terms of number of
% slots. As one slot is the finest time-granularity of the simulation, make
% sure that MetricsStepSize is an integer
simParameters.MetricsStepSize = ceil(numSlotsSim / simParameters.NumMetricsSteps);
if mod(numSlotsSim, simParameters.NumMetricsSteps) ~= 0
    % Update the NumMetricsSteps parameter if NumSlotsSim is not
    % completely divisible by it
    simParameters.NumMetricsSteps = floor(numSlotsSim / simParameters.MetricsStepSize);
end

numLogicalChannels = 1; % Only 1 logical channel is assumed in each UE in this example

% Logical channel configuration applies for all the nodes (UEs and gNBs) in the simulation
simParameters.LCHConfig.LCID = 4;

% RLC entity direction. Value 0 represents DL only, 1
% represents UL only and 2 represents both UL and DL
% directions. Setting entity direction to have both UL and DL
simParameters.RLCConfig.EntityDir = 0;

% Create RLC channel configuration structure
rlcChannelConfigStruct.LCGID = 1; % Mapping between logical channel and logical channel group ID
rlcChannelConfigStruct.Priority = 1; % Priority of each logical channel
rlcChannelConfigStruct.PBR = 8; % Prioritized bitrate (PBR), in kilobytes per second, of each logical channel
rlcChannelConfigStruct.BSD = 10; % Bucket size duration (BSD), in ms, of each logical channel
rlcChannelConfigStruct.EntityType = simParameters.RLCConfig.EntityDir;
rlcChannelConfigStruct.LogicalChannelID = simParameters.LCHConfig.LCID;

% Maximum RLC service data unit (SDU) length (in bytes) as per 3GPP TS 38.323
simParameters.maxRLCSDULength = 9000;

% Generate the positions of UEs in each cell
simParameters.UEPosition = generateUEPositions(simParameters);

% Total number of UEs in the simulation
simParameters.MaxReceivers = simParameters.NumCells * simParameters.NumUEsCell;

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)
    tickGranularity = 14;
    simParameters.PUSCHMappingType = 'A';
    simParameters.PDSCHMappingType = 'A';
else % Symbol based scheduling
    rbAssignmentPlotPeriodicity = 1; % Update RB assignment visualization every slot
    tickGranularity = 1;
    simParameters.PUSCHMappingType = 'B';
    simParameters.PDSCHMappingType = 'B';
end

Настройка мультиклетки

Установка ячеек с отдельной ячейкой, состоящей из одного gNB и нескольких UE. Для каждой соты создайте объекты gNB и UE, инициализируйте информацию о качестве канала для UE и настройте логический канал в gNB и UE. Вспомогательные классы hNRGNB.m и hNRUE.m создают узлы gNB и UE соответственно, содержащие уровни RLC, MAC и PHY.

gNB = cell(simParameters.NumCells, 1);
UEs = cell(simParameters.NumCells, simParameters.NumUEsCell);
% Create DL packet distribution object
dlPacketDistributionObj = hNRPacketDistribution(simParameters, 0); % 0 for DL
% Create UL packet distribution object
ulPacketDistributionObj = hNRPacketDistribution(simParameters, 1); % 1 for UL

for cellIdx = 1:simParameters.NumCells % For each cell
    
    simParameters.NCellID = simParameters.NCellIDList(cellIdx); % Cell ID
    simParameters.Position = [simParameters.GNBPosition(cellIdx, :) 0]; % gNB position in (x,y,z) coordinates
    gNB{cellIdx} = hNRGNB(simParameters); % Create gNB node
    scheduler = hNRSchedulerProportionalFair(simParameters); % Create proportional fair scheduler
    addScheduler(gNB{cellIdx}, scheduler); % Add scheduler to gNB
    
    gNB{cellIdx}.PhyEntity = hNRGNBPhy(simParameters); % Create the PHY layer instance
    configurePhy(gNB{cellIdx}, simParameters); % 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.NumUEsCell
        simParameters.Position = [simParameters.UEPosition{cellIdx}(ueIdx, :) 0]; % Position of UE in (x,y,z) coordinates
        UEs{cellIdx, ueIdx} = hNRUE(simParameters, ueIdx);
        UEs{cellIdx, ueIdx}.PhyEntity = hNRUEPhy(simParameters, ueIdx); % Create the PHY layer instance
        configurePhy(UEs{cellIdx, ueIdx}, simParameters); % 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 data traffic pattern generators to gNB node
        packetSize = simParameters.DLPacketSizesUEs;
        % Calculate the data rate (in kbps) of On-Off traffic pattern using
        % packet size (in bytes) and packet interval (in ms)
        dataRate = ceil(1000/simParameters.DLPacketPeriodicityUEs) * packetSize * 8e-3;
        % Limit the size of the generated application packet to the maximum
        % RLC SDU size. The maximum supported RLC SDU size is 9000 bytes
        if packetSize > simParameters.maxRLCSDULength
            packetSize = 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
        app = networkTrafficOnOff('PacketSize', packetSize, 'GeneratePacket', true, ...
            'OnTime', simParameters.NumFramesSim/100, 'OffTime', 0, 'DataRate', dataRate);
        gNB{cellIdx}.addApplication(ueIdx, simParameters.LCHConfig.LCID, app);
    end
    
    % Setup the UL and DL packet distribution mechanism
    hNRSetUpPacketDistribution(simParameters, gNB{cellIdx}, UEs(cellIdx, :), dlPacketDistributionObj, ulPacketDistributionObj);
end

Цикл обработки

Моделирование выполняется по слоту. Для каждой соты в каждом слоте выполняются следующие операции:

  • Запуск уровней MAC и PHY gNB

  • Запуск уровней MAC и PHY UE

  • Ведение журнала и визуализация на уровне

  • Выполните опережение таймера для узлов. Каждые 1 мс он также посылает триггер на уровни приложений и RLC. Прикладной уровень и уровень RLC выполняют запланированные операции на основе триггера таймера 1 мс.

% Display network topology
plotNetwork(simParameters);

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

simSchedulingLogger = cell(simParameters.NumCells, 1);
simPhyLogger = cell(simParameters.NumCells, 1);
for cellIdx = 1:simParameters.NumCells
    % Create an object for MAC DL scheduling information visualization and logging
    simParameters.NCellID = simParameters.NCellIDList(cellIdx);
    simSchedulingLogger{cellIdx} = hNRSchedulingLogger(simParameters, 0); % 0 for DL
    % Create an object for PHY layer metrics logging
    simPhyLogger{cellIdx} = hNRPhyLogger(simParameters, 0); % 0 for DL
end

% Store the index of cell ID of interest
cellOfInterestIdx = find(simParameters.CellOfInterest == simParameters.NCellIDList);

% Create metrics visualization object for MAC and PHY metrics (DL direction is represented as 0)
visualizer = hNRMetricsVisualizer(simParameters, 'MACLogger', simSchedulingLogger{cellOfInterestIdx}, 'PhyLogger', simPhyLogger{cellOfInterestIdx}, 'VisualizationFlag', 0);

% Run processing loop
slotNum = 0;
numSymbolsSim = numSlotsSim * 14; % Simulation time in units of symbol duration
% 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.NumUEsCell
            run(UEs{cellIdx, ueIdx});
        end

        % MAC logging
        logCellSchedulingStats(simSchedulingLogger{cellIdx}, symbolNum, gNB{cellIdx}, UEs(cellIdx, :), 0); % 0 for DL

        % PHY logging
        logCellPhyStats(simPhyLogger{cellIdx}, symbolNum, gNB{cellIdx}, UEs(cellIdx, :));
    end

    % 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{cellOfInterestIdx});
            end
        end
        % CQI grid visualization (if enabled)
        if simParameters.CQIVisualization
            if mod(slotNum, numSlotsFrame) == 0 % Plot at frame boundary
                plotCQIRBGrids(simSchedulingLogger{cellOfInterestIdx});
            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

    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.NumUEsCell
            advanceTimer(UEs{cellIdx, ueIdx}, tickGranularity);
        end
    end
end

Figure Channel Quality Visualization contains an axes and other objects of type uicontrol. The axes with title Channel Quality Visualization for Cell ID - 2 contains 80 objects of type rectangle.

Визуализация моделирования

Показаны пять типов визуализации во время выполнения:

  • Отображение топологии сети: на рисунке показана сконфигурированная топология ячеек. Для каждой соты она показывает положение gNB и подключенных UE.

  • Отображение значений CQI для UE по полосе пропускания PDSCH: Для получения подробной информации см. описание фигуры «Визуализация качества канала» в примере планирования NR PUSCH FDD.

  • Отображение назначения сети ресурсов для UE: 2D Временная частотная сетка показывает распределение ресурсов для UE. Эту визуализацию можно включить в разделе Конфигурация регистрации и визуализации. Для получения дополнительной информации см. описание рисунка «Распределение матрицы ресурсов» в примере планирования NR PUSCH FDD.

  • Отображение графиков метрик планирования DL: Для получения подробной информации см. описание показателя производительности планировщика Downlink в примере оценки производительности планирования NR FDD.

  • Отображение частоты ошибок блоков DL: Для получения подробной информации см. описание рисунка «Частота ошибок блоков (BLER)» в примере «Оценка производительности ячеек NR с интеграцией физического уровня».

Журналы моделирования

Параметры, используемые для моделирования, и журналы моделирования сохраняются в MAT-файлах для анализа и визуализации после моделирования. Параметры моделирования сохраняются в MAT-файле с именем файла в качестве значения параметра конфигурации. simParameters.ParametersLogFile. Журналы каждого шага времени, журналы назначения планирования и журналы BLER регистрируются для каждой ячейки в моделировании и сохраняются в MAT-файле. simParameters.SimulationLogFile. После моделирования откройте файл для загрузки NCellID, DLTimeStepLogs, SchedulingAssignmentLogs, и BLERLogs в рабочей области.

NCellID: сохраняет идентификатор ячейки и представляет ячейку, к которой принадлежат журналы моделирования.

Журналы шага DL Time: хранит журналы моделирования для каждого слота в виде одной строки в моделировании. Для получения подробной информации о формате журнала см. раздел «Журналы моделирования» в примере планирования NR PUSCH FDD.

Журналы назначений планирования: В этот файл заносится информация обо всех назначениях планирования и соответствующая информация. Для получения подробной информации о формате журнала см. раздел «Журналы моделирования» в примере оценки производительности планирования NR FDD.

Блочные журналы частоты ошибок: В этот файл заносится информация обо всех назначениях планирования и соответствующая информация. Для получения подробной информации о формате журнала см. раздел «Журналы моделирования» в примере оценки производительности ячеек NR с интеграцией физического уровня.

Чтобы получить визуализацию журналов после моделирования, можно запустить сценарий NRPostSimVisualization. Дополнительные сведения о параметрах запуска этого сценария см. в примере оценки производительности планирования NR FDD.

dlStats = getPerformanceIndicators(simSchedulingLogger{simParameters.CellOfInterest + 1});
[~, avgBLERLogs] = getBLERLogs(simPhyLogger{simParameters.CellOfInterest + 1});
fprintf('\nPeak DL throughput: %0.2f Mbps. Achieved average DL Throughput: %0.2f Mbps', dlStats(1, 1), dlStats(2, 1));
Peak DL throughput: 59.72 Mbps. Achieved average DL Throughput: 9.07 Mbps
fprintf('\nAchieved average DL Goodput: %0.2f Mbps', dlStats(5, 1));
Achieved average DL Goodput: 8.98 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: 5.97 bits/s/Hz. Achieved average DL spectral efficiency: 0.91 bits/s/Hz
disp(['Block error rate for each UE in the downlink direction: [' num2str(round(avgBLERLogs(:, 1)', 2)) ']']);
Block error rate for each UE in the downlink direction: [0.01           0        0.04        0.03]
% Get the logs
if(simParameters.DuplexMode == 0) % FDD
    logInfo = struct('NCellID', [], 'DLTimeStepLogs', [], 'SchedulingAssignmentLogs', [], 'BLERLogs', [], 'AvgBLERLogs', []);
else
    logInfo = struct('NCellID', [], 'TimeStepLogs', [], 'SchedulingAssignmentLogs', [], 'BLERLogs', [], 'AvgBLERLogs', []);
end
simulationLogs = cell(simParameters.NumCells, 1);
for cellIdx = 1:simParameters.NumCells
    logInfo.NCellID = simParameters.NCellIDList(cellIdx);
    if(simParameters.DuplexMode == 0) % FDD
        logInfo.DLTimeStepLogs = getSchedulingLogs(simSchedulingLogger{cellIdx});
    else % TDD
        logInfo.TimeStepLogs = getSchedulingLogs(simSchedulingLogger{cellIdx});
    end
    logInfo.SchedulingAssignmentLogs = getGrantLogs(simSchedulingLogger{cellIdx}); % Scheduling assignments log
    logInfo.BLERLogs = getBLERLogs(simPhyLogger{cellIdx}); % Block error rate logs
    simulationLogs{cellIdx, 1} = logInfo;
end
save(simParameters.ParametersLogFile, 'simParameters'); % Save simulation parameters in a MAT-file
save(simParameters.SimulationLogFile, 'simulationLogs'); % Save simulation logs in a MAT-file

Дальнейшие исследования

Этот пример можно использовать для дальнейшего изучения этих параметров.

  • Моделирование помех восходящей линии связи между узлами путем конфигурирования конфигурации, связанной с восходящей линией связи. Для получения дополнительной информации см. пример оценки производительности ячеек NR с интеграцией физического уровня.

  • Моделирование сценариев агрессор-жертва: агрессор является источником вмешательства, и жертва страдает из-за вмешательства. Рассмотрим сценарий DL на следующем рисунке. Макро UE находится далеко от базовой станции макросов (BS) и рядом с малой сотой. Малая сота BS препятствует передаче макро BS для макро UE в DL. Из-за этого макро UE страдает от помех со стороны малой ячейки BS. Малая ячейка BS называется агрессором, а макро UE называется жертвой.

  • Моделирование нескольких кластеров, где каждый кластер состоит из ячеек, работающих на разных частотах, и анализ влияния помех на пользователей границ ячеек.

На основе описанных параметров моделирования в примере оценивается производительность системы, измеренная с помощью различных метрик. Различные визуализации показывают производительность системы во время выполнения. Более тщательный анализ после моделирования с использованием сохраненных журналов позволяет получить подробную картину операций, выполняемых в каждом слоте.

Приложение

В примере используются следующие вспомогательные функции и классы:

  • HStartNode.m: базовый класс беспроводного узла

  • hNRNode.m: базовый класс узла NR как для gNB, так и для UE

  • hNRGNB.m: функциональность узла gNB

  • hNRUE.m: функциональные возможности узла UE

  • helperApplication.m: Функциональные возможности прикладного уровня

  • hNRRLEntity.m: Базовый класс для объектов RLC UM и AM

  • hNRUMEntity.m: Функциональные возможности RLC UM

  • hNRAMEntity.m: функциональные возможности RLC AM

  • hNRRLCDataPDUInfo.m: Создание информационного объекта PDU RLC

  • hNRRLCBufferStatus.m: Создает объект информации о состоянии буфера RLC

  • hNRRLCDataRecembly.m: Создание информационного объекта RLC SDU для повторной сборки

  • hNRMAC.m: функциональность базового класса NR MAC

  • hNRGNBMAC.m: функциональность MAC gNB

  • hNRUEMAC.m: Функциональность MAC UE

  • hNRscheduler.m: Основные функции планировщика MAC

  • hNRschedulerBestCQI.m: Реализует лучшую стратегию планирования CQI

  • hNRschedulerHair.m: Реализует стратегию пропорционального справедливого планирования

  • hNRRschedulerRoundRobin.m: Реализует стратегию циклического планирования

  • hNRMACBSR.m: Создание отчета о состоянии буфера

  • hNRMACBSRParser.m: Анализ отчета о состоянии буфера

  • hNRMACSubPDU.m: Создание подPDU MAC

  • hNRMACPaddingSubPDU.m: Создание подPDU MAC с дополнением

  • hNRMACMultiplex.m: генерирует PDU MAC

  • hNRMACPDUParser.m: Синтаксический анализ MAC PDU

  • hNewHARQPprocesses.m: Создание нового процесса HARQ

  • hStartHARQProcess.m: Обновление процесса HARQ

  • hNRPhyInterface.m: Функциональность базового класса NR PHY

  • hNRGNBPhy.m: Функциональность PHY gNB

  • hNRUEPhy.m: Функциональность PHY UE

  • hNRPUSCHInfo.m: Информационная структура PUSCH, передаваемая MAC на уровень PHY

  • hNRPDSCHInfo.m: информационная структура PDSCH передается MAC на уровень PHY

  • hNRRxInfo.m: Информационная структура, передаваемая PHY-уровнем MAC вместе с MAC PDU

  • hNRUplinkGrantFormat.m: формат предоставления UL

  • HNRDownlinkGrantFormat.m: формат гранта DL

  • hNRPacketDistribution.m: Создание объекта распространения пакетов

  • hNRPhyRxBuffer.m: Создает объект буфера приема PHY-сигнала

  • hSkipWeakTimingOffset.m: Пропускать оценки смещения времени со слабой корреляцией

  • hNRRLCLogger.m: Реализует функции регистрации и визуализации статистики RLC

  • hNRRschedulingLogger.m: Реализует функции регистрации и визуализации информации планирования

  • hNRPhyLogger.m: Реализует функции регистрации и визуализации частоты ошибок блоков восходящего и нисходящего каналов

  • hNRIntercellInterferureValidateConfig.m: Проверка конфигурации моделирования

  • hNRSetUpPacketDistribution.m: Настройка функциональности распределения пакетов

  • hNRPacketWriter.m: Захватывает пакеты MAC

  • hNRPacketInfo.m: формат метаданных для захвата MAC-пакетов

  • hNRMetricalVisualizer.m: Реализует функции визуализации метрик

  • NRPostSimVisualization.m: Сценарий визуализации после моделирования

Локальные функции

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([0 4000 0 3000]); % Set axis limits
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
    theta = rand(simParameters.NumUEsCell, 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.NumUEsCell, 1))*simParameters.CellRadius;
    x = round(gnbXCo + r.*cos(theta));
    y = round(gnbYCo + r.*sin(theta));
    uePositions{cellIdx} = [x y];
end
end

Ссылки

[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» Проект партнерства третьего поколения; Техническая спецификация на сеть радиодоступа группы.

Связанные темы