exponenta event banner

Моделирование пересечений NR с тороидальным наложением

В этом примере моделируется 19-сотовый кластер с тороидальным окружением, как описано в ITU-R M.2101-0. Окружение обеспечивает равномерное пересечение на границе кластера. Все соты в кластере работают в одной полосе частот с обслуживающим gNB в центре соты. Можно включить или отключить наложение, чтобы убедиться, что при наложении метрика производительности граничной ячейки становится похожей на центральную ячейку.

Введение

В примере рассматриваются эти операции в пределах gNB и пользовательского оборудования (UE).

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

  • Межканальные помехи совместного канала с моделированием огибания для удаления краевых эффектов

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

  • Измерение качества канала DL посредством UE на основе CSI-RS, принятого от gNB.

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

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

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

Тороидальное моделирование обтекания

Чтобы смоделировать поведение сотовой сети без введения краевых эффектов, в этом примере моделируется бесконечная сотовая сеть с использованием тороидального обтекания. На этом рисунке показана сетевая область 19 ячеек. В отсутствие обтекания ячейка 0 центрального кластера, показанная красным цветом, равномерно окружена и испытывает помехи со всех сторон. Краевая клетка, подобная клетке-15, испытывает сравнительно меньшую интерференцию. Окружение повторяет исходный кластер шесть раз, чтобы равномерно окружить центральный кластер.

Вся сетевая область, релевантная для моделирования, состоит из 19 ячеек (выделены жирным шрифтом).

В модели огибания сигнал или помехи от любого UE к соте обрабатываются так, как если бы это UE находилось в исходном кластере сот и gNB в любом из семи кластеров, как определено в ITU-R M.2101-0. Расстояния, используемые для вычисления потерь в тракте от узла передатчика в (a, b) до узла приемника в (x, y), являются минимальными из этих семи расстояний.

  • Расстояние между (x, y) и (a, b)

  • Расстояние между (x, y) и (a-3D, b-4D), где D - расстояние между двумя соседними gNB (расстояние между площадками)

  • Расстояние между (x, y) и (a + 3D, b + 4D)

  • Расстояние между (x, y) и (a-32D, b + 72D)

  • Расстояние между (x, y) и (a + 332D, b-72D)

  • Расстояние между (x, y) и (a-532D,b-12D)

  • Расстояние между (x, y) и (a-532D,b-12D)

Для вычисления измененных расстояний между узлами из-за обтекания функция использует класс hNRNodeDityCalculator helper. Если отключить наложение, то расстояние между узлами будет нормальным евклидовым расстоянием.

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

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

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

Конфигурирование параметров моделирования в simParameters структура.

rng('default'); % Reset the random number generator
simParameters = []; % Clear the simParameters variable
simParameters.NumFramesSim = 5; % Simulation time, in number of 10 ms frames
simParameters.EnableWrapAround = true; % Enable wrap-around modeling
simParameters.SchedulingType = 0; % Slot-based scheduling

Укажите количество UE в каждой ячейке, предполагая, что UE имеют последовательные временные идентификаторы радиосети (RNTI) из 1 кому simParameters.NumUEsCell. При изменении количества UE необходимо убедиться, что эти параметры моделирования представляют собой массивы длиной, равной значению simParameters.NumUEsCell: simParameters.UEDistance, ulPacketPeriodicity, ulPacketSizes, dlPacketPeriodicity, dlPacketSizes.

simParameters.NumUEsCell = 2; % Number of UEs in each cell
simParameters.UEDistance = [150; 250]; % Distance of UE from gNB in meters
simParameters.InterSiteDistance = 1732; % Distance between adjacent gNBs in meters

Установите полосу пропускания канала равной 5 МГц, а интервал между поднесущими (SCS) - 15 кГц, как определено в разделе 5,3,2 3GPP TS 38,104.

simParameters.NumRBs = 25;
simParameters.SCS = 15; % kHz
simParameters.DLCarrierFreq = 2.635e9; % Hz
simParameters.ULCarrierFreq = 2.515e9; % Hz

Предположим, что несущие UL и DL имеют одинаковую полосу пропускания канала и определяют мощность передачи и коэффициент усиления антенны.

simParameters.DLBandwidth = 5e6; % Hz
simParameters.ULBandwidth = 5e6; % Hz
simParameters.UETxPower = 23; % Tx power for all the UEs in dBm
simParameters.GNBTxPower = 32; % Tx power for gNBs in dBm
simParameters.GNBRxGain = 8; % Receiver antenna gain at gNB in dBi

Задайте отношение сигнал-помеха-плюс-шум (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];

Укажите стратегию планирования и максимальный предел для RB, выделенных для PUSCH и PDSCH. Предел передачи применяется только к новым назначениям PUSCH и PDSCH, а не к повторным передачам.

simParameters.SchedulerStrategy = 'PF'; % Supported scheduling strategies: 'PF', 'RR', and 'BestCQI'
simParameters.RBAllocationLimitUL = 20; % For PUSCH
simParameters.RBAllocationLimitDL = 20; % For PDSCH 

Конфигурация ведения журнала и визуализации

Укажите идентификатор интересующей ячейки в виде целого числа от 1 до 18 включительно. В примере показаны визуализации и метрики для этой ячейки и центральной ячейки, cell-0.

simParameters.CellOfInterest = 15; % Set a value from 1 to 18. Set the value to 0 to visualize cell-0 only.
validateattributes(simParameters.CellOfInterest, {'numeric'}, {'integer', 'scalar', '>=', 0, '<=', 18}, 'simParameters.CellOfInterest', 'CellOfInterest')

CQIVisualization и RBVisualization параметры управляют отображением визуализации CQI RB и визуализации назначения RB. Чтобы включить график визуализации RB, установите RBVisualization поле в true.

simParameters.CQIVisualization = true;
simParameters.RBVisualization = false;

Периодическое обновление графиков выходных метрик с указанием NumMetricsSteps обновления в моделировании.

simParameters.NumMetricsSteps = 10;

Запишите журналы в MAT-файлы. В примере эти журналы используются для анализа и визуализации после моделирования.

simParameters.ParametersLogFile = 'simParameters'; % For logging the simulation parameters
simParameters.SimulationLogFile = 'simulationLogs'; % For logging the simulation logs

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

Установка периодической схемы трафика приложения UL и DL для UE.

ulPacketPeriodicity = [10; 10]; % Periodicity, in ms, at which the UEs generate UL packets
ulPacketSize = [2e4; 2e4]; % Size of generated UL packets, in bytes
dlPacketPeriodicity = [10; 10]; % Periodicity, in ms, at which gNB generates DL packets
dlPacketSize = [2e4; 2e4]; % Size of generated DL packets, in bytes

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

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

simParameters.DuplexMode = 0; % Frequency-division duplexing (FDD)
simParameters.NumClusters = 1;
simParameters.NumSitesPerCluster = 19; % Number of gNBs per cluster

Установите позиции UE и gNB.

simParameters.GNBPositions = hMacrocellTopology(simParameters);
simParameters.UEPositions = cell(simParameters.NumSitesPerCluster, 1);
for idx = 1:simParameters.NumSitesPerCluster
    theta = rand(simParameters.NumUEsCell, 1)*(2*pi);
    % Set the UE position with respect to the gNB location
    simParameters.UEPositions{idx} = simParameters.GNBPositions(idx, :) + simParameters.UEDistance.*[cos(theta) sin(theta) zeros(simParameters.NumUEsCell, 1)];
end
simParameters.NCellIDList = 0:simParameters.NumSitesPerCluster-1; % List of physical cell IDs

Укажите конфигурацию ресурса CSI-RS, предполагая, что все UE измеряют качество канала на одном ресурсе CSI-RS.

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

Вычислите длительность слота для выбранной 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 it does not exactly divide NumSlotsSim
    simParameters.NumMetricsSteps = floor(numSlotsSim / simParameters.MetricsStepSize);
end

Укажите один логический канал в каждом UE и задайте конфигурацию логического канала для всех узлов (UE и gNB) в примере.

numLogicalChannels = 1;
simParameters.LCHConfig.LCID = 4; % Logical channel ID (logical channel ID of data radio bearers starts from 4)

Укажите направление объекта RLC как 0 для указания только DL, 1 для указания только UL, или 2 для указания как UL, так и DL.

simParameters.RLCConfig.EntityDir = 2;

Создание структуры конфигурации канала 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;
simParameters.MaxReceivers = simParameters.NumSitesPerCluster*(simParameters.NumUEsCell + 1);

if ~isfield(simParameters, 'SchedulingType') || simParameters.SchedulingType == 0 % No scheduling type or slot-based scheduling
    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

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

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

gNB = cell(simParameters.NumSitesPerCluster, 1);
UEs = cell(simParameters.NumSitesPerCluster, simParameters.NumUEsCell);

Создайте объекты распределения пакетов DL и UL и инициализируйте объект калькулятора расстояния обхода.

dlPacketDistributionObj = hNRPacketDistribution(simParameters, 0); % 0 for DL
ulPacketDistributionObj = hNRPacketDistribution(simParameters, 1); % 1 for UL
distCalc = hNRNodeDistanceCalculator(simParameters);
for siteIdx = 1:simParameters.NumSitesPerCluster
    simParameters.NCellID = simParameters.NCellIDList(siteIdx); % Cell ID
    simParameters.Position = simParameters.GNBPositions(siteIdx, :);
    simParameters.NumUEs = simParameters.NumUEsCell; % Number of UEs in a cell
    % 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
    
    % Create gNB
    gNB{siteIdx} = hNRGNB(simParameters);
    addScheduler(gNB{siteIdx}, scheduler); % Add scheduler to gNB
    gNB{siteIdx}.PhyEntity = hNRGNBPhy(simParameters); % Create PHY layer instance
    configurePhy(gNB{siteIdx}, simParameters); % Configure PHY layer
    % Register distance calculator for wrap-around distance computations
    gNB{siteIdx}.DistanceCalculatorFcn = @distCalc.getDistance;
    setPhyInterface(gNB{siteIdx}); % Set up the interface to PHY layer

    for ueIdx = 1:simParameters.NumUEsCell
        simParameters.Position = simParameters.UEPositions{siteIdx}(ueIdx, :); % Position of UE in (x,y,z) coordinates
        UEs{siteIdx, ueIdx} = hNRUE(simParameters, ueIdx);
        UEs{siteIdx, ueIdx}.PhyEntity = hNRUEPhy(simParameters, ueIdx); % Create PHY layer instance
        configurePhy(UEs{siteIdx, ueIdx}, simParameters); % Configure PHY layer
        % Register distance calculator for wrap-around distance computations
        UEs{siteIdx, ueIdx}.DistanceCalculatorFcn =  @distCalc.getDistance;
        setPhyInterface(UEs{siteIdx, ueIdx}); % Set up the interface to PHY

        % Set up logical channel at gNB for the UE
        configureLogicalChannel(gNB{siteIdx}, ueIdx, rlcChannelConfigStruct);
        % Set up logical channel at UE
        configureLogicalChannel(UEs{siteIdx, ueIdx}, ueIdx, rlcChannelConfigStruct);

        % Add data traffic pattern generators to gNB and UE nodes
        % Calculate the data rate (in kbps) of On-Off traffic pattern using
        % packet size (in bytes) and packet interval (in ms)
        ulDataRate = ceil(1000/ulPacketPeriodicity(ueIdx)) * ulPacketSize(ueIdx) * 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 ulPacketSize(ueIdx) > simParameters.maxRLCSDULength
            ulPacketSize(ueIdx) = simParameters.maxRLCSDULength;
        end

        % Create an object for On-Off network traffic pattern and add it to the
        % specified UE. This object generates the uplink data traffic on the UE
        ulApp = networkTrafficOnOff('PacketSize', ulPacketSize(ueIdx), 'GeneratePacket', true, ...
            'OnTime', simParameters.NumFramesSim/100, 'OffTime', 0, 'DataRate', ulDataRate);
        UEs{siteIdx, ueIdx}.addApplication(ueIdx, simParameters.LCHConfig.LCID, ulApp);
        dlDataRate = ceil(1000/dlPacketPeriodicity(ueIdx)) * dlPacketSize(ueIdx) * 8e-3;
        if dlPacketSize(ueIdx) > simParameters.maxRLCSDULength
            dlPacketSize(ueIdx) = 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(ueIdx), 'GeneratePacket', true, ...
            'OnTime', simParameters.NumFramesSim/100, 'OffTime', 0, 'DataRate', dlDataRate);
        gNB{siteIdx}.addApplication(ueIdx, simParameters.LCHConfig.LCID, dlApp);
    end
    % Setup the UL and DL packet distribution mechanism
    hNRSetUpPacketDistribution(simParameters, gNB{siteIdx}, UEs(siteIdx, :), dlPacketDistributionObj, ulPacketDistributionObj);
end

Настройте ведение журнала и визуализацию, указав центральную ячейку (ячейку 0) и интересующую ячейку.

cellsOfInterest = unique([0; simParameters.CellOfInterest]);
numCellsOfInterest = length(cellsOfInterest); % Number of cells that the example logs and visualizes

Визуализация топологии сети

hTopologyVisualizer(simParameters);          

Figure Topology Visualization contains an axes. The axes with title Network Topology Visualization contains 76 objects of type line, text. This object represents UE Positions.

Регистрировать и визуализировать метрики PHY и MAC в массивах ячеек.

simSchedulingLogger = cell(numCellsOfInterest, 1);
% Cell array for PHY metrics logging and visualization
simPhyLogger = cell(numCellsOfInterest, 1);
visualizer = cell(numCellsOfInterest, 1);

for siteIdx = 1:numCellsOfInterest
    simParameters.NCellID = cellsOfInterest(siteIdx);
    simParameters.CellOfInterest = simParameters.NCellID;
    % Create an object for MAC scheduling information visualization and logging
    simSchedulingLogger{siteIdx} = hNRSchedulingLogger(simParameters); 
    % Create an object for PHY layer metrics logging
    simPhyLogger{siteIdx} = hNRPhyLogger(simParameters);
    % Create visualization object for MAC and PHY metrics 
    visualizer{siteIdx} = hNRMetricsVisualizer(simParameters, 'MACLogger', simSchedulingLogger{siteIdx}, 'PhyLogger', simPhyLogger{siteIdx});
end

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

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

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

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

  • Регистрировать и визуализировать метрики для каждого уровня

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

slotNum = 0;
numSymbolsSim = numSlotsSim * 14; % Simulation time in units of symbol duration
% Run processing loop
for symbolNum = 1 : tickGranularity : numSymbolsSim
    if mod(symbolNum - 1, 14) == 0
        slotNum = slotNum + 1;
    end
    % Because all the cells operate on the same SCS, slot durations do not vary
    for siteIdx = 1:simParameters.NumSitesPerCluster % For each site
        run(gNB{siteIdx});

        % Run MAC and PHY layers of UEs
        for ueIdx = 1:simParameters.NumUEsCell
            run(UEs{siteIdx, ueIdx});
        end

        cellIdx = find((siteIdx-1) == cellsOfInterest, 1);
        if ~isempty(cellIdx)
            % MAC logging
            logCellSchedulingStats(simSchedulingLogger{cellIdx}, symbolNum, gNB{siteIdx}, UEs(siteIdx, :));

            % PHY logging
            logCellPhyStats(simPhyLogger{cellIdx}, symbolNum, gNB{siteIdx}, UEs(siteIdx, :));
        end
    end
    
    for siteIdx = 1:simParameters.NumSitesPerCluster
        % Advance timer ticks for gNB and UEs by the number of symbols per slot
        advanceTimer(gNB{siteIdx}, tickGranularity);
        for ueIdx = 1:simParameters.NumUEsCell
            advanceTimer(UEs{siteIdx, ueIdx}, tickGranularity);
        end
    end
    
    for idx = 1:numCellsOfInterest
        % 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{idx});
                end
            end
            % CQI grid visualization (if enabled)
            if simParameters.CQIVisualization
                if mod(slotNum, numSlotsFrame) == 0 % Plot at frame boundary
                    plotCQIRBGrids(simSchedulingLogger{idx});
                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{idx}, slotNum);
            end
        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 - 0 contains 40 objects of type rectangle.

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

for idx = 1:numCellsOfInterest
    [dlStats, ulStats] = getPerformanceIndicators(simSchedulingLogger{idx});
    [logInfo.BLERLogs, logInfo.AvgBLERLogs] = getBLERLogs(simPhyLogger{idx}); % Block Error rate logs
    fprintf('\n\nMetrics for cell %d :\n\n', cellsOfInterest(idx));
    fprintf('Peak UL throughput: %0.2f Mbps. Achieved average UL Throughput: %0.2f Mbps', ulStats(1, 1), ulStats(2, 1));
    fprintf('\nPeak DL throughput: %0.2f Mbps. Achieved average DL Throughput: %0.2f Mbps', dlStats(1, 1), dlStats(2, 1));
    fprintf('\nAchieved average UL Goodput: %0.2f Mbps. Achieved average DL Goodput: %0.2f Mbps', ulStats(5, 1), dlStats(5, 1));
    fprintf('\nPeak UL spectral efficiency: %0.2f bits/s/Hz. Achieved average UL spectral efficiency: %0.2f bits/s/Hz ', ulStats(3, 1), ulStats(4, 1));
    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));
    disp(['Block error rate for each UE in the uplink direction: [' num2str(round(logInfo.AvgBLERLogs(:, 2)', 2)) ']']);
    disp(['Block error rate for each UE in the downlink direction: [' num2str(round(logInfo.AvgBLERLogs(:, 1)', 2)) ']']);
end
Metrics for cell 0 :
Peak UL throughput: 31.11 Mbps. Achieved average UL Throughput: 2.48 Mbps
Peak DL throughput: 31.11 Mbps. Achieved average DL Throughput: 3.19 Mbps
Achieved average UL Goodput: 2.48 Mbps. Achieved average DL Goodput: 3.10 Mbps
Peak UL spectral efficiency: 6.22 bits/s/Hz. Achieved average UL spectral efficiency: 0.50 bits/s/Hz 
Peak DL spectral efficiency: 6.22 bits/s/Hz. Achieved average DL spectral efficiency: 0.64 bits/s/Hz
Block error rate for each UE in the uplink direction: [0  0]
Block error rate for each UE in the downlink direction: [0.04        0.04]
Metrics for cell 15 :
Peak UL throughput: 31.11 Mbps. Achieved average UL Throughput: 2.69 Mbps
Peak DL throughput: 31.11 Mbps. Achieved average DL Throughput: 3.33 Mbps
Achieved average UL Goodput: 2.68 Mbps. Achieved average DL Goodput: 3.24 Mbps
Peak UL spectral efficiency: 6.22 bits/s/Hz. Achieved average UL spectral efficiency: 0.54 bits/s/Hz 
Peak DL spectral efficiency: 6.22 bits/s/Hz. Achieved average DL spectral efficiency: 0.67 bits/s/Hz
Block error rate for each UE in the uplink direction: [0        0.05]
Block error rate for each UE in the downlink direction: [0.04        0.06]

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

Для центральной ячейки (ячейки 0) и интересующей ячейки визуализация времени выполнения показывает:

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

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

Параметры, используемые для моделирования, и журналы моделирования сохраняются в MAT-файлах для анализа и визуализации после моделирования. Параметры моделирования сохраняются в MAT-файле с именем файла в качестве значения параметра конфигурации. simParameters.ParametersLogFile. Для получения дополнительной информации см. пример NR Intercell Interference Modeling.

% Get the logs
if(simParameters.DuplexMode == 0) % FDD
    logInfo = struct('NCellID', [], 'DLTimeStepLogs', [], 'ULTimeStepLogs', [], 'SchedulingAssignmentLogs', [], 'BLERLogs', [], 'AvgBLERLogs', []);
else
    logInfo = struct('TimeStepLogs', [], 'SchedulingAssignmentLogs', [], 'BLERLogs', [], 'AvgBLERLogs', []);
end
simulationLogs = cell(simParameters.NumSitesPerCluster, 1);
for siteIdx = 1:numCellsOfInterest
    logInfo.NCellID = cellsOfInterest(siteIdx);
    if(simParameters.DuplexMode == 0) % FDD
        [logInfo.DLTimeStepLogs, logInfo.ULTimeStepLogs] = getSchedulingLogs(simSchedulingLogger{siteIdx});
    else % TDD
        logInfo.TimeStepLogs = getSchedulingLogs(simSchedulingLogger{siteIdx});
    end
    logInfo.SchedulingAssignmentLogs = getGrantLogs(simSchedulingLogger{siteIdx}); % Scheduling assignments log
    [logInfo.BLERLogs, logInfo.AvgBLERLogs] = getBLERLogs(simPhyLogger{siteIdx}); % Block error rate logs
    simulationLogs{siteIdx, 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

Ссылки

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

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