Этот пример демонстрирует функциональность планирования подуровня среднего управления доступом (MAC) стека New Radio (NR) 5G, чтобы присвоить физический восходящий канал совместно использованный канал (PUSCH) ресурсы к набору оборудования статического пользователя (UEs), соединенный с gNB. UEs приняты, чтобы действовать в целой пропускной способности PUSCH. Стратегия планирования управляет разовым частотой разделением ресурсов среди UEs. Пример принимает режим дуплекса деления частоты (FDD). Следовательно, восходящая передача использует все пазы. Обратите внимание на то, что этот пример абстрагирует физический уровень и принимает основанный на вероятности подход с помощью восходящих значений качественной характеристики канала (CQI) для пакетных отказов приема модели. Пример оценивает производительность стратегии планирования в терминах достигнутой пропускной способности MAC и справедливости в разделении ресурсов.
В этом примере показано, как стратегия планирования (управляемый gNB) присваивает восходящие ресурсы среди UEs. Таблица суммирует различные операции в gNB и UEs, который, как рассматривают в этом примере, упростил восходящую передачу.
Планировщик запускается каждый p пазы, чтобы присвоить восходящие ресурсы, где p является сконфигурированной периодичностью планировщика в терминах количества пазов. В каждом запуске это присваивает ресурсы предстоящих пазов (исключая текущий паз) до (и включая) паз, когда планировщик запустился бы затем. Можно выбрать любую из реализованных стратегий планирования: пропорциональная ярмарка (PF), лучший CQI, циклический алгоритм (RR). Различные поддерживаемые входные параметры к восходящему планировщику перечислены наряду со стратегиями планирования, которые рассматривают их.
Два пакета управления, буферный отчет о состоянии (BSR), и восходящее предоставление, приняты, чтобы быть отправленными внеполосные без потребности ресурсов для передачи.
Этот пример модели:
Находящаяся на пазе восходящая гранулярность планирования т.е. временного интервала восходящего предоставления является одним пазом. Несмотря на то, что, символы ссылки демодуляции PUSCH (DM-RS) не моделируются, два символа (согласно PUSCH DM-RS, сопоставляющему тип-A), сохранены неиспользованными.
Выделение, состоящее из нескольких несмежных участков, ресурсов частотного диапазона в терминах ресурса блокирует группы (RBGs).
Конфигурируемый интервал поднесущей (15, 30, 60, 120, 240 кГц) приводящий к различной длительности паза.
Асинхронный восходящий гибридный автоматический повторный запрос (HARQ) механизм.
Механизм повторной передачи с помощью нового индикатора данных (NDI) отмечает существующий в восходящем предоставлении.
Установите ключевые параметры конфигурации для симуляции. Они включают:
Время симуляции.
Количество UEs.
Расстояние UEs от gNB (влияет на восходящие значения CQI для UEs).
Шаблон трафика приложения в UEs, чтобы генерировать трафик.
Пропускная способность PUSCH в терминах количества блоков ресурса (RBS).
Интервал поднесущей: 15, 30, 60, 120, 240 (кГц).
Планирование стратегии: PF, Лучший CQI, RR.
Периодичность BSRs, отправленного UEs, чтобы сообщить gNB о незаконченной буферной сумме.
Начальные восходящие значения CQI для UEs и их механизма обновления.
rng('default'); % Reset the random number generator simParameters = []; % Clear simParameters variable simParameters.NumFramesSim = 500; % Simulation time in terms of number of 10 ms frames % UEs are assumed to have sequential radio network temporary identifiers % (RNTIs) starting from 1 to numUEs simParameters.NumUEs = 4; simParameters.UEDistance = [100 250 700 750]; % Distance of UEs from gNB (in meters) % Mapping between distance from gNB (first column in meters) and maximum % achievable uplink CQI value (second column). For example, if a UE is 700 % meters away from the gNB, it can achieve a maximum CQI value of 10 as the % distance falls within [501, 800] meters range, as per the mapping. Set % distance in increasing order and hence maximum CQI value in decreasing % order simParameters.CQIvsDistance = [ 200 15; 500 12; 800 10; 1000 8; ]; % Set application traffic pattern for UEs. Data is generated on the UEs % periodically simParameters.AppPeriodicityUEs = [500 500 400 400]; % Periodicity of application data generated by UEs (in ms) simParameters.BufferSizesUEs = [180000 150000 120000 100000]; % Size of data (in bytes) generated periodically % RB count for 5MHz band with 15KHz subcarrier spacing (SCS). The complete % bandwidth is assumed to be allotted for PUSCH simParameters.NumPUSCHRBs = 25; simParameters.SCS = 15; % Set scheduler run periodicity in terms of number of slots. Value must be % less than the number of slots in a 10 ms frame simParameters.SchedulerPeriodicity = 4; simParameters.SchedulerStrategy = 'PF'; % Supported scheduling strategies: 'PF', 'RR' and 'BestCQI' % Moving average parameter within range [0, 1] to calculate average data % rate for a UE. It is used in PF scheduling strategy. Parameter value % closer to 1 implies more weightage to the instantaneous data rate. % Parameter value closer to 0 implies more weightage to the past data rate % AverageDataRate = ((1 - MovingAvgDataRateParam) * PastDataRate) + (MovingAvgDataRateParam * InstantaneousDataRate) simParameters.MovingAvgDataRateParam = 0.5; simParameters.EnableHARQ = true; % Flag to enable or disable HARQ. If disabled, there are no retransmissions % Maximum RBs allotted to a UE in a slot for a PUSCH transmission (Limit is % applicable for new PUSCH assignments and not for the retransmissions) simParameters.RBAllocationLimit = 15; simParameters.NumHARQ = 16; % Number of HARQ processes in UEs simParameters.BSRPeriodicity = 5; % In ms % In accordance with 3GPP TS 38.214, Section 5.1.2.2.1 Table-1. % Using configuration 1 to determine RBG size from bandwidth size simParameters.BWPSizeConfig1 = [36 72 144 275]; % Bandwidth size in terms of number of RBs simParameters.RBGSizeConfig1 = [2 4 8 16]; % Corresponding RBG size in terms of number of RBs % Configure parameters to update uplink channel conditions at gNB for the % UEs. It is periodically improved or deteriorated by CQIDelta every % channelUpdatePeriodicity seconds for all the RBs of a UE. It is randomly % selected whether the channel conditions deteriorate or improve for a % particular UE: % RBCQI = RBCQI +/- CQIDelta simParameters.ChannelUpdatePeriodicity = 0.5; % In sec simParameters.CQIDelta = 2; % The parameter RBVisualization controls the display of these visualizations: % (i) CQI visualization of RBs % (ii) RB assignment visualization simParameters.RBVisualization = true; % The output metrics plots are updated NumMetricsSteps times within the % simulation duration simParameters.NumMetricsSteps = 20; % MAT files used for post-simulation visualization simParameters.ParametersLogFile = 'simParameters'; % For logging the simulation parameters simParameters.SchedulingLogFile = 'schedulingLogs'; % For per slot simulation run logs hNRULSchedulingValidateConfig(simParameters); % Validate the simulation configuration
На основе первичных параметров конфигурации вычислите выведенные параметры.
simParameters.UERNTIs = 1:simParameters.NumUEs; % RNTI of UEs % Slot duration for the selected SCS and number of slots in 10 ms frame simParameters.SlotDuration = 1/(simParameters.SCS/15); % In ms simParameters.NumSlotsFrame = 10/simParameters.SlotDuration; simParameters.NumSlotsSim = simParameters.NumFramesSim * simParameters.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(simParameters.NumSlotsSim / simParameters.NumMetricsSteps); if(mod(simParameters.NumSlotsSim, simParameters.NumMetricsSteps)) % Update the 'NumMetricsSteps' parameter, if 'NumSlotsSim' is not % completely divisible by it simParameters.NumMetricsSteps = floor(simParameters.NumSlotsSim / simParameters.MetricsStepSize); end % Packet periodicities of UEs in terms of number of slots simParameters.AppPeriodicityUEsSlots = simParameters.AppPeriodicityUEs ./ simParameters.SlotDuration; % Define uplink channel quality as a N-by-P matrix where N is the number of % UEs and P is the number of RBs in PUSCH bandwidth. Initial value of CQI % for each RB, for each of the UEs is given randomly and is limited by the % maximum achievable CQI value corresponding to distance of UE from gNB maxUECQIs = zeros(simParameters.NumUEs, 1); % To store the maximum achievable CQI value for UEs simParameters.ChannelQuality = zeros(simParameters.NumUEs, simParameters.NumPUSCHRBs); % Find maximum achievable CQI value for UEs based on their distance from % the gNB for UEIdx = 1:simParameters.NumUEs % Based on UE's distance from gNB, find matching row in CQIvsDistance mapping matchingRowIdx = find(simParameters.CQIvsDistance(:, 1) > simParameters.UEDistance(UEIdx)); if(isempty(matchingRowIdx)) maxUECQIs(UEIdx) = simParameters.CQIvsDistance(end, 2); else maxUECQIs(UEIdx) = simParameters.CQIvsDistance(matchingRowIdx(1), 2); end % Assign random CQI values for the RBs, limited by the maximum achievable CQI value simParameters.ChannelQuality(UEIdx, 1:simParameters.NumPUSCHRBs) = randi([1 maxUECQIs(UEIdx)], 1, simParameters.NumPUSCHRBs); end % Calculate the number of RBs in an RBG. RBG is the smallest unit of % assignment in frequency domain. Bitmap for frequency domain allocation of % PUSCH contains one bit per RBG index = find(simParameters.NumPUSCHRBs <= simParameters.BWPSizeConfig1(:), 1); simParameters.RBGSize = simParameters.RBGSizeConfig1(index); % Periodicity of channel update in terms of number of slots simParameters.ChannelUpdatePeriodicitySlots = floor((simParameters.ChannelUpdatePeriodicity * 1000)/... simParameters.SlotDuration); % Initialize buffers to exchange packets between UEs and gNB hNRPacketExchangeBuffer(simParameters);
Создайте gNB и объекты УИ МАКА согласно сконфигурированным параметрам и инициализируйте восходящую информацию об условии канала для UEs в gNB. Класс помощника hNGNBMAC.m реализует восходящий канал планировщик МАКа и механизм управления HARQ в gNB. Класс помощника hNRUEMAC.m реализует функциональность УИ МАКА, чтобы повиноваться планированию и решениям HARQ, принятым gNB.
gNB = hNRGNBMAC(simParameters); % Create gNB MAC object for UEIdx = 1:simParameters.NumUEs % Initialize uplink CQI information at gNB for the UEs updateUEChannelQualityStatus(gNB, simParameters.UERNTIs(UEIdx), simParameters.ChannelQuality(UEIdx, :)); end UEs = cell(simParameters.NumUEs, 1); % Array to store UEs' MAC objects for UEIdx=1:simParameters.NumUEs UEs{UEIdx} = hNRUEMAC(simParameters, UEIdx); % Create UE MAC object end
Симуляция является пазом пазом запуска. В каждом пазе выполняются эти операции.
Условия канала обновления: Обновите восходящие значения CQI в RBS для каждого UE на основе периодичности обновления канала.
Запустите планировщик: Если планировщик собирается запуститься в этом пазе (на основе его сконфигурированной периодичности), присвойте восходящие ресурсы UEs. В одном запущенном планировщике могут быть запланированы ресурсы нескольких предстоящих пазов. Для каждого запланированного паза, присвоения RBS для повторных передач выполняются сначала, сопровождаются присвоениями для новой передачи (если существует какой-либо покинутый RBS). UE ограничивается максимумом 1 присвоения PUSCH на паз.
Управление Tx (gNB): Создайте и отправьте восходящие предоставления на основе восходящих присвоений.
Данные Tx (UE). UEs отправляют восходящие пакеты MAC, придерживающиеся восходящих предоставлений, полученных в более ранних пазах (если любой для этого паза).
Обновите буфер UE (UE). На основе сконфигурированного шаблона трафика приложения добавьте данные в буфер UE.
Управляйте Tx (UE): На основе сконфигурированной периодичности BSR UEs отправляют BSR, чтобы передать незаконченную буферную сумму.
Управляйте Rx (gNB). Получите BSR от UEs и храните информацию, которая используется, когда планировщик запускается затем.
Данные Rx (gNB): Получите восходящие пакеты MAC от UEs, который, как запланировали, передаст в этом пазе. Если прием перестал работать, создайте контекст повторной передачи для конкретного UE, который используется в присвоениях для повторных передач, когда планировщик запускается затем.
Управляйте Rx (UE): UEs получают свои соответствующие восходящие предоставления на предстоящие пазы. UEs обрабатывают восходящее предоставление и хранят информацию, которая будет использоваться в передаче PUSCH.
Логгирование и Визуализация: выход операций в gNB и UEs используется в логгировании и визуализации.
% To store metrics of UEs for each slot: Throughput bytes transmitted, % Goodput bytes transmitted, Pending buffer amount bytes. Goodput is % calculated by excluding the retransmissions from the total transmissions UESlotMetrics = zeros(simParameters.NumUEs, 3); channelQuality = zeros(simParameters.NumUEs, simParameters.NumPUSCHRBs); % To store current CQI values on the RBs for different UEs simLogger = hNRULSchedulingLogger(simParameters); % Create object for visualization and logging % Run processing loop for slotNum = 1:simParameters.NumSlotsSim if(~mod(slotNum, simParameters.ChannelUpdatePeriodicitySlots)) % Update the uplink channel quality for UEs periodically for UEIdx = 1:simParameters.NumUEs CQIRBs = getUEChannelQualityStatus(gNB, UEIdx); % Current CQI values % Update CQI values for RBs by randomly increasing or % decreasing current values randomly by CQIDelta, limited by % the minimum and maximum achievable CQI index value. You can % customize the updating of CQI values in any desired way here updateType = [1 -1]; % Improvement/Deterioration channelQualityChange = updateType(randi(length(updateType))); updatedCQIs = min(max(CQIRBs + simParameters.CQIDelta*channelQualityChange, 1), maxUECQIs(UEIdx)); updateUEChannelQualityStatus(gNB, UEIdx, updatedCQIs); end end % Run the gNB scheduler. Check whether the scheduler is set to run in % the slot. If yes, schedule the resources and send the corresponding % uplink grants resourceAssignments = runScheduler(gNB); if(~isempty(resourceAssignments)) % Check if uplink assignments are done resourceAssignments = controlTx(gNB, resourceAssignments); % Construct and send uplink grants end % Run the UE operations: Send MAC packet, Update UE-buffers based on % application traffic pattern, Send control information (BSR) HARQProcessStatus = zeros(simParameters.NumUEs, simParameters.NumHARQ); % To store last sent HARQ process NDI flag for UEIdx = 1:simParameters.NumUEs % For all UEs % UE sends MAC packet if it is a Tx slot (as conveyed by gNB in % earlier received uplink grants). Output: MAC transmission % (throughput) and New MAC transmission (goodput) data respectively [UESlotMetrics(UEIdx, 1), UESlotMetrics(UEIdx, 2)] = dataTx(UEs{UEIdx}); % Add data to UE buffer, based on the application % traffic pattern. Return the updated buffer amount if~(mod(slotNum-1, simParameters.AppPeriodicityUEsSlots(UEIdx))) updateUEBuffer(UEs{UEIdx}, simParameters.BufferSizesUEs(UEIdx)); end UESlotMetrics(UEIdx, 3) = getUEBufferStatus(UEs{UEIdx}); % Read pending buffer (in bytes) on UE % UE sends BSR packet, if scheduled to send in this slot controlTx(UEs{UEIdx}); % Read the last received NDI flags for UE HARQ processes (For logging purpose) HARQProcessStatus(UEIdx, :) = getLastNDIFlagHarq(UEs{UEIdx}); % Read the uplink channel quality at gNB for each of the UEs (For logging purpose) channelQuality(UEIdx,:) = getUEChannelQualityStatus(gNB, UEIdx); end % Run the Rx operation at gNB for simultaneous reception of packets controlRx(gNB); % Receive BSRs % Receive uplink MAC packets from UEs that are scheduled to transmit in % this slot. Return the information of Rx success/failure rxResultUEs = dataRx(gNB); % Run the Rx operation at UEs for simultaneous reception of packets for UEIdx = 1:simParameters.NumUEs % For all UEs controlRx(UEs{UEIdx}); % Receive uplink grants, if any sent by gNB end % Update logs based on the current slot run of UEs and gNB. Logs are % updated in each slot, RB grid visualizations are updated every frame, % and metrics plots are updated every metricsStepSize slots logScheduling(simLogger, resourceAssignments, UESlotMetrics, channelQuality, HARQProcessStatus, rxResultUEs); if(simParameters.RBVisualization) % If RB Visualization flag is set if(~mod(slotNum, simParameters.NumSlotsFrame)) % Last slot of the frame frameNum = floor(slotNum/simParameters.NumSlotsFrame)-1; plotRBGrids(simLogger, frameNum); % Plot RB assignment grid and CQI grid end end if(~mod(slotNum, simParameters.MetricsStepSize)) plotMetrics(simLogger); % Plot performance metrics end end
Три типа показанной визуализации во время выполнения:
Отображение значений CQI для UEs по пропускной способности PUSCH: Относитесь, чтобы 'Образовать канал Качественная фигура' Визуализации для получения дополнительной информации.
Отображение присвоения сетки ресурса на UEs: 2D сетка частоты времени обновляет каждые 10 мс (длина системы координат) и показывает выделение RB UEs в предыдущей системе координат. Процесс HARQ для присвоений PUSCH также показывают рядом с RNTI UE. Новые передачи отображают черным цветом, и повторные передачи отображают синим. С помощью ID процесса HARQ UE присвоение повторной передачи может быть сопоставлено со своей ранее не пройдено передачей. Обратитесь к 'фигуре' Выделения Сетки Ресурса для получения дополнительной информации.
Отображение метрических графиков: четыре графика, отображенные в 'фигуре' показателей производительности Планировщика, представляют: пропускная способность (на UE и ячейку), полезная пропускная способность (на UE и ячейку), процент доли ресурса среди UEs, чтобы передать справедливость планирования и незаконченное буферное состояние UEs, чтобы проверять, доказывают ли присвоенные ресурсы на UE достаточно. Графики показателей производительности обновляются каждый metricsStepSize пазы.
Параметры, используемые в журнале симуляции и планирования каждого UE в каждом пазе, сохранены в файлах MAT для постанализа методом моделирования и визуализации. Таблица показывает демонстрационную запись в журнале в планировании журналов.
Каждая строка таблицы представляет паз и содержит эту информацию.
Система координат: Структурируйте номер.
Паз: Номер слота в системе координат.
Битовый массив Выделения RBG: N-by-P побитово отображают матрицу, где N является количеством UEs, и P является количеством RBGs. Если RBG присвоен конкретному UE, соответствующий бит установлен в 1. Например: [0 0 1 1 0 1 0 1 0 1 0 0 0; 1 1 0 0 0 0 0 0 0 0 1 0 0; 0 0 0 0 1 0 1 0 1 0 0 1 1; 0 0 0 0 0 0 0 0 0 0 0 0 0] средние значения, та восходящая пропускная способность имеет 13 RBGs, и UE-1 присвоен индексы RBG: 2, 3, 5, 7, 9; UE-2 присвоен индексы RBG: 0, 1, 10; UE-3 присвоен индексы RBG: 4, 6, 8, 11, 12; UE-4 не присвоен никакой RBG.
MCS: Вектор-строка из длины N, где N является количеством UEs. Каждое значение соответствует схеме модуляции и кодирования (MCS) индекс для передачи PUSCH. Например: [10 12 8 - 1] средние значения, это только UE-1, UE-2 и UE-3 присвоены восходящие ресурсы для этого паза, и они используют значения MCS 10, 12 и 8 соответственно.
Процесс HARQ: Вектор-строка из длины N, где N является количеством UEs. Значение является ID процесса HARQ, используемым UE в передаче PUSCH. Например: [0 3 6 - 1] означает, что только UE-1, UE-2 и UE-3 присвоены восходящие ресурсы для этого паза, и они используют ID процесса HARQ 0, 3 и 6 соответственно.
NDI: Вектор-строка из длины N, где N является количеством UEs. Значение является флаговым значением NDI в восходящем предоставлении на передачу PUSCH. Например: [0 0 1 - 1] означает, что только UE-1, UE-2 и UE-3 присвоены восходящие ресурсы для этого паза и флаговых значений NDI (чтобы решить, сделать ли новую передачу, или повторная передача) 0, 0 и 1 соответственно.
Тип Tx: тип Передачи (Новая передача или Повторная передача). Вектор-строка из длины N, где N является количеством UEs. Заданные значения являются или 'newTx', 'reTx', или 'noTx'. 'noTx' задан, когда UE не является выделенными ресурсами передачи. Например: ['newTx' 'newTx' 'reTx' 'noTx'] означает, что только UE-1, UE-2 и UE-3 присвоены восходящие ресурсы для этого паза. UE-1 и UE-2 передают новый пакет от заданного процесса HARQ, в то время как UE-3 только ретранслирует пакет в буфере заданного процесса HARQ.
CQI для UEs: матрица N-by-P, где N является количеством UEs и P, является количеством RBS в пропускной способности. Элемент матрицы A в положении (i, j) соответствует восходящему значению CQI для UE с RNTI i в RB j.
Состояние HARQ NDI: матрица N-by-P, где N является количеством UEs и P, является количеством процессов HARQ на UEs. Элемент матрицы A в положении (i, j) является последним полученным флагом NDI в UE i для ID процесса HARQ j. В случае новой передачи должны переключиться это значение и флаг NDI в присвоении PUSCH. Например, в пазе 1 системы координат 5 описанных в вышеупомянутом журнале, UE-1 использует ID HARQ '0', и последнее флаговое значение NDI для ID HARQ '0' в UE-1 равняется 1. Следовательно флаговое значение NDI переключается к '0' в присвоении PUSCH, чтобы указать на новую передачу.
Байты пропускной способности: Вектор-строка из длины N, где N является количеством UEs. Значения представляют байты MAC, переданные UEs в этом пазе.
Байты полезной пропускной способности: Вектор-строка из длины N, где N является количеством UEs. Значения представляют новые байты MAC передачи, переданные UEs в этом пазе.
Буферное Состояние UEs: Вектор-строка из длины N, где N является количеством UEs. Значения представляют сумму незаконченных буферов в UEs.
Успех/Отказ Rx: Вектор-строка из длины N, где N является количеством UEs. Заданными значениями является или 'RxSuccess', 'RxFailure' или 'noRx'. 'noRx' означает, что gNB не ожидает Rx от UE. Например: ['RxSuccess' 'RxSuccess' 'RxFailure' 'noRx'] означает, что пакеты от UE-1 и UE-2 получены успешно, в то время как пакет от UE-3 не был или получен или был поврежден. UE-4 не был запланирован для этого паза.
Можно запустить скрипт NewRadioPUSCHSchedulingLogVisualization.m
для визуализации постсимуляции журналов.
save(simParameters.ParametersLogFile, 'simParameters'); % Save simulation parameters in a MAT file saveSchedulingLogs(simLogger); % Save scheduling logs in a MAT file
Можно изменить существующие стратегии планирования, существующие в помощниках: hNRSchedulingStrategyBestCQI.m, hNRSchedulingStrategyPF.m, и hNRSchedulingStrategyRR.m. Планирование функции стратегии называется однажды для каждого из остающихся RBGs, после того, как присвоения для повторных передач будут завершены. Функция берет структуру в качестве входа и возвращает выбранный UE, которому RBG присвоен наряду с соответствующим индексом MCS. Для того, чтобы записать пользовательскую стратегию планирования, информация во входной структуре могла использоваться желаемым способом установить выход. Входная структура содержит эти поля:
eligibleUEs
: RNTI имеющего право UEs, борющегося за RBG.
slotNum
: Номер слота в системе координат, которая становится запланированной.
RBGIndex
: RBG индексируют в slotNum
быть запланированным.
RBGSize
: Размер RBG в терминах количества RBS.
cqiRBG
: Восходящее качество канала RBG. Матрица N-by-P с восходящими значениями CQI для имеющего право UEs на различном RBS RBG. N является количеством имеющего право UEs, и P является RBGSize.
pastDataRate
: Вектор-строка из длины N содержащий историческую достигнутую скорость передачи данных UEs, где N является количеством имеющего право UEs.
bufferStatus
Вектор-строка из длины N содержащий ожидающий буферное состояние для UEs. N является количеством имеющего право UEs.
mcsRBG
: Матрица N-2, содержащая индекс MCS и соответствующий КПД соответственно (подходящий согласно значениям CQI на RBS RBG). N является количеством имеющего право UEs. КПД является битами/символом, учитывающими и схему модуляции и кодирующими уровень.
slotDur
: Длительность паза в мс.
UEs
: RNTI всего UEs.
Обратите внимание на то, что стратегия планирования может использовать подмножество вышеупомянутых полей, чтобы принять решение. Чтобы реализовать пользовательскую стратегию планирования, создайте файл функции NewStrategy.m
и в настройке сценария, установленной параметр simParameters.SchedulerStrategy
к 'NewStrategy'
. Следуйте за шаблоном существующих стратегий функциональной подписи. Когда физический уровень абстрагирован в примере, успех/отказ приема PUSCH определяется с помощью простого вероятностного подхода на основе восходящих значений CQI на RBS, в котором получен пакет. Это сделано в getRxSuccessProbability
функция класса помощника hNRGNBMAC. Можно настроить его желаемым способом возвратить вероятность успеха Rx.
На основе выбранной стратегии планирования этот пример демонстрирует присвоение восходящих ресурсов к нескольким UEs gNB. Физический уровень абстрагирован в примере. Отображение визуализации во время выполнения сетки ресурса дает подробную информацию о RBS, выделенном каждому UE в различных пазах системы координат и ID процесса HARQ, присвоенному для передачи. Производительность планирования анализируется на основе графиков во время выполнения пропускной способности MAC, полезной пропускной способности MAC, справедливости доли ресурса и незаконченного буферного состояния на UEs. Более полный постанализ методом моделирования с помощью сохраненных журналов дает подробное изображение операций, происходящих на основе на паз.
Пример использует эти функции помощника и классы:
hNRGNBMAC.m: функциональность gNB MAC
hNRUEMAC.m: функциональность УИ МАКА
hNewHARQProcesses.m: Создает новый процесс HARQ
hUpdateHARQProcess.m: Обновления процесс HARQ
hPDSCHTBS.m: Вычисляет транспортный размер блока PDSCH
hPUSCHTBS.m: Вычисляет транспортный размер блока PUSCH
hNRMACBSR.m: Генерирует буферный отчет о состоянии
hNRMACBSRParser.m: Синтаксические анализы буферизуют отчет о состоянии
hNRMACPDU.m: Генерирует PDU MAC
hNRMACPDUParser.m: PDU MAC Синтаксических анализов
hNRPacketExchangeBuffer.m: пакет Реализаций обменивается буферами между UE и gNB
hNRUplinkGrantFormat.m: Восходящий формат предоставления
hNRULSchedulingLogger.m: логгирование Реализаций и функциональность визуализации
hNRSchedulingStrategyBestCQI.m: Реализации лучший CQI планирование стратегии
hNRSchedulingStrategyPF.m: Реализует пропорциональную справедливую стратегию планирования
hNRSchedulingStrategyRR.m: циклический алгоритм Реализаций планирование стратегии
hNRULSchedulingValidateConfig.m: Подтверждает настройку симуляции
[1] 3GPP TS 38.214. “NR; процедуры Физического уровня для данных”. Проект Партнерства третьего поколения; Сеть радиодоступа Technical Specification Group.
[2] 3GPP TS 38.321. “NR; спецификация протокола Среднего управления доступом (MAC)”. Проект Партнерства третьего поколения; Сеть радиодоступа Technical Specification Group.