Этот пример демонстрирует кластер с 19 ячейками с тороидальным переносом как описано в ITU-R M.2101-0. Перенос обеспечивает универсальную интерференцию в кластерном ребре. Все ячейки в кластере действуют в том же диапазоне частот с обслуживанием gNB в центре ячейки. Можно включить или отключить перенос, чтобы заметить, что с переносом, показатели производительности ячейки ребра становятся похожими на центральную ячейку.
Пример рассматривает эти операции в gNB и оборудовании пользователя (UE).
Этот пример модели:
Интерференция межъячейки Co-канала со всеобъемлющим моделированием для удаления краевых эффектов
Опорный сигнал демодуляции PUSCH (DM-RS) и PDSCH DM-RS
Качественное измерение канала DL UEs на основе CSI-RS получено от gNB.
Настройка одно входа одно выхода (SISO) со всенаправленными антеннами.
Потери при распространении в свободном пространстве (FSPL) и аддитивный белый Гауссов шум (AWGN).
Пример принимает, что пакеты управления, такие как присвоение UL, присвоение DL, буферный отчет о состоянии (BSR), обратная связь PDSCH, и отчет качественной характеристики канала (CQI), отправляются из полосы, то есть, без потребности ресурсов для передачи и гарантировали безошибочный прием.
Чтобы симулировать поведение сотовой сети, не вводя краевые эффекты, этот пример демонстрирует бесконечную сотовую сеть при помощи тороидального переноса. Этот рисунок показывает сетевую область 19 ячеек. В отсутствие переноса ячейка 0 из центрального кластера, отображенного красным, однородно окружается и испытывает интерференцию со всех сторон. Ячейка ребра как ячейка 15 событий сравнительно меньшая интерференция. Перенос повторяет исходный кластер шесть раз, чтобы однородно окружить центральный кластер.
Целая сетевая область, важная для симуляций, является кластером 19 ячеек (показанный полужирным).
Во всеобъемлющей модели, сигнале или интерференции от любого UE до ячейки обработан, как будто это UE находится в кластере первоначальной ячейки и gNB в любом из этих семи кластеров, как задано в ITU-R M.2101-0. Расстояния использовались для расчета потери на пути от узла передатчика в к узлу приемника в минимум этих семи расстояний.
Расстояние между и
Расстояние между и , где расстояние между двумя смежными gNBs (расстояние межсайта)
Расстояние между и
Расстояние между и
Расстояние между и
Расстояние между и
Расстояние между и
Чтобы вычислить модифицированные расстояния между узлами из-за переноса, используйте hNRNodeDistanceCalculator помощника. Если вы отключаете перенос, то расстояние между узлами является нормальным Евклидовым расстоянием.
Узел (gNB или UE) состоит из приложений, генерирующих трафик, слой управления линией радиосвязи (RLC), слой среднего управления доступом (MAC) и физический уровень (PHY). hNRGNB и hNRUE классы помощника создают gNB и узлы UE, соответственно, содержа RLC, MAC и слои PHY. Для получения дополнительной информации о каждом слое обратитесь к разделу 'NR Protocol Stack' в Оценке результатов деятельности Ячейки NR с примером Интегрирования Физического уровня.
Сконфигурируйте параметры симуляции в simParameters
структура.
rng('default'); % Reset the random number generator simParameters = []; % Clear the simParameters variable simParameters.NumFramesSim = 3; % Simulation time, in number of 10 ms frames simParameters.EnableWrapAround = true; % Enable wrap-around modeling simParameters.SchedulingType = 0; % Slot-based scheduling
Задайте количество UEs в каждой ячейке, приняв, что UEs имеют последовательную радиосеть временные идентификаторы (RNTIs) от 1
к simParameters.NumUEs
. Если вы изменяете количество UEs, необходимо гарантировать, что эти параметры симуляции являются массивами длины, равной значению simParameters.NumUEs
: simParameters.UEDistance
, ulAppDataRate
, dlAppDataRate
.
simParameters.NumUEs = 2; % Number of UEs in each cell simParameters.UEDistance = [150; 250]; % Distance of UEs 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];
Задайте стратегию планирования и максимальный предел на RBS, выделенном для PUSCH и PDSCH. Предел передачи применяется только к новому PUSCH и присвоениям PDSCH, а не к повторным передачам.
simParameters.SchedulerStrategy = 'PF'; % Supported scheduling strategies: 'PF', 'RR', and 'BestCQI' simParameters.RBAllocationLimitUL = 20; % For PUSCH simParameters.RBAllocationLimitDL = 20; % For PDSCH
Задайте ID ячейки интереса как целое число между 1 и 18, включительно. Пример показывает визуализацию и метрики для этой ячейки и центральной ячейки, ячейка 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, установите RBVisualization
поле к true
.
simParameters.CQIVisualization = true; simParameters.RBVisualization = false;
Установите enableTraces
как true
регистрировать трассировки. Если enableTraces
установлен в false
, затем CQIVisualization
и RBVisualization
отключены автоматически, и трассировки не зарегистрированы симуляция. Чтобы ускорить симуляцию, установите enableTraces
к false
.
enableTraces = true;
Пример периодически обновляет метрические графики. Определите номер обновлений во время симуляции.
simParameters.NumMetricsSteps = 3;
Запишите журналы в MAT-файлы. Пример использует эти журналы для постанализа методом моделирования и визуализации.
parametersLogFile = 'simParameters'; % For logging the simulation parameters simulationLogFile = 'simulationLogs'; % For logging the simulation traces simulationMetricsFile = 'simulationMetrics'; % For logging the simulation metrics
Установите периодический UL и шаблон трафика приложения DL для UEs.
ulAppDataRate = [16e3; 16e3]; % UL application data rate in kilo bits per second (kbps) dlAppDataRate = [16e3; 16e3]; % DL application data rate in kbps
Вычислите выведенные параметры на основе первичных параметров конфигурации, заданных в предыдущем разделе, и установите некоторые специфичные для примера константы.
simParameters.DuplexMode = 0; % Frequency-division duplexing (FDD) numSitesPerCluster = 19; % Number of gNBs per cluster
Установите UE и gNB положения.
simParameters.GNBPositions = hMacrocellTopology(simParameters); simParameters.UEPositions = cell(numSitesPerCluster, 1); for idx = 1:numSitesPerCluster theta = rand(simParameters.NumUEs, 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.NumUEs, 1)]; end simParameters.NCellIDList = 0:numSitesPerCluster-1; % List of physical cell IDs
Задайте настройку ресурса CSI-RS, приняв, что все UEs измеряют качество канала на том же ресурсе CSI-RS.
csirsConfig = cell(1, numSitesPerCluster); for cellIdx = 1:numSitesPerCluster % Possible row numbers for single transmit antenna case are 1 and 2 csirsConfig{cellIdx} = nrCSIRSConfig('NID', simParameters.NCellIDList(cellIdx), 'NumRB', simParameters.NumRBs, 'RowNumber', 2, 'SubcarrierLocations', 1, 'SymbolLocations', 0); end csiReportConfig = struct('SubbandSize', 8, 'CQIMode', 'Subband'); simParameters.CSIReportConfig = {csiReportConfig};
Вычислите длительность паза для выбранного 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 и установите логическую настройку канала для всех узлов (UEs и gNBs) в примере.
numLogicalChannels = 1;
simParameters.LCHConfig.LCID = 4; % Logical channel ID (logical channel ID of data radio bearers starts from 4)
Задайте тип сущности RLC в области значений [0, 3]. Значения 0, 1, 2, и 3 указывают на RLC UM однонаправленная сущность DL, RLC UM однонаправленная сущность UL, RLC UM двунаправленная сущность и сущность RLC AM, соответственно.
simParameters.RLCConfig.EntityType = 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.EntityType; rlcChannelConfigStruct.LogicalChannelID = simParameters.LCHConfig.LCID;
Установите максимальную длину модуля эксплуатационных данных (SDU) RLC, в байтах, как задано в 3GPP TS 38.323 и общее количество узлов в симуляции.
maxRLCSDULength = 9000; simParameters.MaxReceivers = numSitesPerCluster*(simParameters.NumUEs + 1); % Number of nodes if ~isfield(simParameters, 'SchedulingType') || simParameters.SchedulingType == 0 % No scheduling type or slot-based scheduling tickGranularity = 14; simParameters.PUSCHMappingType = 'A'; simParameters.PDSCHMappingType = 'A'; else % Symbol-based scheduling tickGranularity = 1; simParameters.PUSCHMappingType = 'B'; simParameters.PDSCHMappingType = 'B'; end
Настройте топологию с 19 ячейками с каждой ячейкой, состоящей из одного gNB и одного UE. Для каждой ячейки создайте gNB и объекты UE, инициализируйте информацию о качестве канала для UEs и настройте логический канал в gNB и UEs. hNRGNB и hNRUE классы помощника создают gNB и узлы UE соответственно, содержа RLC, MAC и слои PHY.
gNB = cell(numSitesPerCluster, 1); UEs = cell(numSitesPerCluster, simParameters.NumUEs);
Создайте DL и пакетные объекты распределения UL, и инициализируйте всеобъемлющий объект калькулятора расстояния.
% Create packet distribution object packetDistributionObj = hNRPacketDistribution(simParameters); distCalcFcn = hNRNodeDistanceCalculator(simParameters.InterSiteDistance); % Function handle to calculate wrap-around distances cellParam = simParameters; for siteIdx = 1:numSitesPerCluster cellParam.NCellID = simParameters.NCellIDList(siteIdx); % Cell ID cellParam.Position = simParameters.GNBPositions(siteIdx, :); cellParam.CSIRSConfig = csirsConfig(siteIdx); % Create scheduler switch(simParameters.SchedulerStrategy) case 'RR' % Round robin scheduler scheduler = hNRSchedulerRoundRobin(cellParam); case 'PF' % Proportional fair scheduler scheduler = hNRSchedulerProportionalFair(cellParam); case 'BestCQI' % Best CQI scheduler scheduler = hNRSchedulerBestCQI(cellParam); end % Create gNB gNB{siteIdx} = hNRGNB(cellParam); addScheduler(gNB{siteIdx}, scheduler); % Add scheduler to gNB gNB{siteIdx}.PhyEntity = hNRGNBPhy(cellParam); % Create PHY layer instance configurePhy(gNB{siteIdx}, cellParam); % Configure PHY layer if simParameters.EnableWrapAround % Register distance calculator at gNB for wrap-around distance computations gNB{siteIdx}.DistanceCalculatorFcn = distCalcFcn; end setPhyInterface(gNB{siteIdx}); % Set up the interface to PHY layer ueParam = cellParam; for ueIdx = 1:simParameters.NumUEs ueParam.Position = simParameters.UEPositions{siteIdx}(ueIdx, :); % Position of UE in (x,y,z) coordinates ueParam.CSIReportConfig = csiReportConfig; UEs{siteIdx, ueIdx} = hNRUE(ueParam, ueIdx); UEs{siteIdx, ueIdx}.PhyEntity = hNRUEPhy(ueParam, ueIdx); % Create PHY layer instance configurePhy(UEs{siteIdx, ueIdx}, ueParam); % Configure PHY layer if simParameters.EnableWrapAround % Register distance calculator at the UEs for wrap-around distance computations UEs{siteIdx, ueIdx}.DistanceCalculatorFcn = distCalcFcn; end 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 % 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', maxRLCSDULength, 'GeneratePacket', true, ... 'OnTime', simParameters.NumFramesSim/100, 'OffTime', 0, 'DataRate', ulAppDataRate(ueIdx)); UEs{siteIdx, ueIdx}.addApplication(ueIdx, simParameters.LCHConfig.LCID, ulApp); % 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', maxRLCSDULength, 'GeneratePacket', true, ... 'OnTime', simParameters.NumFramesSim/100, 'OffTime', 0, 'DataRate', dlAppDataRate(ueIdx)); gNB{siteIdx}.addApplication(ueIdx, simParameters.LCHConfig.LCID, dlApp); end % Setup the UL and DL packet distribution mechanism hNRSetUpPacketDistribution(cellParam, gNB{siteIdx}, UEs(siteIdx, :), packetDistributionObj); end
Настройте логгирование и визуализацию, задав центральную ячейку (ячейка 0) и ячейка интереса.
cellsOfInterest = unique([0; simParameters.CellOfInterest]);
numCellsOfInterest = length(cellsOfInterest); % Number of cells that the example logs and visualizes
Визуализируйте сетевую топологию
hTopologyVisualizer(simParameters);
Регистрируйте и визуализируйте MAC и метрики PHY и трассировки.
simSchedulingLogger = cell(numCellsOfInterest, 1); simPhyLogger = cell(numCellsOfInterest, 1); metricsVisualizer = cell(numCellsOfInterest, 1); for siteIdx = 1:numCellsOfInterest simParameters.NCellID = cellsOfInterest(siteIdx); if enableTraces % Create an object for MAC scheduling traces logging simSchedulingLogger{siteIdx} = hNRSchedulingLogger(simParameters); % Create an object for PHY layer traces logging simPhyLogger{siteIdx} = hNRPhyLogger(simParameters); if simParameters.CQIVisualization || simParameters.RBVisualization gridVisualizer = hNRGridVisualizer(simParameters, 'CellOfInterest', simParameters.NCellID, 'MACLogger', simSchedulingLogger{siteIdx}); end end % Create visualization object for MAC and PHY metrics nodes = struct('UEs', {UEs(simParameters.NCellID+1, :)}, 'GNB', gNB{simParameters.NCellID+1}); metricsVisualizer{siteIdx} = hNRMetricsVisualizer(simParameters, 'Nodes', nodes, 'CellOfInterest', simParameters.NCellID, ... 'EnableSchedulerMetricsPlots', true, 'EnablePhyMetricsPlots', true); end
Симуляция является пазом запуска пазом. Для каждой ячейки, в каждом пазе, выполняются эти операции:
Запустите слои MAC и PHY gNB
Запустите слои MAC и PHY UEs
Регистрируйте и визуализируйте метрики для каждого слоя
Усовершенствуйте таймер для узлов и отправьте триггер в приложение и слои RLC каждая миллисекунда. Прикладной уровень и слой RLC выполняют их запланированные операции на основе триггера таймера на 1 мс.
slotNum = 0; numSymbolsSim = numSlotsSim * 14; % Simulation time in units of symbol duration (assuming normal cyclic prefix) % 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:numSitesPerCluster % For each site run(gNB{siteIdx}); % Run MAC and PHY layers of UEs for ueIdx = 1:simParameters.NumUEs run(UEs{siteIdx, ueIdx}); end if enableTraces 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 end for siteIdx = 1:numSitesPerCluster % Advance timer ticks for gNB and UEs by the number of symbols per slot advanceTimer(gNB{siteIdx}, tickGranularity); for ueIdx = 1:simParameters.NumUEs advanceTimer(UEs{siteIdx, ueIdx}, tickGranularity); end end % Visualization for idx = 1:numCellsOfInterest % Check slot boundary if symbolNum > 1 && ((simParameters.SchedulingType == 1 && mod(symbolNum, 14) == 0) || (simParameters.SchedulingType == 0 && mod(symbolNum-1, 14) == 0)) % If the update periodicity is reached, plot scheduler metrics and PHY metrics at slot boundary if mod(slotNum, simParameters.MetricsStepSize) == 0 plotLiveMetrics(metricsVisualizer{idx}); end end end end
Получите метрики симуляции simParameters.CellOfInterest
и сохраните его в MAT-файле. Метрики симуляции сохранены в MAT-файле с именем файла как simulationMetricsFile
. В конце симуляции достигнутое значение для индикаторов производительности системы сравнивается с их теоретическими пиковыми значениями (рассматривающий нулевые издержки). Отображенные показатели эффективности являются достигнутой скоростью передачи данных (UL и DL), достиг спектрального КПД (UL и DL), и BLER, наблюдаемый для UEs (DL и UL). Пиковые значения вычисляются согласно 3GPP TR 37.910.
metricsList = cell(numCellsOfInterest, 1); metricStruct = struct('NCellID',[], 'Metrics',[]); for siteIdx = 1:numCellsOfInterest metricStruct.NCellID = cellsOfInterest(siteIdx); metricStruct.Metrics = getMetrics(metricsVisualizer{siteIdx}); metricsList{siteIdx} = metricStruct; % Display the performance indicators fprintf('\n\nMetrics for cell %d :\n\n', metricStruct.NCellID); displayPerformanceIndicators(metricsVisualizer{siteIdx}) end
Metrics for cell 0 :
Peak UL Throughput: 31.11 Mbps. Achieved Cell UL Throughput: 3.20 Mbps Achieved UL Throughput for each UE: [2.05 1.15] Achieved Cell UL Goodput: 3.20 Mbps Achieved UL Goodput for each UE: [2.05 1.15] Peak UL spectral efficiency: 6.22 bits/s/Hz. Achieved UL spectral efficiency for cell: 0.64 bits/s/Hz Peak DL Throughput: 31.11 Mbps. Achieved Cell DL Throughput: 4.35 Mbps Achieved DL Throughput for each UE: [2.64 1.71] Achieved Cell DL Goodput: 3.94 Mbps Achieved DL Goodput for each UE: [2.57 1.37] Peak DL spectral efficiency: 6.22 bits/s/Hz. Achieved DL spectral efficiency for cell: 0.79 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.037 0.074]
Metrics for cell 15 :
Peak UL Throughput: 31.11 Mbps. Achieved Cell UL Throughput: 3.34 Mbps Achieved UL Throughput for each UE: [2.22 1.12] Achieved Cell UL Goodput: 3.34 Mbps Achieved UL Goodput for each UE: [2.22 1.12] Peak UL spectral efficiency: 6.22 bits/s/Hz. Achieved UL spectral efficiency for cell: 0.67 bits/s/Hz Peak DL Throughput: 31.11 Mbps. Achieved Cell DL Throughput: 4.59 Mbps Achieved DL Throughput for each UE: [2.87 1.71] Achieved Cell DL Goodput: 4.24 Mbps Achieved DL Goodput for each UE: [2.87 1.37] Peak DL spectral efficiency: 6.22 bits/s/Hz. Achieved DL spectral efficiency for cell: 0.85 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 0.074]
save(simulationMetricsFile, 'metricsList');
Для центральной ячейки (ячейка 0) и ячейка интереса, визуализация времени выполнения показывает:
Отображение значений CQI: Для получения дополнительной информации см. 'Качественное описание' Визуализации Канала фигуры в NR PUSCH FDD, Планируя пример.
Отображение присвоения сетки ресурса на UEs: 2D сетка частоты времени показывает распределение ресурсов UEs. Можно включить эту визуализацию в разделе 'Logging and Visualization Configuration'. Для получения дополнительной информации см. 'описание' Выделения Сетки Ресурса фигуры в NR PUSCH FDD, Планируя пример.
Отображение DL и UL планирование метрических графиков: Для получения дополнительной информации см. 'Нисходящее описание' показателей производительности Планировщика фигуры в NR FDD, Планируя пример Оценки результатов деятельности.
Отображение DL и Частот появления ошибочных блоков UL: Для получения дополнительной информации смотрите 'Частоту появления ошибочных блоков (BLER) Визуализация' описание фигуры в Оценке результатов деятельности Ячейки NR с примером Интегрирования Физического уровня.
Результаты симуляции показывают, что центральная ячейка и ячейка ребра имеют подобные показатели производительности с, повторяются. Ниже результаты симуляции без переноса. Можно наблюдать значительное различие в производительности между центральной ячейкой и ячейкой ребра.
Параметры, используемые для симуляции и журналов симуляции, сохранены в MAT-файлах для постанализа методом моделирования и визуализации. Параметры симуляции сохранены в MAT-файле с именем файла как значение параметра конфигурации parametersLogFile
. Для получения дополнительной информации смотрите, что Интерференция Межъячейки NR Моделирует пример.
if enableTraces % Get the logs simulationLogs = cell(numSitesPerCluster, 1); for siteIdx = 1:numCellsOfInterest if(simParameters.DuplexMode == 0) % FDD logInfo = struct('NCellID', [], 'DLTimeStepLogs', [], 'ULTimeStepLogs', [], 'SchedulingAssignmentLogs', [], 'BLERLogs', [], 'AvgBLERLogs', []); [logInfo.DLTimeStepLogs, logInfo.ULTimeStepLogs] = getSchedulingLogs(simSchedulingLogger{siteIdx}); else % TDD logInfo = struct('TimeStepLogs', [], 'SchedulingAssignmentLogs', [], 'BLERLogs', [], 'AvgBLERLogs', []); logInfo.TimeStepLogs = getSchedulingLogs(simSchedulingLogger{siteIdx}); end logInfo.NCellID = cellsOfInterest(siteIdx); logInfo.SchedulingAssignmentLogs = getGrantLogs(simSchedulingLogger{siteIdx}); % Scheduling assignments log [logInfo.BLERLogs, logInfo.AvgBLERLogs] = getBLERLogs(simPhyLogger{siteIdx}); % BLER logs simulationLogs{siteIdx, 1} = logInfo; end save(parametersLogFile, 'simParameters'); % Save simulation parameters in a MAT-file save(simulationLogFile, 'simulationLogs'); % Save simulation logs in a MAT-file end
[1] 3GPP TS 38.104. “NR; передача радио Базовой станции (BS) и прием”. Проект Партнерства третьего поколения; Сеть радиодоступа Technical Specification Group.
[2] 3GPP TS 38.214. “NR; процедуры Физического уровня для данных”. Проект Партнерства третьего поколения; Сеть радиодоступа Technical Specification Group.
[3] 3GPP TS 38.321. “NR; спецификация протокола Среднего управления доступом (MAC)”. Проект Партнерства третьего поколения; Сеть радиодоступа Technical Specification Group.
[4] 3GPP TS 38.322. “NR; спецификация протокола Управления линией радиосвязи (RLC)”. Проект Партнерства третьего поколения; Сеть радиодоступа Technical Specification Group.
[5] 3GPP TS 38.323. “NR; спецификация Пакетного протокола сходимости данных (PDCP)”. Проект Партнерства третьего поколения; Сеть радиодоступа Technical Specification Group.
[6] 3GPP TS 38.331. “NR; спецификация протокола Радио-управления ресурсами (RRC)”. Проект Партнерства третьего поколения; Сеть радиодоступа Technical Specification Group.
[7] 3GPP TR 37.910. “Исследование сам оценка к представлению IMT-2020”. Проект Партнерства третьего поколения; Сеть радиодоступа Technical Specification Group.