exponenta event banner

Обработка и процедуры управления нисходящим каналом

Этот пример описывает декодирование слепого поиска физического канала управления нисходящей линии связи (PDCCH) для 5G новой системы радиосвязи. В этом примере, основанном на учебном пособии Моделирование управляющей информации нисходящей линии связи, представлены концепции набора управляющих ресурсов (CORESET) и пространств поиска, их общая спецификация и показано, как экземпляр PDCCH сопоставляется с одним из нескольких кандидатов в пространстве поиска. Чтобы восстановить переданную управляющую информацию в приемнике, пример выполняет слепой поиск по набору кандидатов.

Системные параметры

Установите системные параметры, соответствующие полке, CORESET, набору пространств поиска и экземпляру PDCCH соответственно.

rng(111);                               % Set RNG state for repeatability

% Carrier configuration
carrier = nrCarrierConfig;
carrier.NCellID = 2;                    % Cell identity
carrier.SubcarrierSpacing = 30;         % Carrier/BWP Subcarrier spacing
carrier.CyclicPrefix = 'normal';        % Cyclic prefix
carrier.NSlot      = 0;                 % Slot counter
carrier.NFrame     = 0;                 % Frame counter
carrier.NStartGrid = 10;                % Carrier offset
carrier.NSizeGrid  = 48;                % Size of carrier in RB

% CORESET configuration
coreset = nrCORESETConfig;
coreset.CORESETID = 1;                  % CORESET ID (0...11)
coreset.FrequencyResources = ones(1,4); % 6 RB sized
coreset.Duration = 1;                   % CORESET symbol duration (1,2,3)
coreset.CCEREGMapping = 'interleaved';  % CORESET Mapping
coreset.REGBundleSize = 2;              % L (2,6) or (3,6)
coreset.InterleaverSize = 2;            % R (2,3,6)
coreset.ShiftIndex = carrier.NCellID;   % default to NCellID

% Search space configuration
ss = nrSearchSpaceConfig;
ss.CORESETID = 1;                       % Associated CORESET ID (0...11)
ss.SearchSpaceType = 'ue';              % 'ue', 'common'
ss.StartSymbolWithinSlot = 0;           % Starting symbol in slot
ss.SlotPeriodAndOffset = [1 0];         % Search space period and offset
ss.Duration = 1;                        % Search space duration in slots
ss.NumCandidates = [4 2 1 0 0];         % For (1,2,4,8,16) levels respectively

% PDCCH configuration
pdcch = nrPDCCHConfig;
pdcch.NStartBWP  = 10;                  % BWP offset wrt CRB 0
pdcch.NSizeBWP   = 48;                  % Size of BWP in resource blocks
pdcch.CORESET = coreset;                % Associated CORESET
pdcch.SearchSpace = ss;                 % Associated SearchSpace
pdcch.RNTI = 1;                         % C-RNTI
pdcch.DMRSScramblingID = [];            % Use carrier.NCellID instead
pdcch.AggregationLevel = 4;             % Number of CCEs in PDCCH (1,2,4,8,16)
pdcch.AllocatedCandidate = 1;           % 1-based scalar

В этом примере предполагается обработка одного слота с использованием одной части полосы пропускания с одной передачей PDCCH для соответствующего набора CORESET и пространства поиска.

Для получения дополнительной информации о поколении формы волны с несколькими физическими каналами посмотрите 5G НОМЕР Векторного примера Поколения Формы волны Передачи информации из космоса.

Битовая емкость PDCCH

Битовая емкость для экземпляра PDCCH определяется на основе количества элементов канала управления (CCE), сконфигурированных для PDCCH. CCE состоит из шести групп элементов ресурса (REG), где REG равен одному блоку ресурса (RB) во время одного символа OFDM.

% Number of bits for PDCCH resources and actual indices
[ind,dmrs,dmrsInd] = nrPDCCHResources(carrier,pdcch);
E = 2*numel(ind);

Кодирование DCI

nrDCIEncode функция кодирует биты сообщения DCI на основе формата нисходящей линии связи. Кодирование DCI включает в себя этапы присоединения CRC, полярного кодирования и согласования скорости передачи кодового слова с битовой емкостью PDCCH. E.

K = 64;                             % Number of DCI message bits
dciBits = randi([0 1],K,1,'int8');

dciCW = nrDCIEncode(dciBits,pdcch.RNTI,E);

Формирование и отображение символов PDCCH

nrPDCCH функция отображает кодированные биты DCI в физический канал управления нисходящей линии связи (PDCCH). Функция возвращает скремблированные QPSK-модулированные символы. Скремблирование учитывает пользовательские параметры.

if isempty(pdcch.DMRSScramblingID)
    nID = carrier.NCellID;
else
    nID = pdcch.DMRSScramblingID;
end
sym = nrPDCCH(dciCW,nID,pdcch.RNTI);

Символы PDCCH затем отображаются на элементы ресурсов, соответствующие выделенному кандидату в пределах сетки OFDM. Сетка ресурсов также содержит символы PDSCH и PBCH и другие элементы опорного сигнала. Для простоты этот пример только дополнительно отображает символы PDCCH DM-RS в сетку.

carrierGrid = nrResourceGrid(carrier);
carrierGrid(ind) = sym;                 % PDCCH symbols
carrierGrid(dmrsInd) = dmrs;            % PDCCH DM-RS

Для сетки ресурсов, охватывающей всю часть полосы пропускания и один слот, на этом рисунке показаны некоторые параметры CORESET, набора пространства поиска и экземпляра PDCCH для выбранной примерной конфигурации.

Модуляция OFDM

OFDM модулирует сетку несущих. Укажите отсутствие окон для обработки на основе слотов.

[wave,winfo] = nrOFDMModulate(carrier,carrierGrid,'Windowing',0);

Канал замирания

Передают сформированный сигнал по каналу с замиранием TDL с профилем задержки А и разбросом задержки 30 нс.

channel = nrTDLChannel;
channel.DelayProfile = 'TDL-A';
channel.DelaySpread = 30e-9;
channel.NumTransmitAntennas = 1;
channel.NumReceiveAntennas = 1;
channel.SampleRate = winfo.SampleRate;

chInfo = info(channel);
maxChDelay = ceil(max(chInfo.PathDelays*channel.SampleRate)) +  ...
             chInfo.ChannelFilterDelay;
txWave = [wave; zeros(maxChDelay, size(wave,2))];

rxWave = channel(txWave);

Добавление шума

Добавление белого гауссова шума с заданным уровнем к принятому сигналу с учетом скорости кодирования, модуляции QPSK и частоты дискретизации.

EbNo = 6;                            % 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
N0 = sqrt(noiseVar)/sqrt(2*winfo.Nfft);
noise = N0 * complex(randn(size(rxWave)),randn(size(rxWave)));
rxWaveN = rxWave + noise;

Слепое декодирование PDCCH и DCI

UE не имеет информации о подробной структуре канала управления. Следовательно, UE декодирует принятые символы PDCCH вслепую, отслеживая набор кандидатов PDCCH для каждого интервала времени, используя RNTI UE для идентификации правильного кандидата (или экземпляра).

Мониторинг кандидата подразумевает попытку декодирования набора элементов ресурса, соответствующих кандидату, путем проверки, является ли возвращенная контрольная сумма нулевой для известного RNTI (UE). Используйте nrPDCCHSpace определение всех кандидатов, определенных пространством поиска, установленным в терминах индексов элемента ресурса PDCCH, соответствующих символов и индексов DM-RS.

Для каждого кандидата восстановление переднего плана включает

  • оценка смещения синхронизации на основе символов DM-RS с использованием функции nrTimingEstimate,

  • Демодуляция OFDM с использованием функции nrOFDMDemodulate,

  • оценка канала на основе символов DM-RS с использованием функции nrChannelEstimate, и

  • Выравнивание MMSE с помощью функции nrEqualizeMMSE

для получения выровненных символов PDCCH-кандидатов.

Выровненные символы на кандидата демодулируются с известными пользовательскими параметрами и дисперсией шума канала, используя nrPDCCHDecode функция.

Для экземпляра принятого кодового слова PDCCH nrDCIDecode функция включает в себя этапы восстановления скорости, полярного декодирования и декодирования CRC. Если значение выходной маски равно нулю, PDCCH успешно декодируется, и UE может обработать сообщение DCI.

В этом примере приемник предполагает знание формата DCI и размера полезной нагрузки DCI. K. На практике даже они будут искаться во внешнем цикле по всем поддерживаемым форматам с соответствующими длинами битов на формат.

listLen = 8;                         % polar decoding list length

% Get all possible candidates
[allInd,allDMRS,allDMRSInd] = nrPDCCHSpace(carrier,pdcch);

% Loop over all supported aggregation levels
decoded = false;
for alIdx = 1:5

    % Loop over all candidates at each aggregation level
    for cIdx = 1:pdcch.SearchSpace.NumCandidates(alIdx)

        % Get candidate
        cSymIdx = allInd{alIdx}(:,cIdx);
        cDMRS = allDMRS{alIdx}(:,cIdx);
        cDMRSInd = allDMRSInd{alIdx}(:,cIdx);

        % Timing estimate
        offset = nrTimingEstimate(carrier,rxWaveN,cDMRSInd,cDMRS);
        if offset > maxChDelay
            offset = 0;
        end
        rxWaveS = rxWaveN(1+offset:end,:);

        % OFDM demodulate the carrier
        rxCarrGrid = nrOFDMDemodulate(carrier,rxWaveS);

        % Channel estimate
        [hest,nVar] = nrChannelEstimate(carrier,rxCarrGrid,cDMRSInd,cDMRS);
        [rxSym,pdcchHest] = nrExtractResources(cSymIdx,rxCarrGrid,hest);

        % Equalization
        [pdcchEq,csi] = nrEqualizeMMSE(rxSym,pdcchHest,nVar);

        % Demodulate
        rxCW = nrPDCCHDecode(pdcchEq,nID,pdcch.RNTI,nVar);

        % Apply CSI
        csiRep = repmat(csi.',2,1);
        scalRxCW = rxCW.*csiRep(:);

        % Decode
        [decDCIBits,errFlag] = nrDCIDecode(scalRxCW,K,listLen,pdcch.RNTI);

        if isequal(errFlag,0)
            disp(['Decoded candidate #' num2str(cIdx)  ...
                ' at aggregation level ' num2str(2^(alIdx-1)) ...
                ' in slot'])
            decoded = true;
            if isequal(decDCIBits,dciBits)
                disp('   Recovered DCI bits with no errors');
            else
                disp('   Recovered DCI bits with errors');
            end
            break;
        end
    end
    % Dont loop over other aggregation levels if RNTI matched
    if decoded
        break;
    end
end
Decoded candidate #1 at aggregation level 4 in slot
   Recovered DCI bits with no errors

Для выбранных системных параметров декодированная информация соответствует переданным информационным битам.

В примере выполнялся поиск по всем кандидатам в пределах одной области поиска, заданной ss параметр конфигурации. Поиск по нескольким наборам пространства поиска потребует другого внешнего цикла по всем определенным наборам.

Выбранные привязки

  1. 3GPP ТС 38.211. "НР; Физические каналы и модуляция (выпуск 15). "Проект партнерства 3-го поколения; Техническая спецификация на сеть радиодоступа группы.

  2. 3GPP TS 38.212. "НР; мультиплексирование и канальное кодирование (выпуск 15). "Проект партнерства 3-го поколения; Техническая спецификация на сеть радиодоступа группы.

  3. 3GPP ТС 38.213. "НР; Процедуры физического уровня для контроля (выпуск 15). "Проект партнерства 3-го поколения; Техническая спецификация на сеть радиодоступа группы.

См. также

Функции