Этот пример описывает декодирование поиска вслепую физического нисходящего канала управления (PDCCH) экземпляр для 5G Новая система Радиосвязи. Основываясь на примере, Моделируя Нисходящую Управляющую информацию, это вводит концепцию набора ресурсов управления (CORESET), его типовой спецификации и показывает, как экземпляр PDCCH сопоставлен с одним из нескольких возможных кандидатов. В получателе пример выполняет поиск вслепую по той же группе кандидатов, чтобы восстановить переданную управляющую информацию.
Установите системные параметры, соответствующие части пропускной способности, CORESET и экземплярам PDCCH соответственно.
rng(111); % Set RNG state for repeatability NcellID = 0; % Cell identity % Bandwidth part (BWP) configuration bwp = []; bwp.SubcarrierSpacing = 30; % BWP Subcarrier spacing bwp.NRB = 48; % Size of BWP in resource blocks bwp.CyclicPrefix = 'normal'; % BWP cyclic prefix % CORESET configuration coreset = []; coreset.AllocatedPRB = [1 1 1 0 1]; % frequencyDomainResources, each bit is 6RB coreset.Duration = 1; % Symbol duration (1,2,3) coreset.CCEREGMapping = 'nonInterleaved'; % Mapping: 'interleaved' or 'nonInterleaved' coreset.REGBundleSize = 2; % L (2,6) or (3,6) coreset.InterleaverSize = 3; % R (2,3,6) coreset.ShiftIndex = NcellID; % default to NcellID, 0...274 coreset.PDCCHDMRSScramblingID = NcellID; % default to NcellID, 0...65535 % Search Space configuration: multiple within a slot ss = []; ss.AllocatedSymbols = [0,4,8]; % first symbol of each monitoring occasion in slot, 0-based ss.AllocatedSlots = 0; % first slot, 0-based ss.AllocatedPeriod = 1; % over slots % PDCCH instance configuration pdcch = []; pdcch.NumCCE = 4; % Number of CCE in PDCCH, in 6REG units (or AggregationLevel:1,2,4,8,16) pdcch.AllocatedSearchSpace = 2; % 0-based for now, scalar only, index into AllocatedSymbols pdcch.RNTI = 0; % RNTI pdcch.DataBlkSize = 64; % DCI payload size pdcch.BWP = bwp; % Associated bandwidth part pdcch.CORESET = coreset; % Associated CORESET pdcch.SearchSpaces = ss; % Associated SearchSpace
Этот пример принимает, что одна обработка паза, с помощью одной пропускной способности расстается с одной передачей PDCCH для связанного CORESET. Это поддерживает и чередованный и нечередующийся CCE-to-REG, сопоставляющий без смещений блока ресурса относительно части пропускной способности и CORESET. Отошлите к 5G пример Генерации сигналов Поставщика услуг Нисходящего канала NR для получения дополнительной информации о других параметрах, описанных там.
Емкость в битах для экземпляра PDCCH определяется на основе количества Элементов канала управления (CCE), сконфигурированных для PDCCH. CCE состоит из шести групп элемента ресурса (REGs), где группа элемента ресурса равняется одному блоку ресурса (RB) во время одного символа OFDM.
% Number of bits for PDCCH resources and possible candidates
[E,candidates] = hPDCCHSpace(pdcch,ss);
На основе заданной контрольной возможности для первого символа каждого CORESET в пазе (ss.AllocatedSymbols
), соответствующее выделение физического блока ресурса (PRB) (coreset.AllocatedPRB
) и длительность символа (coreset.Duration
), все возможные кандидаты определяются для экземпляра PDCCH по целой части пропускной способности. Каждый из кандидатов представляет возможные индексы элемента ресурса для символов PDCCH в пазе. Индексы элемента ресурса PDCCH DM-RS исключены из этих наборов.
Биты сообщения DCI на основе нисходящего формата закодированы с помощью nrDCIEncode
функция, которая включает этапы прикрепления CRC, полярного кодирования и соответствия уровня. Кодовая комбинация является соответствующей уровню к емкости в битах PDCCH E
.
K = pdcch.DataBlkSize; % Number of DCI message bits dciBits = randi([0 1],K,1,'int8'); rnti = pdcch.RNTI; dciCW = nrDCIEncode(dciBits,rnti,E);
Закодированные биты DCI сопоставлены на физический нисходящий канал управления (PDCCH) использование nrPDCCH
функция, которая генерирует скремблированные, модулируемые QPSK символы. Борющиеся счета на специфичные для пользователя параметры.
nID = pdcch.CORESET.PDCCHDMRSScramblingID; sym = nrPDCCH(dciCW,nID,rnti);
Для NR символы PDCCH затем сопоставлены с одним из кандидатов (наборы элемента ресурса) в сетке OFDM, которая также имеет PDSCH, PBCH и другие ссылочные элементы сигнала. Они сопровождаются модуляцией OFDM и передачей по каналу. Для простоты только символы PDCCH сопоставлены здесь с местоположением кандидата в сетке.
numSCRB = 12; % Number of subcarriers in a RB if strcmp(bwp.CyclicPrefix,'normal') symsPerSlot = 14; % For normal CP else symsPerSlot = 12; % For extended CP end reGrid = zeros(numSCRB*bwp.NRB,symsPerSlot); reGrid(candidates{pdcch.AllocatedSearchSpace+1}) = sym; % Specified candidate
Для сетки ресурса, охватывающей целую часть пропускной способности и один паз, следующий рисунок показывает CORESET, контролируя экземпляры и экземпляр PDCCH для выбранных параметров в качестве примера.
Белый Гауссов шум с заданным уровнем добавляется к сетке ресурса, составляя уровень кодирования и модуляцию QPSK.
EbNo = 0; % in dB bps = 2; % bits per symbol, 2 for QPSK EsNo = EbNo + 10*log10(bps); snrdB = EsNo + 10*log10(K/E); noiseVar = 10.^(-snrdB/10); % assumes unit signal power rxGrid = awgn(reGrid,snrdB,'measured');
Когда UE не имеет информации о подробной структуре канала управления, это должно вслепую декодировать полученные символы PDCCH. Это делает это путем контроля группы кандидатов PDCCH на каждый паз, использования RNTI UE, чтобы идентифицировать правильного кандидата.
Полученные символы на кандидата демодулируются известными специфичными для пользователя параметрами и отклонением шума канала с помощью nrPDCCHDecode
функция.
Для экземпляра полученной кодовой комбинации PDCCH, nrDCIDecode
функция включает этапы восстановления уровня, полярного декодирования декодирования и CRC.
Если выходная маска совпадает с RNTI, используемым в PDCCH, UE успешно декодировал PDCCH и может обработать декодируемое сообщение DCI.
В этом примере получатель принимает знание формата DCI (т.е. K
принят известный в получателе). На практике даже это разыскивалось бы во внешнем цикле по всем поддерживаемым форматам с соответствующими битными длинами на формат.
listLen = 8; % polar decoding list length % Loop over all candidates within a slot numCandidates = size(candidates,1); for cIdx = 1:numCandidates rxCW = nrPDCCHDecode(rxGrid(candidates{cIdx}),nID,rnti,noiseVar); [decDCIBits,decRNTI] = nrDCIDecode(rxCW,K,listLen); if isequal(decRNTI, rnti) disp(['Decoded candidate #' num2str(cIdx)]) break; end end if isequal(decDCIBits,dciBits) disp('Recovered DCI bits with no error'); else disp('Recovered DCI bits with errors'); end
Decoded candidate #3 Recovered DCI bits with no error
Для выбранных системных параметров декодируемая информация совпадает с переданными информационными битами.
Этот пример использует следующую функцию помощника:
3GPP TS 38.211. "NR; Физические каналы и модуляция (Релиз 15)". Проект Партнерства третьего поколения; Сеть радиодоступа Technical Specification Group.
3GPP TS 38.212. "NR; Мультиплексирование и кодирование канала (Релиз 15)". Проект Партнерства третьего поколения; Сеть радиодоступа Technical Specification Group.
3GPP TS 38.213. "NR; процедуры Физического уровня для управления (Релиз 15)". Проект Партнерства третьего поколения; Сеть радиодоступа Technical Specification Group.