lteNULSCHDecode

Декодируйте кодовое слово NB-IoT UL-SCH

Описание

[trBlkOut,blkCRC,stateOut] = lteNULSCHDecode(chs,trBlkLen,cw) возвращает trBlkOut, вектор длины trBlkLen содержит данные UL-SCH NB-IoT или управляющую информацию восходящей линии связи (UCI), декодированную из cw, кодовое слово NB-IoT общего канала восходящей линии связи (UL-SCH) коэффициентов логарифмической правдоподобности (LLR). Функция также возвращается blkCRC, результат декодирования type-24A циклического контроля избыточности транспортного блока (CRC) и stateOutсостояние декодирования гибридного автоматического запроса повторения (HARQ). Используйте этот синтаксис для данных NB-IoT UL-SCH или декодирования UCI. Если вы используете этот синтаксис для декодирования UCI, функция декодируется cw без мягкого комбинирования.

Для декодирования данных UL-SCH NB-IoT, функция инвертирует обработку UL-SCH, описанную в разделе 6.3.2 [1], путем удаления перемежения, восстановления скорости, турбодекодирования и декодирования CRC type-24A транспортного блока, декодирующего входное кодовое слово.

Для декодирования UCI функция инвертирует обработку UL-SCH, описанную в разделе 6.3.3 [1], путем срезания данных кодового слова.

пример

[trBlkOut,blkCRC,stateOut] = lteNULSCHDecode(cw) декодирует кодовое слово NB-IoT UL-SCH cw путем инвертирования обработки UL-SCH, описанной в разделе 6.3.3 [1]. Используйте этот синтаксис для UCI-декодирования без мягкого объединения.

пример

[trBlkOut,blkCRC,stateOut] = lteNULSCHDecode(___,stateIn) задает stateInначальное состояние декодера для каждого транспортного блока в активном процессе HARQ, в дополнение к любой входной комбинации из предыдущих синтаксисов. Если вы используете этот синтаксис для декодирования UCI, функция декодируется cw с мягким комбинированием.

Примеры

свернуть все

Сгенерируйте кодовое слово путем применения кодирования UCI к биту управляющей информации. Восстановите управляющую информацию путем декодирования.

Создайте бит управляющей информации для кодирования.

trBlkIn = 1;

Сгенерируйте кодовое слово UL-SCH.

cw = lteNULSCH(trBlkIn);

Восстановите транспортный блок путем декодирования кодового слова NB-IoT UL-SCH.

[trBlkOut,blkCRC,stateOut] = lteNULSCHDecode(cw);

Подтвердите, что восстановленный бит соответствует входу информации управления.

disp(isequal(trBlkIn,trBlkOut))
   1

Сгенерируйте кодовое слово данных UL-SCH NB-IoT путем кодирования 136-битного транспортного блока. Разделите кодовое слово на две передачи NPUSCH в двух последовательных пазах. Декодируйте передачу NPUSCH, а затем декодируйте принятое кодовое слово NB-IoT UL-SCH.

Настройте параметры UE.

ue = struct('NBULSubcarrierSpacing','15kHz','NNCellID',10,'NSlot',0);

Задайте строение передачи по каналу.

chs = struct('NPUSCHFormat','Data','NBULSubcarrierSet',0:11,'NRUsc',length(0:11),'NRep',1, ...
    'NRU',1,'NULSlots',2,'Modulation','QPSK','RV',0,'NTurboDecIts',5,'RNTI',20);

Сгенерируйте транспортный блок для кодирования.

trBlkLen = 136;
trBlkIn = randi([0 1],trBlkLen,1);

Получите длину кодового слова путем генерации индексов NPUSCH RE и связанной с ними информации.

[~,info] = lteNPUSCHIndices(ue,chs);
outLen = info.G;

Сгенерируйте кодовое слово UL-SCH.

cwIn = lteNULSCH(chs,outLen,trBlkIn);

Инициализируйте состояние энкодера для NPUSCH и состояния декодера для NPUSCH и UL-SCH.

npuschStateIn = struct();
npuschDecodeStateIn = struct();
stateIn = struct();

Сгенерируйте символы NPUSCH для паза 0, а затем верните состояние декодера путем декодирования символов NPUSCH.

[symSlot0,npuschStateOut] = lteNPUSCH(ue,chs,cwIn,npuschStateIn);
[~,npuschDecodeStateOut,~] = lteNPUSCHDecode(ue,chs,symSlot0,npuschDecodeStateIn);

Сгенерируйте символы NPUSCH для паза 1, а затем верните состояние декодера путем декодирования символов NPUSCH.

ue.NSlot = 1;
[symSlot1,~] = lteNPUSCH(ue,chs,cwIn,npuschStateOut);
[cw,~,~] = lteNPUSCHDecode(ue,chs,symSlot1,npuschDecodeStateOut);

Декодируйте принятое кодовое слово данных NB-IoT UL-SCH.

[trBlkOut,blkCRC,stateOut] = lteNULSCHDecode(chs,trBlkLen,cw,stateIn);

Подтвердите, что восстановленный UL-SCH NB-IoT соответствует исходному транспортному блоку.

disp(isequal(trBlkIn,trBlkOut))
   1

Входные параметры

свернуть все

Строение передачи по каналу, заданная как структура, содержащая эти поля.

ОбластьЗначенияОписаниеТипы данных
NPUSCHFormat'Data' (по умолчанию), 'Control'

Узкополосный физический формат общего канала восходящей линии связи (NPUSCH)

Чтобы указать, что NPUSCH содержит узкополосные данные общего канала восходящей линии связи (UL-SCH), задайте это поле следующим 'Data'. Чтобы указать, что NPUSCH несет управляющую информацию восходящего канала, задайте это поле следующим 'Control'.

char, string
NRU1, 2, 3, 4, 5, 6, 8, 10Количество ресурсных модулей (RU)double
NULSlots2, 4, 8, 16Количество пазов на RUdouble
Modulation'BPSK', 'QPSK'

Тип модуляции, заданный в качестве одного из следующих значений:

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

char, string
RV0, 2Индикатор версии резервированияdouble
NTurboDecIts5 (по умолчанию), целое число в интервале [1, 30]Количество циклов итерации турбодекодераdouble

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

Длина транспортного блока, заданная как положительное целое число. Скорость функции восстанавливает и турбодекодирует cw вход значения этого входа.

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

Кодовое слово NB-IoT UL-SCH LLR, заданное как двоичный вектор-столбец.

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

Начальное состояние буфера декодера для каждого транспортного блока в активном процессе HARQ, заданное как структура, содержащая это поле.

ОбластьЗначенияОписаниеТипы данных
CBSBuffersМассив ячеекМягкое буферное состояние LLR для входа транспортного блока в турбодекодер после восстановления скоростиcell

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

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

свернуть все

Декодированные NB-IoT UL-SCH данные или информационные биты UCI, возвращенные как двоичный вектор-столбец.

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

Type-24A индикатор ошибки декодирования CRC транспортного блока, возвращенный следующим 0 или 1. Когда lteNULSCHDecode функция декодирует cw при нулевых ошибках возвращает этот выход следующим 0. В противном случае функция возвращает этот выход следующим 1.

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

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

ОбластьЗначенияОписаниеТипы данных
CBSBuffersМассив ячеекМягкое буферное состояние LLR для входа транспортного блока в турбодекодер после восстановления скоростиcell
BLKCRC1, 0

Type-24A индикатор ошибки декодирования CRC транспортного блока

Когда функция декодируется cw при нулевых ошибках возвращает этот выход следующим 0 (false). В противном случае функция возвращает этот выход следующим 1 (true).

logical

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

Ссылки

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

См. также

Функции

Введенный в R2020a