lteDLSCHDecode

Декодирование нисходящего общего канала

Описание

пример

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

enb является структурой входного параметра, которая может включать необязательные поля, определяющие дуплексный режим. Поскольку дуплексный режим по умолчанию равен 'FDD', если 'DuplexMode' поле отсутствует, enb может быть пустой структурой.

chs является структурой входа параметра, определяющей аспекты PDSCH, на который отображены кодовые слова, и версий мягкого buffer size DL-SCH и избыточности принятых кодовых слов.

trblklen является вектором входа, одним или двумя элементами в длину, определяющим длины транспортных блоков, до которых блоки кода входа восстанавливаются и декодируются.

cwin является вход параметром, содержащим мягкие LLR-данные с плавающей точкой для кодовых слов, которые будут декодироваться. Это либо один вектор, либо массив ячеек, содержащий один или два вектора. Если это массив ячеек, все вычисления соответствия скорости предполагают, что пара передает на одном PDSCH, распределенном между общим количеством слоев, заданным в chs, согласно ТУ 36.211 [1].

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

trblkout - выходной параметр, содержащий декодированные информационные биты. Это либо один вектор, либо массив ячеек, содержащий один или два вектора, в зависимости от класса и размерности cwin.

blkcrc - выход массив, один или два элемента, содержащий результат декодирования CRC type-24A транспортного блока для транспортных блоков.

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

Примеры

свернуть все

Этот пример генерирует и декодирует 2 передачи, одну с RV, установленной на 0, и одну с RV, установленной на 1, как часть процесса HARQ с одним кодовым словом для R.7 RMC.

Установите номер подкадра. Получите определение R.7 RMC. Сгенерируйте данные транспортного блока. Примените цепь кодирования транспортного канала DL-SCH к trBlkData. Создайте кодовое слово с RV = 0. Превратите логические биты в данные 'LLR'

nsf = 1;

rmc = lteRMCDL('R.7');

trBlkSize = rmc.PDSCH.TrBlkSizes(nsf);
codedTrBlkSize = rmc.PDSCH.CodedTrBlkSizes(nsf);
trBlkData = randi([0,1],trBlkSize,1);

rmc.PDSCH.RV = 0;        
cw = lteDLSCH(rmc,rmc.PDSCH,codedTrBlkSize,trBlkData);

cw(cw == 0) = -1;

Инициализируйте состояния декодера для первой передачи HARQ. Возвращенный decState содержит состояние буфера декодера для каждого транспортного блока для активного процесса HARQ с RV = 1

decState = [];
[rxTrBlk,~,decState] = lteDLSCHDecode(rmc,rmc.PDSCH,trBlkSize,cw,decState);

Создайте второе повторно переданное кодовое слово. Превратите логические биты в данные 'LLR'. Используйте предыдущее состояние буфера декодера передачи, decState, как часть последовательности активных передач HARQ

rmc.PDSCH.RV = 1;
cw = lteDLSCH(rmc,rmc.PDSCH,codedTrBlkSize,trBlkData);

cw(cw == 0) = -1;  
rxTrBlk = lteDLSCHDecode(rmc,rmc.PDSCH,trBlkSize,cw,decState);

size(rxTrBlk)
ans = 1×2

       28336           1

rxTrBlk(1:10)
ans = 10x1 int8 column vector

   1
   1
   0
   1
   1
   0
   0
   1
   1
   1

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

свернуть все

Параметры всей ячейки, заданные как структура со следующими полями.

Поле параметраТребуемый или опционныйЗначенияОписание

Если chs.NSoftBits определено включать в себя:

DuplexModeДополнительный

'FDD' (по умолчанию), 'TDD'

Режим дуплекса, заданный как:

  • 'FDD' для дуплекса частотного деления или

  • 'TDD' для дуплекса временного деления

Поскольку дуплексный режим по умолчанию равен 'FDD', если это поле отсутствует, enb может быть пустой структурой.

Когда DuplexMode установлено в 'TDD' включают:

TDDConfigДополнительный

0, 1 (по умолчанию), 2, 3, 4, 5, 6

Строение восходящего канала-нисходящего канала

Требуется только для 'TDD' дуплексный режим.

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

Строение канала, заданная как структура, имеющая следующие поля.

Поле параметраТребуемый или опционныйЗначенияОписание
ModulationНеобходимый'QPSK', '16QAM', '64QAM', '256QAM', '1024QAM'

Тип модуляции, сопоставленный с каждым транспортным блоком, задается как вектор символов, массив ячеек из векторов символов для 2 блоков или строковые массивы.

NLayersНеобходимый

1, 2, 3, 4

Общее количество слоев передачи, сопоставленных с транспортным блоком или блоками.

TxSchemeДополнительный

'Port0' (по умолчанию), 'TxDiversity', 'CDD', 'SpatialMux', 'MultiUser', 'Port5', 'Port7-8', 'Port8', 'Port7-14'.

Схема передачи PDSCH, заданная как один из следующих опций.

Схема передачиОписание
'Port0'Один порт антенны, порт 0
'TxDiversity'Передайте разнесение
'CDD'Схема разнесения с большой задержкой
'SpatialMux'Пространственное мультиплексирование с циклом
'MultiUser'Многопользовательский MIMO
'Port5'Одноантенный порт, порт 5
'Port7-8'Порт с одной антенной, порт 7, когда NLayers  = 1. Передача с двух слоев, порты 7 и 8, когда NLayers = 2.
'Port8'Порт с одной антенной, порт 8
'Port7-14'До восьми слоев передачи, порты 7-14

RVНеобходимый

0, 1, 2, 3

2-элементный числовой вектор

Индикатор версии избыточности, заданный как числовой вектор с значением 1 или 2. Возможные значения: 0, 1, 2 или 3.

NSoftbitsДополнительный

Неотрицательное скалярное целое число (по умолчанию 0)

Общее количество мягких буферных бит. Значение по умолчанию 0 означает, что буферный предел отсутствует.

Если NSoftbits отсутствует, не устанавливается предел на количество мягких бит.

NTurboDecItsДополнительный

5 (по умолчанию)

Целое число от 1 до 30

Количество циклов итерации турбодекодера

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

Транспортные длины блоков, заданные как одно- или двухэлементный числовой вектор. Он определяет длины транспортных блоков, на которые должны быть восстановлены и декодированы входные блоки кода.

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

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

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

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

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

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

свернуть все

Декодированные информационные биты, возвращенные как числовой вектор или массив ячеек из одного или двух числовых векторов. trblkout отражает тип данных и размер cwin.

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

Type-24A декодирования CRC транспортного блока результата, возвращаемый как логический вектор из одного или двух элементов.

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

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

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

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

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

CBSCRC

Логический вектор

Массив блока кода type-24B задать результаты декодирования CRC

BLKCRC

Логический скаляр

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

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

Ссылки

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

Введенный в R2014a