nrDLSCHDecoder

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

Описание

The 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

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

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

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

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

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

  • 'Belief propagation' - Используйте эту опцию, чтобы задать алгоритм передачи убеждений или сообщений.

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

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

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

Для получения дополнительной информации об этих алгоритмах см. «Алгоритмы декодирования LDPC».

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

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

Зависимости

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

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

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

Зависимости

Чтобы включить это свойство, установите 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, возвращенные как двоичный вектор-столбец или массив ячеек из двух двоичных векторов-столбцов. The TransportBlockLength свойство задает длину векторов-столбцов.

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

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

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

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

release(obj)

расширить все

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

Примеры

свернуть все

Сгенерируйте случайную последовательность двоичных значений, соответствующих одному транспортному блоку длины 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. "NR; Мультиплексирование и канальное кодирование. "3rd Генерация Partnership Project; Группа технических спецификаций Радиосеть доступ.

[2] Gallager, Robert G. Low-Density Parity-Check Codes, Cambridge, MA, MIT Press, 1963.

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

[4] Chen, Jinghu, R.M. Tanner, C. Jones и Yan Li. «Улучшенные алгоритмы декодирования min-sum для неправильных кодов LDPC». В производстве. Международный симпозиум по теории информации, 2005 год. ISIT 2005. doi: 10.1109/ISIT.2005.1523374

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

.
Введенный в R2019a