lteNDLSCHDecode

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

Описание

[trblkout,blkcrc,stateout] = lteNDLSCHDecode(trblklen,cwin) возвращает информационные биты, trblkout, декодированный из входных данных кодового слова LLR, cwin. Декодер NB-IoT нисходящего общего канала (DL-SCH) включает в себя восстановление скорости, декодирование Viterbi и вычисление CRC. Функция также возвращает результат декодирования CRC type-24A транспортного блока blkcrc и состояние декодирования процесса HARQ в stateout.

пример

[trblkout,blkcrc,stateout] = lteNDLSCHDecode(trblklen,cwin,statein)задает начальное состояние процесса HARQ в statein структура. Исходная передача и повторная передача являются пакетами, содержащими несколько субкадров, определенных в разделе 5.3.2.1 [1].

Примеры

свернуть все

Этот пример показывает, как передать пакет, несущий один и тот же транспортный блок дважды. Мягкие биты LLR из повторных подкадров в пучке объединяются в структуре dstateмягкие биты LLR из двух пучков объединяются в структуру state. Обратите внимание, что dstate сбрасывается перед повторной передачей пучка.

Задайте настройки всей ячейки и строение передачи канала в параметрических структурах enb и chs.

enb.NNCellID = 0;
enb.NBRefP = 1;
enb.NFrame = 1;
chs.NSF = 3;
chs.NRep = 4;
chs.RNTI = 0;
chs.NPDSCHDataType = 'NotBCCH';

Установите длину транспортного блока равную 208, а выход кодового слова равную 960. Инициализируйте состояния декодера для первой передачи HARQ. Сгенерируйте данные транспортного блока.

trblklen = 208;
outlen = 960;
estate = []; 
dstate = []; 
state = [];
trblkin = randi([0 1],trblklen,1);

Сгенерируйте 960 бит кодового слова NB-Iot DL-SCH.

cw = lteNDLSCH(outlen,trblkin);

Выполните начальную передачу пучка, содержащего транспортный блок. Проверьте наличие ошибок в передаче.

for subframeIdx = 0:(chs.NSF*chs.NRep-1)
    enb.NSubframe = subframeIdx;
    [sym,estate] = lteNPDSCH(enb,chs,cw,estate);
    [rxcw, dstate] = lteNPDSCHDecode(enb,chs,sym,dstate);
end
[trblkout1,blkerr1,state] = lteNDLSCHDecode(trblklen,rxcw,state);
blkerr1
blkerr1 = logical
   0

Выполните повторную передачу пучка, содержащего тот же транспортный блок. Информация, полученная от передачи начального пакета, сохранена в состоянии и используется в качестве входов для lteNDLSCHDecode. Проверьте наличие ошибок при повторной передаче.

for subframeIdx = chs.NSF*chs.NRep:(2*chs.NSF*chs.NRep-1)
    enb.NSubframe = subframeIdx;
    [sym,estate] = lteNPDSCH(enb,chs,cw,estate);
    [rxcw,dstate] = lteNPDSCHDecode(enb,chs,sym,dstate);
end
[trblkout2,blkerr2,state] = lteNDLSCHDecode(trblklen,rxcw,state);
blkerr2
blkerr2 = logical
   0

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

свернуть все

Длина транспортного блока, заданная как неотрицательное целое число. trblklen определяет длины транспортных блоков, на которые должны быть восстановлены и декодированы входные блоки кода.

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

Мягкие данные кодового слова LLR, заданные как числовой вектор. cwin содержит мягкие данные LLR с плавающей точкой кодового слова, которое должно быть декодировано.

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

Начальное состояние процесса HARQ, заданное как структура. Структура может быть пустой или содержать это поле:

ИмяЗначенияОписаниеТипы данных
CBSBuffers

Массив ячеек из векторов

Состояние мягкого буфера LLR, сопоставленное с одним транспортным блоком. Буфер расположен на входе в декодер Viterbi после явного восстановления скорости.cell

Обновленные состояния буфера после декодирования возвращаются в CBSBuffers поле stateout выход. The statein массив обычно генерируется и перерабатывается из stateout предыдущих вызовов на lteNDLSCHDecode как часть последовательности передач HARQ.

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

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

свернуть все

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

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

Type-24A результат декодирования CRC транспортного блока, возвращенный в виде числа или логического 1 (true) или 0 (false).

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

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

Поле параметраЗначенияОписаниеТипы данных
CBSBuffers

Массив ячеек из векторов

Мягкие буферные состояния LLR для набора блоков кодов, сопоставленных с одним транспортным блоком. Буферы располагаются на входе в декодер Viterbi после явного восстановления скорости. cell
BLKCRC

true или 1, false или 0

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

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

Ссылки

[1] 3GPP TS 36.321. "Evolved Universal Terrestrial Radio Access (E-UTRA); Спецификация протокола управления средним доступом (MAC). "3rd Генерация Partnership Project; Группа технических спецификаций Радиосеть доступ. URL-адрес: https://www.3gpp.org.

См. также

|

Введенный в R2018a