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, кодовое слово мягких бит, состояние декодера для приема bundle (полный набор повторных передач одного транспортного блока) 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.

Задайте строение eNodeB NB-IoT с 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 и сгенерируйте индексы ресурсного элемента (RE) NPBCH.

NB-IoT Nownlink OFDM аналогичен 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, заданные как N RE-by N RxAnts комплексно-оцененной матрицы, где:

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

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

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

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

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

Оценка канала, заданная как N RE-by N RxAnts-by N NBRefP комплексно-значимый массив, где:

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

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

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

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

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

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

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

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

свернуть все

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

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

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

ИмяЗначенияОписаниеТипы данных
SubframeIdxЦелое число в интервале [0, 63]Индекс субкадра в пучке, в нулевой форме, возвращается в виде целого числа в интервале [0,63]. lteNPBCHDecode функция возвращает это поле как SubframeIdx поле statein вход увеличен на единицу. Когда входное значение SubframeIdx в statein вход достигает своего максимального значения, функция возвращает это поле следующим 0. Если вход не существует в statein, входной вход по умолчанию 0. Значение 0 указывает, что передача достигла конца пакета, который функция также указывает путем установки EndOfTx поле к true.double
CWBuffer1600 на 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 вход. The stateout выход представляет состояние декодера первой передачи пучка.

  2. Вызовите lteNPBCHDecode еще раз выполните функцию и задайте statein вход как stateout выход, возвращенный предыдущим вызовом функции.

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

Ссылки

[1] 3GPP TS 36.211. «Физические каналы и модуляция». 3-ья Генерация проект партнерства; Группа технических спецификаций Radio Доступа Network; Evolved Universal Terrestrial Radio Access (E-UTRA). https://www.3gpp.org.

[2] 3GPP TS 36.212. «Мультиплексирование и канальное кодирование». 3rd Генерация Partnership Project; Группа технических спецификаций Radio Доступа Network; Evolved Universal Terrestrial Radio Access (E-UTRA). https://www.3gpp.org.

Введенный в R2019b