lteNPBCHDecode

Декодируйте модулируемые символы NPBCH

Описание

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

пример

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

пример

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

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

Примеры

свернуть все

Сгенерируйте и декодируйте подкадр символов NPBCH подкадром для пакета 40 подкадров NPBCH.

Задайте настройки всей ячейки в структуре enb.

enb.NNCellID = 0;
enb.NBRefP = 1;

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

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

Задайте состояние энкодера как пустое.

statein = [];

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

for subframeIdx = 0:40
        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);
end

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

NBRefP
NBRefP = uint32
    1

Отобразите NfMod64 и декодируемые биты MIB, trblk.

NfMod64
NfMod64 = 40
trblk
trblk = 34x1 int8 column vector

   1
   1
   0
   1
   1
   0
   0
   1
   1
   1
      ⋮

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

Задайте настройку NB-IoT eNodeB с 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 OFDM совпадает с UL-SC-FDMA. Используйте lteSCFDMADemodulate выполнять демодуляцию OFDM.

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

Извлеките REs из сетки ресурса с помощью индексов 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-NRxAnts матрица с комплексным знаком, где:

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

  • N RxAnts является количеством, получают антенны.

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

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

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

Оценка канала, заданная как RE N NRxAnts NNBRefP массивом с комплексным знаком, где:

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

  • N RxAnts является количеством, получают антенны.

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

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

Типы данных: 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
CWBuffer1600 1 числовой векторБуфер, чтобы сохранить мягко объединенные биты отношения логарифмической правдоподобности (LLR) после дескремблирования кодовой комбинации, возвращенного как 1600 1 числовой вектор. Длина этого поля совпадает с длиной кодовой комбинации. В начале пакета, lteNPBCHDecode функционируйте сбрасывает это поле.double
EndOfTxЛогический 1 TRUE) или 0 ложь)Конец индикатора пакета. lteNPBCHDecode функция возвращает это поле как 1 TRUE) когда передача достигает конца пакета. В противном случае, lteNPBCHDecode функция возвращает это поле как 0 ложь). В начале пакета, 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. “Физические каналы и модуляция (Релиз 14)”. Проект Партнерства третьего поколения; Сеть радиодоступа Technical Specification Group; Развитый Универсальный Наземный Радио-доступ (к E-UTRA). URL: https://www.3gpp.org.

[2] 3GPP TS 36.212. “Развитый Универсальный Наземный Радио-доступ (к E-UTRA); Мультиплексирование и кодирование канала”. Проект Партнерства третьего поколения; Сеть радиодоступа Technical Specification Group. URL: https://www.3gpp.org.

Смотрите также

| | |

Введенный в R2019b