exponenta event banner

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). Используйте этот синтаксис для декодирования данных UL-SCH NB-IoT или UCI. При использовании этого синтаксиса для декодирования UCI функция декодирует cw без мягкого объединения.

Для декодирования данных UL-SCH NB-IoT функция инвертирует обработку UL-SCH, описанную в разделе 6.3.2 [1], путем обращенного перемежения, восстановления скорости, турбодекодирования и декодирования ЦИК транспортного блока 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);

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

[~,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);

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

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. «Мультиплексирование и канальное кодирование». Проект партнерства 3-го поколения; техническая спецификация на сеть радиодоступа группы; Усовершенствованный универсальный наземный радиодоступа (E-UTRA). https://www.3gpp.org.

См. также

Функции

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