Оценка результатов деятельности ячейки NR с интегрированием физического уровня

Этот пример демонстрирует ячейку New Radio (NR) 5G путем интеграции более высоких слоев стека NR с обработкой физического уровня 5G Toolbox™ и оценивает производительность сети в присутствии нарушений канала. Ячейка имеет набор оборудования пользователя (UEs), соединенный с gNB с управлением линией радиосвязи (RLC), средним управлением доступом (MAC) и физическими слоями (PHY) стека NR, установленного на сетевых узлах. Поскольку более быстрый MAC фокусировал симуляции, которые можно переключить на слой PHY передачи, или можно объединяться с пользовательским слоем PHY.

Введение

Пример рассматривает следующие операции в gNB и UEs, которые упрощают восходящий канал (UL) и передают в нисходящем направлении передачи (DL) и приемы.

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

Этот пример модели:

  • Находящийся на пазе UL и планирование DL PUSCH и ресурсов PDSCH, соответственно. Гранулярность временного интервала присвоения UL и присвоения DL является одним пазом.

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

  • Выделение, состоящее из нескольких несмежных участков, ресурсов частотного диапазона в терминах ресурса блокирует группы (RBGs).

  • Асинхронный адаптивный гибридный автоматический повторный запрос (HARQ) механизм в UL и DL.

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

  • Качественное измерение канала DL UEs на основе CSI-RS получено от gNB. По умолчанию элемент ресурса CSI-RS передается в каждом пазе для каждого блока ресурса (RB) в пропускной способности DL для всего UEs. Та же настройка CSI-RS применима ко всему UEs. Пример не демонстрирует звучание опорным сигналом (SRS) для измерения качества канала UL. Качество канала UL принято эквивалентно качество канала DL, измеренное на CSI-RS.

  • Потери при распространении в свободном пространстве (FSPL), аддитивный белый Гауссов шум (AWGN) и распространение кластеризованной линии задержки (CDL) образовывают канал модель.

  • Настройка антенны одного входа одного выхода (SISO).

  • Одна часть пропускной способности через целого поставщика услуг.

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

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

Узел (gNB или UE) является составом слоев стека NR. Классы помощника hNRGNB.m и hNRUE.m создают gNB и узлы UE соответственно, содержа RLC, MAC и слои PHY.

Слой RLC

RLC действует в неподтвержденном режиме (UM) с одним логическим каналом (LCH). Для слоя RLC и hNRGNB.m и hNRUE.m используют hNRUMEntity.m, чтобы реализовать функциональность и передатчика RLC и приемника.

Слой MAC

Для слоя МАКа hNRGNB.m использует класс помощника hNRGNBMAC.m, чтобы реализовать функциональность gNB MAC, и hNRUE.m использует hNRUEMAC.m, чтобы реализовать функциональность УИ МАКА. gNB MAC имеет UL и планировщики DL, которые присваивают UL и ресурсы DL, соответственно к UEs. Для получения дополнительной информации о UL и DL, планирующем присваивать PUSCH и ресурсы PDSCH, смотрите, что NR FDD Планирует пример Оценки результатов деятельности. Планировщики реализованы в hNRSchedulerRoundRobin.m (Круговая стратегия), hNRSchedulerProportionalFair.m (Пропорциональная справедливая стратегия), и hNRSchedulerBestCQI.m (Лучшая стратегия CQI) классы помощника. Все эти планировщики наследованы от базового класса hNRScheduler.m, который содержит базовую функциональность планирования.

Слой PHY и моделирование канала

Пример использует 5G Toolbox™ для операций слоя PHY UE и gNB. На стороне Tx операции включают обработку физического уровня транспортного блока, полученного от MAC и его передачи. На стороне Rx, там обрабатывает полученной формы волны и отправляет декодируемую информацию в MAC. Для получения дополнительной информации о PDSCH и PUSCH обработка цепей, обратитесь к примеру Пропускной способности NR PDSCH и примеру Пропускной способности NR PUSCH, соответственно. Для слоя PHY hNRGNB.m использует класс помощника, hNRGNBPhy.m, чтобы реализовать функциональность gNB PHY слоя и hNRUE.m использует hNRUEPhy.m, чтобы реализовать функциональность слоя UE PHY. Для нарушений канала модели FSPL в качестве примера, AWGN и распространение CDL образовывают канал модель.

Пример использует интерполяционную таблицу, чтобы сопоставить полученный сигнал с интерференционным и шумовым отношением (SINR) в индекс CQI для 0,1 частот появления ошибочных блоков (BLER). Интерполяционная таблица соответствует таблице CQI согласно 3GPP таблица 5.2.2.1-3 TS 38.214. Для получения дополнительной информации о процессе генерации этой интерполяционной таблицы, отошлите к 5G NR CQI, Сообщив о примере.

Интерфейс MAC-PHY

Следующее является главными интерфейсными вызовами между слоем MAC и слоем PHY. Для получения дополнительной информации обратитесь к hNRPhyInterface.m.

  • txDataRequest: Запрос от MAC до PHY, чтобы передать любого PDSCH (gNB) или PUSCH (UE). MAC вызывает этот запрос в начале времени Tx. Время вычислений PHY не моделируется в этом примере.

  • rxDataRequest: Запрос от MAC до PHY, чтобы принять любого PUSCH (gNB) или PDSCH (UE). MAC вызывает этот запрос в начале времени Rx.

  • dlTTIRequest: Запрос от МАКа к PHY для неданных передает в нисходящем направлении передачи или приемы. Для gNB этот запрос отправлен gNB MAC для передач DL. Для UE это отправляется УИ МАКОМ за приемами DL. МАК отправляет запрос в начале паза DL для всей запланированной передачи DL или приемов в пазе. Этот интерфейс используется для всей передачи DL и приемов, кроме PDSCH. txDataRequest и rxDataRequest используются для PDSCH. В этом примере gNB MAC использует этот интерфейс, чтобы отправить CSI-RS, и УИ МАК использует его, чтобы получить CSI-RS.

  • registerMACInterfaceFcn: Одноразовая настройка вызывает, чтобы указать функции обратного вызова MAC в ФИ. ФИ Использует коллбэки, чтобы отправить информации стек к MAC. gNB PHY использует коллбэк, чтобы отправить декодируемые пакеты UL в MAC. УИ ФИ использует коллбэки, чтобы отправить декодируемые пакеты DL и качество канала DL, измеренное на CSI-RS к MAC.

Сменный PHY

Можно включить и использовать различные изменения слоя PHY в системе. В запущенной симуляции все узлы используют то же изменение слоя PHY. MAC не знает о типе слоя PHY внизу, потому что MAC использует интерфейс MAC-PHY, чтобы взаимодействовать со слоем PHY. По умолчанию пример использует 5G Toolbox™, чтобы смоделировать слой PHY. Чтобы использовать слой PHY передачи, обратитесь к Планированию NR PUSCH FDD, NR FDD, Планируя Оценку результатов деятельности и TDD NR основанные на символе примеры Оценки результатов деятельности Планирования. Слой PHY передачи не делает никакой обработки физического уровня пакетов.

Настройка сценария

Установите параметры для симуляции.

rng('default'); % Reset the random number generator
simParameters = []; % Clear the simParameters variable

simParameters.NumFramesSim = 30; % Simulation time in terms of number of 10 ms frames
% Number of UEs in the simulation. UEs are assumed to have sequential radio
% network temporary identifiers (RNTIs) from 1 to NumUEs. If you change the
% number of UEs, ensure that the following simulation parameters are array
% of length equal to NumUEs: simParameters.UEDistance,
% simParameters.ULPacketPeriodicityUEs, simParameters.ULPacketSizesUEs,
% simParameters.DLPacketPeriodicityUEs, simParameters.DLPacketSizesUEs
simParameters.NumUEs = 4;
simParameters.UEDistance = [100; 400; 1500; 1000];

% Set the channel bandwidth to 5 MHz and subcarrier spacing (SCS) to 15
% kHz as defined in 3GPP TS 38.104 Section 5.3.2
% RB count for 5 MHz band with 15 kHz SCS. The complete
% bandwidth is assumed to be allotted for PUSCH/PDSCH
simParameters.NumRBs = 25;
simParameters.SCS = 15; % kHz
simParameters.DLCarrierFreq = 2.635e9; % Hz
simParameters.ULCarrierFreq = 2.515e9; % Hz
% The UL and DL carriers are assumed to have symmetric channel
% bandwidth
simParameters.DLBandwidth = 5e6; % Hz
simParameters.ULBandwidth = 5e6; % Hz

simParameters.UETxPower = 23; % Tx power for all the UEs in dBm
simParameters.GNBTxPower = 29; % Tx power for gNB in dBm
simParameters.RxGain = 11; % Receiver antenna gain at gNB

% 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];

simParameters.SchedulerStrategy = 'PF'; % Supported scheduling strategies: 'PF', 'RR', and 'BestCQI'
% Maximum limit on the RBs allotted for PUSCH and PDSCH
% Transmission limit is applicable for new PUSCH and PDSCH assignments and
% not for the retransmissions
simParameters.RBAllocationLimitUL = 15; % For PUSCH
simParameters.RBAllocationLimitDL = 15; % For PDSCH

% Logging and Visualization Configuration
% 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

% Enable packet capture (PCAP)
simParameters.PCAPLogging = false; % Set the value to true to enable packet capture for UEofInterest
simParameters.UEofInterest = 1; % Log the packets of UE with this RNTI

% Set the periodic UL and DL application traffic pattern for UEs
simParameters.ULPacketPeriodicityUEs = [10; 20; 20; 30]; % Periodicity (in ms) at which the UL packets are generated by UEs
simParameters.ULPacketSizesUEs = [8000; 8000; 7500; 8500]; % Size of the UL packets (in bytes) generated by UEs
simParameters.DLPacketPeriodicityUEs = [10; 20; 30; 30]; % Periodicity (in ms) at which the DL packets are generated for UEs at gNB
simParameters.DLPacketSizesUEs = [10000; 9000; 7500; 7500]; % Size of the DL packets generated (in bytes) for UEs at gNB

% Validate the simulation configuration
hNRCellPerformanceWithPhysicalLayerValidateConfig(simParameters);

Выведенные параметры

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

simParameters.DuplexMode = 0; % FDD
simParameters.NCellID = 1; % Physical cell ID
simParameters.Position = [0 0 0]; % Position of gNB in (x,y,z) coordinates
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
simParameters.ChannelModelType = 'CDL'; % To model CDL propagation channel
% gNB ensures that PUSCH assignment is received at UEs PUSCHPrepTime ahead
% of the transmission time
simParameters.PUSCHPrepTime = 200; % In microseconds
% 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

% DL and UL packet periodicities for UEs in terms of number of slots
appPeriodicityUEsSlotsUL = simParameters.ULPacketPeriodicityUEs ./ slotDuration;
appPeriodicityUEsSlotsDL = simParameters.DLPacketPeriodicityUEs ./ slotDuration;

simParameters.NumLogicalChannels = 1; % Only 1 logical channel is assumed in each UE in this example

% Mapping between logical channel and logical channel group ID
simParameters.LCHConfig.LCGID = ones(simParameters.NumUEs, simParameters.NumLogicalChannels);
% Priority of each logical channel
simParameters.LCHConfig.Priority = ones(simParameters.NumUEs, simParameters.NumLogicalChannels);
% Prioritized bitrate (in kilo bytes per second) of each logical channel
simParameters.LCHConfig.PBR = 8*ones(simParameters.NumUEs, simParameters.NumLogicalChannels);
% Bucket size duration (BSD) of each logical channel (in ms). However, the priority,
% PBR and BSD for logical channel is not relevant with single logical
% channel assumed in this example
simParameters.LCHConfig.BSD = 10*ones(simParameters.NumUEs, simParameters.NumLogicalChannels);
% Logical channel id (logical channel ID of data radio bearers starts from 4) 
simParameters.LCHConfig.LCID = ones(simParameters.NumUEs, simParameters.NumLogicalChannels) .* (4:4+simParameters.NumLogicalChannels-1);

% RLC entity direction. Value 0 represents DL only, 1
% represents UL only and 2 represents both UL and DL
% direction. Setting entity direction to have both UL and DL
simParameters.RLCConfig.EntityDir = 2*ones(simParameters.NumUEs, simParameters.NumLogicalChannels);

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

gNB и Setup UEs

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

gNB = hNRGNB(simParameters); % Create gNB node
% Create scheduler
switch(simParameters.SchedulerStrategy)
    case 'RR' % Round robin scheduler
        scheduler = hNRSchedulerRoundRobin(simParameters);
    case 'PF' % Proportional fair scheduler
        scheduler = hNRSchedulerProportionalFair(simParameters);
    case 'BestCQI' % Best CQI scheduler
        scheduler = hNRSchedulerBestCQI(simParameters);
end
addScheduler(gNB, scheduler); % Add scheduler to gNB

gNB.PhyEntity = hNRGNBPhy(simParameters); % Create the PHY layer instance
configurePhy(gNB, simParameters); % Configure the PHY layer
setPhyInterface(gNB); % Set the interface to PHY layer

% Create the set of UE nodes
UEs = cell(simParameters.NumUEs, 1);
for ueIdx=1:simParameters.NumUEs
    simParameters.Position = [simParameters.UEDistance(ueIdx) 0 0]; % Position of UE
    UEs{ueIdx} = hNRUE(simParameters, ueIdx);
    UEs{ueIdx}.PhyEntity = hNRUEPhy(simParameters, ueIdx); % Create the PHY layer instance
    configurePhy(UEs{ueIdx}, simParameters); % Configure the PHY layer
    setPhyInterface(UEs{ueIdx}); % Set up the interface to PHY layer
    
    % Setup the logical channels and add application traffic
    for lcIdx = 1:simParameters.NumLogicalChannels
        % Create RLC channel configuration structure
        rlcChannelConfigStruct.EntityType = simParameters.RLCConfig.EntityDir(ueIdx, lcIdx);
        rlcChannelConfigStruct.LogicalChannelID = simParameters.LCHConfig.LCID(ueIdx, lcIdx);
        rlcChannelConfigStruct.LCGID = simParameters.LCHConfig.LCGID(ueIdx, lcIdx);
        rlcChannelConfigStruct.Priority = simParameters.LCHConfig.Priority(ueIdx, lcIdx);
        rlcChannelConfigStruct.PBR = simParameters.LCHConfig.PBR(ueIdx, lcIdx);
        rlcChannelConfigStruct.BSD = simParameters.LCHConfig.BSD(ueIdx, lcIdx);
        % Setup logical channel at gNB for the UE
        configureLogicalChannel(gNB, ueIdx, rlcChannelConfigStruct);
        % Setup logical channel at UE
        configureLogicalChannel(UEs{ueIdx}, ueIdx, rlcChannelConfigStruct);
        
        % Add data traffic pattern generators to gNB and UE nodes
        ulPacketSize = simParameters.ULPacketSizesUEs(ueIdx);
        % Calculate the data rate (in kbps) of On-Off traffic pattern using
        % packet size (in bytes) and packet interval (in ms)
        ulDataRate = ceil(1000/simParameters.ULPacketPeriodicityUEs(ueIdx)) * ulPacketSize * 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 > simParameters.maxRLCSDULength
            ulPacketSize = 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, 'GeneratePacket', true, ...
            'OnTime', simParameters.NumFramesSim/100, 'OffTime', 0, 'DataRate', ulDataRate);
        UEs{ueIdx}.addApplication(ueIdx, simParameters.LCHConfig.LCID(ueIdx, lcIdx), ulApp);
        
        dlPacketSize = simParameters.DLPacketSizesUEs(ueIdx);
        dlDataRate = ceil(1000/simParameters.DLPacketPeriodicityUEs(ueIdx)) * dlPacketSize *8e-3;
        if dlPacketSize > simParameters.maxRLCSDULength
            dlPacketSize = simParameters.maxRLCSDULength;
        end
        
        % Create an object for On-Off network traffic pattern for the specified
        % UE and add it to the gNB. This object generates the downlink data
        % traffic on the gNB for the UE
        dlApp = networkTrafficOnOff('PacketSize', dlPacketSize, 'GeneratePacket', true, ...
            'OnTime', simParameters.NumFramesSim/100, 'OffTime', 0, 'DataRate', dlDataRate);
        gNB.addApplication(ueIdx, simParameters.LCHConfig.LCID(ueIdx, lcIdx), dlApp);
    end
end
% Setup the UL and DL packet distribution mechanism
simParameters.MaxReceivers = simParameters.NumUEs;
% Create DL packet distribution object
dlPacketDistributionObj = hNRPacketDistribution(simParameters, 0); % 0 for DL
% Create UL packet distribution object
ulPacketDistributionObj = hNRPacketDistribution(simParameters, 1); % 1 for UL
hNRSetUpPacketDistribution(simParameters, gNB, UEs, dlPacketDistributionObj, ulPacketDistributionObj);

% Enable PCAP logging
if simParameters.PCAPLogging
    % To generate unique file name for every simulation run
    ueCapturefileName = strcat('CellID-', num2str(simParameters.NCellID), '_ue-',num2str(simParameters.UEofInterest), '_', num2str(now));
    enablePacketLogging(UEs{simParameters.UEofInterest}.PhyEntity, ueCapturefileName);
    
    % Uncomment the below code to enable packet capture at gNB
    % gnbCapturefileName = strcat('CellID-', num2str(simParameters.NCellID), '_gNB-', num2str(now));
    % enablePacketLogging(gNB.PhyEntity, gnbCapturefileName);
end

Обработка цикла

Симуляция является пазом запуска пазом. В каждом пазе выполняются эти операции:

  • Запустите слои MAC и PHY gNB

  • Запустите слои MAC и PHY UEs

  • Специфичное для слоя логгирование и визуализация

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

% To store these UE metrics for each slot: throughput bytes
% transmitted, goodput bytes transmitted, and pending buffer amount bytes.
% The number of goodput bytes is calculated by excluding the
% retransmissions from the total transmissions
UESlotMetricsUL = zeros(simParameters.NumUEs, 3);
UESlotMetricsDL = zeros(simParameters.NumUEs, 3);

% To store current UL and DL CQI values on the RBs for the UEs
uplinkChannelQuality = zeros(simParameters.NumUEs, simParameters.NumRBs);
downlinkChannelQuality = zeros(simParameters.NumUEs, simParameters.NumRBs);

% To store last received new data indicator (NDI) values for UL and DL HARQ processes
HARQProcessStatusUL = zeros(simParameters.NumUEs, 16);
HARQProcessStatusDL = zeros(simParameters.NumUEs, 16);

% Create an object for MAC (UL & DL) scheduling information visualization and logging
simSchedulingLogger = hNRSchedulingLogger(simParameters);
% Create an object for PHY metrics logging and visualization
simPhyLogger = hNRPhyLogger(simParameters);
symbolNum = 0;

% Run processing loop
for slotNum = 1:numSlotsSim
    
    % Run MAC and PHY of gNB
    run(gNB.MACEntity);
    run(gNB.PhyEntity);
    
    % Run MAC and PHY of UEs
    for ueIdx = 1:simParameters.NumUEs
        % Read the last received NDI flags for HARQ processes for
        % logging (Reading it before it gets overwritten by run function of MAC)
        HARQProcessStatusUL(ueIdx, :) = getLastNDIFlagHarq(UEs{ueIdx}.MACEntity, 1); % 1 for UL
        HARQProcessStatusDL(ueIdx, :) = getLastNDIFlagHarq(UEs{ueIdx}.MACEntity, 0); % 0 for DL
        run(UEs{ueIdx}.MACEntity);
        run(UEs{ueIdx}.PhyEntity);
    end
    
    % MAC logging
    % Read UL and DL assignments done by gNB MAC scheduler
    % at current time. Resource assignments returned by a scheduler (either
    % UL or DL) is empty, if either scheduler was not scheduled to run at
    % the current time or no resources got scheduled
    [resourceAssignmentsUL, resourceAssignmentsDL] = getCurrentSchedulingAssignments(gNB.MACEntity);
    % Read throughput and goodput bytes sent for each UE
    [UESlotMetricsDL(:, 1), UESlotMetricsDL(:, 2)] = getTTIBytes(gNB);
    UESlotMetricsDL(:, 3) = getBufferStatus(gNB); % Read pending buffer (in bytes) on gNB, for all the UEs
    for ueIdx = 1:simParameters.NumUEs
        % Read the UL channel quality at gNB for each of the UEs for logging
        uplinkChannelQuality(ueIdx,:) = getChannelQuality(gNB, 1, ueIdx); % 1 for UL
        % Read the DL channel quality at gNB for each of the UEs for logging
        downlinkChannelQuality(ueIdx,:) = getChannelQuality(gNB, 0, ueIdx); % 0 for DL
        % Read throughput and goodput bytes transmitted for this UE in the
        % current TTI for logging
        [UESlotMetricsUL(ueIdx, 1), UESlotMetricsUL(ueIdx, 2)] = getTTIBytes(UEs{ueIdx});
        UESlotMetricsUL(ueIdx, 3) = getBufferStatus(UEs{ueIdx}); % Read pending buffer (in bytes) on UE
    end
    % Log the scheduling logs
    logScheduling(simSchedulingLogger, symbolNum + 1, resourceAssignmentsUL, UESlotMetricsUL, uplinkChannelQuality, HARQProcessStatusUL, 1);
    logScheduling(simSchedulingLogger, symbolNum + 1, resourceAssignmentsDL, UESlotMetricsDL, downlinkChannelQuality, HARQProcessStatusDL, 0);
    
    % PHY logging
    % Read the DL BLER for each UE
    ueBLERStats = zeros(simParameters.NumUEs, 2);
    for ueIdx = 1:simParameters.NumUEs
        ueBLERStats(ueIdx, :) = getDLBLER(UEs{ueIdx}.PhyEntity);
    end
    % Read the UL BLER for each UE
    gNBBLERStats = getULBLER(gNB.PhyEntity);
    % Log the UL and DL error logs
    logBLERStats(simPhyLogger, ueBLERStats, gNBBLERStats);
    
    % Visualization
    % RB assignment visualization (if enabled)
    if simParameters.RBVisualization
        if mod(slotNum, numSlotsFrame) == 0
            plotRBGrids(simSchedulingLogger);
        end
    end
    % CQI grid visualization (if enabled)
    if simParameters.CQIVisualization
        if mod(slotNum, numSlotsFrame) == 0
            plotCQIRBGrids(simSchedulingLogger);
        end
    end
    % If the update periodicity is reached, plot scheduler metrics and PHY metrics visualization
    % at slot boundary
    if mod(slotNum, simParameters.MetricsStepSize) == 0
        plotMetrics(simSchedulingLogger);
        plotMetrics(simPhyLogger);
    end
    
    % Advance timer ticks for gNB and UEs by 14 symbols
    advanceTimer(gNB, 14);
    for ueIdx = 1:simParameters.NumUEs
        advanceTimer(UEs{ueIdx}, 14);
    end
    
    % Symbol number in the simulation
    symbolNum = symbolNum + 14;
end

Визуализация симуляции

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

  • Отображение значений CQI для UEs по пропускной способности PUSCH/PDSCH: Для получения дополнительной информации см. 'Качественное описание' Визуализации Канала фигуры в NR PUSCH FDD, Планируя пример.

  • Отображение присвоения сетки ресурса на UEs: 2D сетка частоты времени показывает распределение ресурсов UEs. Можно включить эту визуализацию в разделе Scenario Configuration. Для получения дополнительной информации см. 'описание' Выделения Сетки Ресурса фигуры в NR PUSCH FDD, Планируя пример.

  • Отображение UL планирование метрических графиков: Для получения дополнительной информации см. 'Восходящее описание' показателей производительности Планировщика фигуры в NR FDD, Планируя пример Оценки результатов деятельности.

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

  • Отображение DL и Частот появления ошибочных блоков UL: Эти два подграфика, отображенные в 'Частоте появления ошибочных блоков (BLER), который Визуализация' показывает частоте появления ошибочных блоков (для каждого UE) наблюдаемый в восходящих и нисходящих направлениях как симуляция, прогрессируют. График обновляется каждый metricsStepSize пазы.

Журналы симуляции

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

Журналы временного шага: И DL и журналы временного шага UL следуют за тем же форматом. Для получения дополнительной информации формата журнала, смотрите раздел 'Simulation Logs' Планирования NR PUSCH FDD.

Планирование журналов присвоения: информация всех присвоений планирования и сопутствующей информации зарегистрирована этот файл. Для получения дополнительной информации формата журнала, смотрите раздел 'Simulation Logs' NR FDD, Планируя пример Оценки результатов деятельности.

Журналы Частоты появления ошибочных блоков: информация о Блочной ошибке, наблюдаемая в восходящих и нисходящих направлениях, зарегистрирована этот файл. Эта таблица показывает демонстрационные записи в журнале.

Каждая строка журнала представляет один паз. Столбец содержит информационный вектор из длины, равной количеству UEs. Информация о UE в индексе, равном его RNTI.

В конце симуляции достигнутое значение для индикаторов производительности системы сравнивается с их теоретическими пиковыми значениями (рассматривающий нулевые издержки). Отображенные показатели эффективности являются достигнутой скоростью передачи данных (UL и DL), достиг спектрального КПД (UL и DL), и BLER, наблюдаемый для UEs (DL и UL). Пиковые значения вычисляются согласно 3GPP TR 37.910.

simulationLogs = cell(1,1);
logInfo = struct('DLTimeStepLogs',[], 'ULTimeStepLogs',[], 'SchedulingAssignmentLogs',[] ,'BLERLogs',[]);
[dlStats, ulStats] = simSchedulingLogger.getPerformanceIndicators(simParameters.ULBandwidth, simParameters.DLBandwidth);
logInfo.BLERLogs = getBLERLogs(simPhyLogger); % Block Error rate logs
fprintf('Peak UL throughput: %0.2f Mbps. Achieved average UL Throughput: %0.2f Mbps', ulStats(1, 1), ulStats(2, 1));
Peak UL throughput: 31.11 Mbps. Achieved average UL Throughput: 7.67 Mbps
fprintf('\nPeak DL throughput: %0.2f Mbps. Achieved average DL Throughput: %0.2f Mbps', dlStats(1, 1), dlStats(2, 1));
Peak DL throughput: 31.11 Mbps. Achieved average DL Throughput: 8.09 Mbps
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));
Peak UL spectral efficiency: 6.22 bits/s/Hz. Achieved average UL spectral efficiency: 1.53 bits/s/Hz 
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: 6.22 bits/s/Hz. Achieved average DL spectral efficiency: 1.62 bits/s/Hz
fprintf('\nBlock error rate for each UE in the uplink direction: %0.2f %0.2f %0.2f %0.2f', logInfo.BLERLogs{end, 5});
Block error rate for each UE in the uplink direction: 0.07 0.04 0.19 0.15
fprintf('\nBlock error rate for each UE in the downlink direction: %0.2f %0.2f %0.2f %0.2f \n', logInfo.BLERLogs{end, 3});
Block error rate for each UE in the downlink direction: 0.01 0.03 0.08 0.05 

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

% Read the logs and save them in MAT-files
[logInfo.DLTimeStepLogs, logInfo.ULTimeStepLogs] = getSchedulingLogs(simSchedulingLogger);
logInfo.SchedulingAssignmentLogs = getGrantLogs(simSchedulingLogger); % Scheduling assignments log
simulationLogs{1} = logInfo;
save(simParameters.ParametersLogFile, 'simParameters'); % Save simulation parameters in a MAT-file
save(simParameters.SimulationLogFile, 'simulationLogs'); % Save simulation logs in a MAT-file

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

Можно использовать этот пример, чтобы далее исследовать эти опции.

Пользовательское планирование

Можно изменить существующую стратегию планирования реализовать пользовательскую. Обратитесь к разделу 'Further Exploration' NR FDD, Планируя пример Оценки результатов деятельности, чтобы видеть включенные шаги.

Используйте физический уровень передачи

Поскольку MAC фокусировал симуляции, можно использовать слой PHY передачи путем установки передачи расположенный на слое объект PHY на узлах. Поскольку gNB создают объект типа hNRGNBPassthroughPhy, и для UE создают объект типа hNRUEPassthroughPhy. Для получения дополнительной информации см. раздел 'gNB and UEs setup' NR FDD, Планируя пример Оценки результатов деятельности.

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

Используйте RLC AM

Можно также переключить рабочий режим сущности RLC от UM до подтвержденного режима (AM) путем изменения входных полей EntityType структуры и SeqNumFieldLength в configureLogicalChannel функция hNRNode.m. Для получения дополнительной информации смотрите раздел 'Further Exploration' NR FDD, Планируя Оценку результатов деятельности.

Приложение

Пример использует эти функции помощника и классы:

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

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

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

  • hNRRLCEntity.m: Базовый класс для RLC UM и сущностей AM

  • hNRUMEntity.m: функциональность RLC UM

  • hNRAMEntity.m: функциональность RLC AM

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

  • hNRRLCBufferStatus.m: Генерирует буферный объект информации о статусе RLC

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

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

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

  • hNRUEMAC.m: функциональность УИ МАКА

  • hNRScheduler.m: Базовая функциональность планировщика MAC

  • hNRSchedulerBestCQI.m: Реализации лучший CQI планирование стратегии

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

  • hNRSchedulerRoundRobin.m: циклический алгоритм Реализаций планирование стратегии

  • hNRMACBSR.m: Генерирует буферный отчет о состоянии

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

  • hNRMACSubPDU.m: Генерирует MAC subPDU

  • hNRMACPaddingSubPDU.m: Генерирует MAC subPDU с дополнением

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

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

  • hNewHARQProcesses.m: Создает новый процесс HARQ

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

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

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

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

  • hNRGNBPassthroughPhy.m: слой PHY передачи gNB

  • hNRUEPassthroughPhy.m: слой PHY передачи UE

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

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

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

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

  • hNRDownlinkGrantFormat.m: DL предоставляют формат

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

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

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

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

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

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

  • hNRCellPerformanceWithPhysicalLayerValidateConfig.m: Подтверждает настройку симуляции

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

  • hNRPacketWriter.m: пакеты MAC Получений

  • hNRPacketInfo.m: формат Метаданных для получения пакетов MAC

  • NRPostSimVisualization.m: Отправьте скрипт визуализации симуляции

Ссылки

[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.

Похожие темы