exponenta event banner

lteNPBCHDecode

Декодирование символов NPBCH

Описание

[bits,stateout,symbols,nfmod64,trblk,NBRefP] = lteNPBCHDecode(enb,sym) расшифровывает sym, символы физического широковещательного канала NB-IoT (NPBCH), для настроек на уровне соты enb. Декодирование NPBCH инвертирует процесс кодирования NPBCH, описанный в разделе 10.2.4 из [1], и процесс кодирования широковещательного канала (BCH), описанный в разделе 5.3.1 из [2]. Функция возвращает bitsкодовое слово мягких битов, состояние декодера для приема пучка (полный набор повторных передач одного транспортного блока) stateoutи принятые символы созвездия, symbols, путем выполнения обратного кодирования NPBCH. Номер кадра по модулю 64 nfmod64, декодированные биты информации BCH trblkи количество антенных портов узкополосного опорного сигнала (NRS) NBRefP, возвращаются путем выполнения обратного кодирования BCH.

пример

[___] = lteNPBCHDecode(enb,sym,statein) декодирует символы NPBCH для начального состояния декодирования statein.

пример

[___] = lteNPBCHDecode(enb,sym,hest,noiseest) декодирует символы NPBCH для оценки канала hest и оценка шума noiseest.

[___] = lteNPBCHDecode(enb,sym,hest,noiseest,statein) декодирует символы NPBCH для оценки канала, оценки шума и начального состояния декодера.

Примеры

свернуть все

Генерируют и декодируют подкадры символов NPBCH для пучка из 64 подкадров NPBCH.

Определение параметров для всей ячейки в структуре enb.

enb = struct('NNCellID',0,'NBRefP',1);

Для получения кодового слова генерируют главный информационный блок (MIB) и пропускают его через кодирование широковещательного канала (BCH).

mib = randi([0 1],34,1);
cw = lteBCH(mib,1600,enb.NBRefP);

Укажите состояние кодировщика как пустое.

statein = [];

Создайте символы NPBCH для каждого из 64 подкадров NPBCH и затем декодируйте их.

for subframeIdx = 0:63
    enb.NSubframe = subframeIdx*10; % As NPBCH is mapped only on 0th subframe of each frame
    sym = lteNPBCH(enb,cw);
    [decoderOut,stateout,symbols,NfMod64,trblk,NBRefP] = ...
        lteNPBCHDecode(enb,sym,statein);
    statein = stateout;
end

Чтобы проверить, успешно ли выполнено декодирование, отобразите значение NBRefP.

NBRefP
NBRefP = uint32
    1

Чтобы получить символы NPBCH, декодируйте форму сигнала, который генерируется с использованием генератора формы сигнала нисходящей линии связи NB-IoT.

Укажите конфигурацию NB-IoT eNireB с 65 кадрами.

ngen = NBIoTDownlinkWaveformGenerator;
ngen.Config.NNCellID = 120;
ngen.Config.NBRefP = 2;
ngen.Config.TotSubframes = 650;

Формирование формы сигнала, eNodeBOutput.

[eNodeBOutput,~,ofdmInfo] = ngen.generateWaveform;

Запустите процесс декодирования, предварительно инициализируя поля структуры enb.

enb.NNCellID = 120;
enb.NBRefP = 2;

Получение сетки ресурсов rxgrid, выполняют демодуляцию OFDM и генерируют индексы элемента ресурса NPBCH (RE).

OFDM нисходящей линии связи NB-IoT является таким же, как UL-SC-FDMA. Использовать lteSCFDMADemodulate для выполнения демодуляции OFDM.

enb.NBULSubcarrierSpacing = '15kHz';
rxgrid = lteSCFDMADemodulate(enb,eNodeBOutput); % NB-IoT Downlink OFDM Demodulation
npbchIndices = lteNPBCHIndices(enb);

Извлеките RE из сетки ресурсов с помощью индексов RE.

npbchRx = lteExtractResources( ...
    npbchIndices, rxgrid(1:12,1:14,:));

Укажите состояние кодировщика как пустое.

statein = [];

Декодирование символов NPBCH.

[decoderOut,stateout,symbols,nfmod64,trblk,NBRefP] = lteNPBCHDecode(enb,npbchRx,statein);

Чтобы проверить, успешно ли выполнено декодирование, отобразите значение NBRefP.

NBRefP
NBRefP = uint32
    2

Входные аргументы

свернуть все

Параметры для всей ячейки, указанные как структура, содержащая эти поля.

Поле параметраОбязательно или необязательноЦенностиОписаниеТипы данных
NNCellIDНеобходимый

Неотрицательное целое число

Идентификация ячейки физического уровня NB-IoT

double
NBRefPДополнительный

1, 2

Количество антенных портов узкополосного опорного сигнала (NRS). По умолчанию устанавливается NBRefP декодированием входных символов, sym.

double
NSubframeДополнительный

Неотрицательное целое число

Номер подкадра

double
NFrameДополнительный

0 (по умолчанию),

неотрицательное целое число

Начальный номер кадра

double

Типы данных: struct

Модулированные символы NPBCH, указанные как матрица комплексных значений NRE-by-NRxAnts, где:

  • NRE является кратным количеству символов квадратурной фазовой манипуляции (QPSK) на антенну и на подкадр, назначенный NPBCH.

  • NRxAnts - количество приемных антенн.

Типы данных: double
Поддержка комплексного номера: Да

Начальное состояние кодера для передачи пучка, определенного как структура, содержащая поля, перечисленные в stateout выход. В начале передачи жгута установить statein в пустой. lteNPBCHDecode функция управляет состоянием во время последующих вызовов для передач связки и автоматически сбрасывает его в конце связки.

Типы данных: struct

Оценка канала, заданная как массив комплексных значений NRE-by-NRxAnts-by-NNBRefP, где:

  • NRE является кратным количеству символов QPSK на антенну и подкадр.

  • NRxAnts - количество приемных антенн.

  • NNBRefP - количество антенных портов NRS, указанное в NBRefP области enb вход.

lteNPBCHDecode функция предполагает, что эта оценка использует NRS.

Типы данных: double
Поддержка комплексного номера: Да

Оценка шума, заданная как числовой скаляр. Это оценка спектральной плотности мощности шума на элемент ресурса в принятом подкадре. Эта оценка представлена lteDLChannelEstimate функция.

Типы данных: double

Выходные аргументы

свернуть все

Кодовое слово мягких битов, возвращаемое как N-by-1 двоичный вектор, где N может быть частью 1600-битовой длины кодового слова, кратной 200, или всего кодового слова, в зависимости от входных символов NPBCH, sym.

Типы данных: double

Состояние выходного декодера для следующего подкадра, возвращаемого в виде структуры. Эти выходные данные содержат внутреннее состояние каждого транспортного блока в этих полях.

ИмяЦенностиОписаниеТипы данных
SubframeIdxЦелое число в интервале [0, 63]Индекс подкадра в пучке в форме, основанной на нуле, возвращен как целое число в интервале [0,63]. lteNPBCHDecode функция возвращает это поле как SubframeIdx области statein ввод увеличен на единицу. Когда входное значение SubframeIdx в statein достигает максимального значения, функция возвращает это поле как 0. Если входные данные отсутствуют в statein, входным значением по умолчанию является 0. Значение 0 указывает, что передача достигла конца пучка, который также указывается функцией путем установки EndOfTx поле в true.double
CWBufferЧисловой вектор 1600 на 1Буфер для хранения мягко объединенных битов отношения логарифмического правдоподобия (LLR) после дескремблирования кодовых слов, возвращаемых в виде числового вектора 1600 на 1. Длина этого поля равна длине кодового слова. В начале пучка lteNPBCHDecode функция сбрасывает это поле.double
EndOfTxЛогичный 1 (true) или 0 (false)Конец индикатора пучка. lteNPBCHDecode функция возвращает это поле как 1 (true), когда передача достигает конца пучка. В противном случае lteNPBCHDecode функция возвращает это поле как 0 (false). В начале пучка lteNPBCHDecode функция сбрасывает это поле.logical

Типы данных: struct

Принятые символы созвездия, возвращаемые как вектор с комплексным значением.

Типы данных: double

Номер системного кадра по модулю 64, mod(NFrame,64), возвращается в виде целого числа в интервале [0, 63]. nfmod64 получается при определении фазы скремблирования входных символов NPBCH, sym.

Типы данных: double

Декодированные биты информации BCH, возвращаемые как вектор двоичного столбца 34 на 1.

Типы данных: int8

Количество портов NRS, возвращаемых как 0, 1 или 2, как определено во время декодирования BCH. Если значение равно 0, обнаружена ошибка CRC, и декодирование не выполнено.

Типы данных: uint32

Совет

Чтобы использовать эту функцию для передачи пучка, выполните следующие действия:

  1. Позвоните в lteNPBCHDecode и укажите начальное состояние кодировщика с помощью statein вход. stateout выходной сигнал представляет состояние декодера первой передачи пучка.

  2. Позвоните в lteNPBCHDecode снова и укажите statein ввод в качестве stateout вывод, возвращенный предыдущим вызовом функции.

  3. Повторите шаг 2 до lteNPBCHDecode функция возвращает EndOfTx области stateout вывод в виде 1 (true), указывая конец пучка. lteNPBCHDecode автоматически сбрасывает состояние в конце передачи пучка.

Ссылки

[1] 3GPP TS 36.211. «Физические каналы и модуляция». Проект партнерства 3-го поколения; техническая спецификация на сеть радиодоступа группы; Усовершенствованный универсальный наземный радиодоступа (E-UTRA). https://www.3gpp.org.

[2] 3GPP TS 36.212. «Мультиплексирование и канальное кодирование». Проект партнерства 3-го поколения; техническая спецификация на сеть радиодоступа группы; Усовершенствованный универсальный наземный радиодоступа (E-UTRA). https://www.3gpp.org.

Представлен в R2019b