Этот пример вводит форматы нисходящей управляющей информации (DCI) NR и их определения, и показывает, как использовать классы MATLAB®, чтобы представлять форматы DCI и закодировать и декодировать информационные полезные нагрузки бита DCI.
NR и LTE используют нисходящую управляющую информацию (DCI), чтобы отправить динамические управляющие сообщения физического уровня от сети до каждого UE. Эта информация может быть в масштабе всей системы или определенной для оборудования пользователя (UE-specific) и содержит аспекты восходящего и нисходящего планирования данных, управления HARQ, управления степенью и другой сигнализации. Непрямая непрямая управляющая информация (SCI) использования, чтобы нести управляющие сообщения PHY между UEs с помощью подобного механизма.
NR задает много различных форматов DCI, каждый служащий различному использованию, например, планированию PUSCH или PDSCH. Каждый формат задает упорядоченное множество битовых полей, куда каждое поле передает отличную информацию о передаче, такой присвоение ресурса частоты, присвоение ресурса времени, версия сокращения, и модуляция и кодирование. Количество битов, сопоставленных с полем, может быть зафиксировано или зависеть от другого состояния протокола, например, активного размера BWP. Вся полевая карта, в порядке определения формата, на набор информационных битов, которые затем закодированы и продолжены физический нисходящий канал управления (PDCCH). Отображение таково, что старший значащий бит каждого поля сопоставлен с информационным битом самым низкоуровневым для того поля. Для NR DCI и дополнение нулевых битов и усечение могут быть применены, чтобы выровнять размеры полезной нагрузки согласно различным форматам DCI. Это выравнивание размера упрощает слепой процесс декодирования и сокращает количество уникальных размеров полезной нагрузки, которые должны разыскиваться.
Поля, заданные в формате, могут также зависеть от типа RNTI, сопоставленного с управляющей информацией, например, информацией о системе, разбивкой на страницы, управлением степенью и пользователем, планирующим. Это значение RNTI скремблирует CRC, присоединенный к информационной полезной нагрузке бита, отправленной на PDCCH.
Форматы DCI, поддержанные Релизом 16 NR:
Классы MATLAB могут использоваться к форматам модели DCI и полям, где отдельное определение класса представляет каждый формат, и полям каждого формата упорядочивают свойства класса.
В этом примере, класс MATLAB BitField
представляет одно поле DCI. Каждый объект поля имеет свойства сохранить значение поля, текущий диаметр долота и набор возможных размеров, которые могут зависеть от состояния протокола. Этот класс также задает методы, чтобы сопоставить значение поля с и от информационных битов.
Класс MATLAB MessageFormat
обеспечивает базовый класс, из которого можно вывести определенные классы формата. Каждый выведенный класс формата задает набор свойств типа BitField
для всех полей DCI, в порядке, что они появляются для того формата. MessageFormat
базовый класс также задает методы, чтобы сопоставить все поля DCI производного класса с и от информационных битов. Кроме того, MessageFormat
класс перегружает отображение, присвоение свойства и ссылочную функциональность, чтобы обеспечить легкий, прямой доступ к значениям полей. Этот класс поддерживает дополнительное дополнение нуля для выравнивания ширины, но не поддерживает автоматическое усечение выравнивания.
Форматы NR DCI часто имеют большое количество полей, размеры которых зависят от полустатического состояния протокола UE RRC. Этот пример использует формат 1_0 DCI, скремблированный SI-RNTI из-за его простой полевой последовательности.
Эта таблица описывает упорядоченные поля и bitwidths, сопоставленный с форматом 1_0 DCI, когда CRC скремблирован SI-RNTI.
Задайте DCIFormat1_0_SIRNTI
класс для формата путем получения из MessageFormat
и определение BitField
свойство для каждого поля формата. В этом формате первые и последние поля имеют bitwidths, которые зависят от параметров состояния протокола (CORESET 0 размеров и совместно использовала ли ячейка доступ к спектру), и поэтому ширина поля установлена в конструкторе класса. Это гарантирует, что bitwidths измерены правильно перед использованием DCIFormat1_0_SIRNTI
.
% DCI format 1_0 with CRC scrambled by SI-RNTI classdef DCIFormat1_0_SIRNTI < MessageFormat properties FrequencyDomainResources = BitField(); % Field size depends on CORESET 0 size provided to the constructor TimeDomainResources = BitField(4); % 4 bits VRBToPRBMapping = BitField(1); % 1 bit ModulationCoding = BitField(5); % 5 bit MCS RedundancyVersion = BitField(2); % 2 bit RV SystemInformationIndicator = BitField(1); % 1 bit ReservedBits = BitField(15); % 15 bits reserved (17 bits if Release 16 shared spectrum is enabled in constructor) end methods function obj = DCIFormat1_0_SIRNTI(NDLRB,sharedspectrum) % Class constructor ... end end end
Используйте DCIFormat1_0_SIRNTI
объекты сопоставить значения полей с информационными полезными нагрузками бита для этого формата и проанализировать информационные биты назад в значения полей.
% Create DCI format 1_0 object for SI-RNTI and the given cell configuration parameters CORESET0NRB = 24; Rel16SharedSpectrum = 0; dciformat1_0 = DCIFormat1_0_SIRNTI(CORESET0NRB,Rel16SharedSpectrum); % The display customization prints the BitField property values directly % along with the format padding and alignment related properties display(dciformat1_0)
dciformat1_0 = DCIFormat1_0_SIRNTI with field values: FrequencyDomainResources: 0 TimeDomainResources: 0 VRBToPRBMapping: 0 ModulationCoding: 0 RedundancyVersion: 0 SystemInformationIndicator: 0 ReservedBits: 0 Writeable properties: AlignedWidth: [] Read-only properties: Width: 37
% Use the info function to get the individual field sizes info(dciformat1_0,'fieldsizes')
ans = struct with fields:
FrequencyDomainResources: 9
TimeDomainResources: 4
VRBToPRBMapping: 1
ModulationCoding: 5
RedundancyVersion: 2
SystemInformationIndicator: 1
ReservedBits: 15
% Get the non-padded bitwidth for this format and configuration % % Without any further alignment padding, the number of information bits % is given by the Width property dciformat1_0.Width
ans = 37
% Set the aligned width if the information bit payload should % be padded to a specific size dciformat1_0.AlignedWidth = 40
dciformat1_0 = DCIFormat1_0_SIRNTI with field values: FrequencyDomainResources: 0 TimeDomainResources: 0 VRBToPRBMapping: 0 ModulationCoding: 0 RedundancyVersion: 0 SystemInformationIndicator: 0 ReservedBits: 0 Writeable properties: AlignedWidth: 40 Read-only properties: Width: 40 PaddingWidth: 3
% Create a DCI message for transmission on PDCCH txdci = dciformat1_0; % Set the DCI field values % % The assignment customization allows the BitField property values to be set directly txdci.FrequencyDomainResources = 10; txdci.TimeDomainResources = 3; txdci.ModulationCoding = 3; txdci.RedundancyVersion = 3; display(txdci);
txdci = DCIFormat1_0_SIRNTI with field values: FrequencyDomainResources: 10 TimeDomainResources: 3 VRBToPRBMapping: 0 ModulationCoding: 3 RedundancyVersion: 3 SystemInformationIndicator: 0 ReservedBits: 0 Writeable properties: AlignedWidth: 40 Read-only properties: Width: 40 PaddingWidth: 3
% Map the DCI format fields into information payload bits
dciinfobits = toBits(txdci)
dciinfobits = 40x1 int8 column vector
0
0
0
0
0
1
0
1
0
0
⋮
% Map DCI format fields from information bits
rxdci = fromBits(dciformat1_0,dciinfobits)
rxdci = DCIFormat1_0_SIRNTI with field values: FrequencyDomainResources: 10 TimeDomainResources: 3 VRBToPRBMapping: 0 ModulationCoding: 3 RedundancyVersion: 3 SystemInformationIndicator: 0 ReservedBits: 0 Writeable properties: AlignedWidth: 40 Read-only properties: Width: 40 PaddingWidth: 3
isequal(txdci,rxdci)
ans = logical
1
% Encode the DCI information bits and send on PDCCH ncellid = 1; % NCellID si_rnti = hex2dec('FFFF'); % SI-RNTI for PDCCH in a UE-specific search space K = dciformat1_0.Width; % Number of DCI message bits E = 2*288; % Number of bits for PDCCH candidate % Encode DCI dciCW = nrDCIEncode(dciinfobits,si_rnti,E); % Create PDCCH QPSK symbols sym = nrPDCCH(dciCW,ncellid,0); % Add noise to PDCCH symbols EbNo = 3; % EbNo in dB bps = 2; % Bits per symbol, 2 for QPSK EsNo = EbNo + 10*log10(bps); snrdB = EsNo + 10*log10(K/E); rxSym = awgn(sym,snrdB,'measured'); % Recover softbits from PDCCH symbols noiseVar = 10.^(-snrdB/10); % Assumes unit signal power rxCW = nrPDCCHDecode(rxSym,ncellid,0,noiseVar); % Decode DCI information bits listLen = 8; % Polar decoding list length decDCIBits = nrDCIDecode(rxCW,K,listLen,si_rnti); % Map DCI format field from info bits rxdci = fromBits(dciformat1_0,decDCIBits)
rxdci = DCIFormat1_0_SIRNTI with field values: FrequencyDomainResources: 10 TimeDomainResources: 3 VRBToPRBMapping: 0 ModulationCoding: 3 RedundancyVersion: 3 SystemInformationIndicator: 0 ReservedBits: 0 Writeable properties: AlignedWidth: 40 Read-only properties: Width: 40 PaddingWidth: 3
isequal(rxdci,txdci)
ans = logical
1
Для получения дополнительной информации о канале управления нисходящим каналом NR, смотрите Управляющую информацию Нисходящего канала Моделирования и Нисходящую Обработку Управления и Процедуры. Для получения дополнительной информации о применении классов MATLAB, смотрите Структурированные данные Представления с Классами.
3GPP TS 38.212. "NR; Мультиплексирование и кодирование канала (Релиз 16)". Проект Партнерства третьего поколения; Сеть радиодоступа Technical Specification Group.