lteNULSCHDecode

Декодируйте кодовую комбинацию NB-IoT UL-SCH

Описание

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

Для декодирования данных NB-IoT UL-SCH функция инвертирует UL-SCH обработка описанного в разделе 6.3.2 из [1] путем устранения чередования, восстановление уровня, турбо декодирование и транспортный блок CRC типа-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

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

Сконфигурируйте настройки UE-specific.

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);

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

disp(isequal(trBlkIn,trBlkOut))
   1

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

свернуть все

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

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

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

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

charСтрока
NRU1, 2, 3, 4, 5, 6, 8, 10Количество (РУССКИХ) модулей ресурсаdouble
NULSlots2, 4, 8, 16Количество пазов на RUdouble
Modulation'BPSK', 'QPSK'

Тип модуляции в виде одного из этих значений:

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

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

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

Транспортная длина блока в виде положительного целого числа. Функциональный уровень восстанавливается, и турбо декодирует cw введите к значению этого входа.

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

Кодовая комбинация NB-IoT UL-SCH LLRs в виде вектор-столбца с бинарным знаком.

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

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

Поле ЗначенияОписаниеТипы данных
CBSBuffersCellArrayLLR мягкое буферное государство для транспортного входа блока к турбо декодеру после восстановления уровняcell

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

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

свернуть все

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

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

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

Типы данных: логический

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

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

Введите-24A транспортный блок CRC, декодирующий ошибочный индикатор

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

logical

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

Ссылки

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

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

Функции

Введенный в R2020a