exponenta event banner

nrDLSCHDecoder

Применение цепочки обработки декодера DL-SCH

Описание

nrDLSCHDecoder Система object™ применяет цепочку обработки декодера общего канала нисходящей линии связи (DL-SCH) к мягким битам, соответствующим одному или двум DL-SCH-кодированным транспортным блокам. Процесс декодирования DL-SCH состоит из восстановления скорости, декодирования с низкой плотностью проверки на четность (LDPC), десегментации и декодирования с циклическим избыточным кодом (CRC). Объект реализует обратную операцию процесса кодирования DL-SCH, указанного в TS 38.212 Раздел 7.2 [1].

Для применения цепочки обработки декодера DL-SCH:

  1. Создать nrDLSCHDecoder и задайте его свойства.

  2. Вызовите объект с аргументами, как если бы это была функция.

Дополнительные сведения о работе системных объектов см. в разделе Что такое системные объекты?.

Создание

Описание

decDL = nrDLSCHDecoder создает системный объект декодера DL-SCH.

decDL = nrDLSCHDecoder(Name,Value) создает объект со свойствами, заданными с помощью одной или нескольких пар имя-значение. Заключите имя свойства в кавычки, за которыми следует указанное значение. Неопределенные свойства принимают значения по умолчанию.

Пример: Например, nrDLSCHDecoder('MultipleHARQProcesses',true) создает объект и включает несколько гибридных процессов автоматического запроса повтора (HARQ).

Свойства

развернуть все

Если не указано иное, свойства не настраиваются, что означает невозможность изменения их значений после вызова объекта. Объекты блокируются при их вызове, и release функция разблокирует их.

Если свойство настраивается, его значение можно изменить в любое время.

Дополнительные сведения об изменении значений свойств см. в разделе Проектирование системы в MATLAB с использованием системных объектов.

Включить несколько процессов HARQ, указанных как false или true. Если установлено значение falseобъект использует один процесс. Если установлено значение trueобъект использует множество процессов HARQ, не более 16. Чтобы обеспечить возможность мягкого объединения повторных передач перед декодированием LDPC, объект поддерживает мягкий буфер для каждого процесса HARQ.

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

Целевая кодовая скорость, заданная как числовой скаляр или числовой вектор 1 на 2. Значения должны находиться в интервале (0, 1). Значение по умолчанию соответствует 526/1024. При указании TargetCodeRate в качестве скаляра объект применяет скалярное расширение при обработке двух транспортных блоков. Чтобы указать различные целевые скорости кода для каждого транспортного блока, укажите TargetCodeRate как вектор.

Настраиваемый: Да

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

Длина декодированного транспортного блока, или транспортных блоков, в битах, заданная как положительное скалярное целое число или целочисленный вектор 1 на 2. При указании TransportBlockLength в качестве скаляра объект применяет скалярное расширение при обработке двух транспортных блоков. Чтобы указать другую длину для декодированных транспортных блоков, укажите TransportBlockLength как вектор.

Настраиваемый: Да

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

Ограниченный размер буфера, используемый для восстановления скорости, указан как положительное целое число. Значение по умолчанию соответствует 384 × 66, что является максимальной кодированной длиной кодового блока. Значение по умолчанию не подразумевает ограничения на размер буфера.

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

Максимальное число итераций декодирования LDPC, указанное как положительное целое число. Поскольку досрочное завершение включено, декодирование прекращается, как только выполняются проверки четности. В этом случае выполняется меньше итераций, чем максимальное значение, указанное в этом аргументе.

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

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

  • 'Belief propagation' - Эта опция используется для указания алгоритма передачи верования или сообщения.

  • 'Layered belief propagation' - Используйте эту опцию для задания многоуровневого алгоритма передачи верований, который подходит для квазициклических матриц контроля четности (PCM).

  • 'Normalized min-sum' - Используйте эту опцию, чтобы задать алгоритм распространения многоуровневого представления с нормализованной аппроксимацией минимальной суммы.

  • 'Offset min-sum' - Используйте эту опцию, чтобы задать алгоритм распространения многоуровневого представления с аппроксимацией минимальной суммы смещения.

Дополнительные сведения об этих алгоритмах см. в разделе Алгоритмы декодирования LDPC.

Типы данных: char | string

Коэффициент масштабирования для нормализованного декодирования с минимальной суммой, заданный как действительный скаляр в диапазоне (0, 1].

Зависимости

Чтобы включить это свойство, установите значение LDPCDecodingAlgorithm свойство для 'Normalized min-sum'.

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

Смещение для декодирования минимальной суммы смещения, заданное как неотрицательный конечный вещественный скаляр.

Зависимости

Чтобы включить это свойство, установите значение LDPCDecodingAlgorithm свойство для 'Offset min-sum'.

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

Использование

Описание

пример

trblk = decDL(softbits,mod,nLayers,rv) применяет цепочку обработки декодера DL-SCH к входу softbits и возвращает декодированные биты. mod определяет схему модуляции. nLayers определяет количество уровней передачи. rv определяет версию избыточности передачи.

trblk = decDL(___,harqID) определяет номер процесса HARQ harqID используется с текущей передачей в дополнение к входным аргументам в предыдущем синтаксисе. Чтобы использовать этот синтаксис, установите MultipleHARQProcesses свойство для true. Если свойство имеет значение falseобъект использует процесс HARQ с номером 0.

Когда объект принимает кодовые слова с другой версией избыточности для отдельного процесса HARQ, объект использует сохранение состояния мягкого буфера, чтобы обеспечить возможность мягкого объединения повторных передач. При включении нескольких процессов HARQ объект сохраняет независимые буферы для каждого процесса.

[trblk,blkerr] = decDL(___) возвращает флаг ошибки, используя входные аргументы в любом из предыдущих синтаксисов. Значение 1 в blkerr указывает на ошибку при декодировании транспортного блока.

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

развернуть все

Мягкие биты приблизительного логарифмического отношения правдоподобия (LLR), соответствующие одному или двум транспортным блокам, кодированным DL-SCH, заданным как вектор вещественного столбца или массив ячеек из двух векторов вещественного столбца.

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

Схема модуляции, указанная как 'QPSK', '16QAM', '64QAM', '256QAM', строковый массив или массив ячеек символьных векторов. Эта схема модуляции определяет тип модуляции и количество битов, используемых на символ модуляции. Для двух транспортных блоков схема модуляции применяется к обоим блокам. В качестве альтернативы можно задать различные схемы модуляции для каждого транспортного блока, используя строковый массив или массив ячеек символьных векторов.

Схема модуляцииКоличество битов на символ
'QPSK'2
'16QAM'4
'64QAM'6
'256QAM'8

Типы данных: char | string

Количество уровней передачи, указанное как целое число от 1 до 8. Для nLayers 4, объект ожидает два кодированных блока переноса в качестве входных данных.

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

Версия избыточности, заданная как целое число от 0 до 3 или целочисленный вектор 1 на 2. При указании rv в качестве скаляра объект применяет скалярное расширение при обработке двух кодированных транспортных блоков. Чтобы указать другую версию избыточности для каждого кодированного транспортного блока, укажите rv как вектор.

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

Номер процесса HARQ, указанный как целое число от 0 до 15.

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

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

развернуть все

Декодированные транспортные блоки DL-SCH, возвращаемые как вектор двоичного столбца или массив ячеек из двух векторов двоичного столбца. TransportBlockLength свойство определяет длину векторов столбцов.

Результат декодирования транспортного блока DL-SCH для каждого транспортного блока, возвращаемого как логический скалярный или логический вектор длиной 2. Значение 1 в blkerr указывает на ошибку при декодировании транспортного блока.

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

Функции объекта

Чтобы использовать функцию объекта, укажите объект System в качестве первого входного аргумента. Например, для освобождения системных ресурсов объекта System с именем obj, используйте следующий синтаксис:

release(obj)

развернуть все

resetSoftBufferСброс мягкого буфера для процесса HARQ в декодере UL-SCH или DL-SCH
stepЗапустить алгоритм объекта System
cloneСоздать повторяющийся объект System
isLockedОпределить, используется ли объект System
releaseДеблокирование ресурсов и разрешение изменений значений свойств объекта системы и входных признаков
resetСброс внутренних состояний объекта System

Примеры

свернуть все

Генерируют случайную последовательность двоичных значений, соответствующих одному транспортному блоку длиной 5120.

trBlkLen = 5120;
trBlk = randi([0 1],trBlkLen,1,'int8');

Создайте и сконфигурируйте системный объект кодировщика DL-SCH с указанной целевой кодовой скоростью.

targetCodeRate = 567/1024;
encDL = nrDLSCH;
encDL.TargetCodeRate = targetCodeRate;

Загрузите транспортный блок в кодер DL-SCH.

setTransportBlock(encDL,trBlk);

Вызовите кодер со схемой модуляции 64-QAM, 1 уровень передачи, выходную длину 10 240 бит и версию избыточности 0. Кодер применяет цепочку обработки DL-SCH к транспортному блоку, загруженному в объект.

mod = '64QAM';
nLayers = 1;
outlen = 10240;
rv = 0;
codedTrBlock = encDL(mod,nLayers,outlen,rv);

Создайте и настройте системный объект декодера DL-SCH.

decDL = nrDLSCHDecoder;
decDL.TargetCodeRate = targetCodeRate;
decDL.TransportBlockLength = trBlkLen;

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

rxSoftBits = 1.0 - 2.0*double(codedTrBlock);
[decbits,blkerr] = decDL(rxSoftBits,mod,nLayers,rv)
decbits = 5120x1 int8 column vector

   1
   1
   0
   1
   1
   0
   0
   1
   1
   1
      ⋮

blkerr = logical
   0

Убедитесь, что переданные и принятые биты сообщения идентичны.

isequal(decbits,trBlk)
ans = logical
   1

Алгоритмы

развернуть все

Ссылки

[1] 3GPP TS 38.212. "НР; мультиплексирование и канальное кодирование. "Проект партнерства 3-го поколения; Техническая спецификация на сеть радиодоступа группы.

[2] Галлагер, Роберт Г. Коды проверки четности с низкой плотностью, Кембридж, Массачусетс, MIT Press, 1963.

[3] Hocevar, D.E. «Архитектура декодера с уменьшенной сложностью посредством многоуровневого декодирования кодов LDPC». Семинар IEEE по системам обработки сигналов, 2004 год. SIPS 2004. доис: 10.1109/SIPS.2004.1363033

[4] Чен, Jinghu, R.M. Крем для загара, К. Джонс и Ян Ли. «Улучшены алгоритмы декодирования с минимальной суммой для нерегулярных LDPC-кодов». В разбирательстве. Международный симпозиум по теории информации, 2005 год. ISIT 2005. дои: 10.1109/ISIT.2005.1523374

Расширенные возможности

.
Представлен в R2019a