nrULSCHDecoder

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

Описание

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

  • Разделы 6.2.1: Приложение CRC транспортного блока

  • Разделы 6.2.2: Выбор базового графика LDPC

  • Разделы 6.2.3: Сегментация кодовых блоков и вложение кода блоков

  • Разделы 6.2.4: Канальное кодирование UL-SCH

  • Разделы 6.2.5: Соответствие ставок

  • Разделы 6.2.6: Код блоков

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

  1. Создайте nrULSCHDecoder Объекту и установите его свойства.

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

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

Создание

Описание

decUL = nrULSCHDecoder создает декодер UL-SCH Системного объекта.

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

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

Свойства

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

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

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

Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Использование Системных объектов.

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

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

Целевая скорость кода, заданная как действительное число в интервале (0, 1). Значение по умолчанию соответствует 526/1024.

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

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

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

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

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

Включите ограниченное восстановление скорости буфера, заданное как false или true. Когда установлено значение falseразмер внутреннего буфера, используемого для восстановления скорости, является полной закодированной длиной каждого блока кода. Когда установлено значение true, можно задать размер внутреннего буфера, используемого для восстановления скорости путем установки LimitedBufferSize свойство.

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

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

Зависимости

Чтобы включить это свойство, задайте LimitedBufferRateRecovery на true.

Типы данных: 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 = decUL(softbits,mod,nLayers,rv) применяет цепь обработки декодера UL-SCH к входу softbits и возвращает декодированные биты. mod задает схему модуляции. nLayers задает количество слоев передачи. rv задает версию резервирования коробки передач.

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

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

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

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

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

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

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

Схема модуляции, заданная как 'pi/2-BPSK', 'QPSK', '16QAM', '64QAM', или '256QAM'. Эта схема модуляции определяет тип модуляции и количество бит, используемых на символ модуляции.

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

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

Количество слоев передачи, заданное в виде целого числа от 1 до 4. Для получения дополнительной информации см. раздел 6.3.1.3 ТУ 38.211.

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

Версия избыточности, заданная в виде целого числа от 0 до 3.

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

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

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

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

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

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

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

Типы данных: 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');

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

targetCodeRate = 567/1024;
encUL = nrULSCH;
encUL.TargetCodeRate = targetCodeRate;

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

setTransportBlock(encUL,trBlk);

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

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

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

decUL = nrULSCHDecoder;
decUL.TargetCodeRate = targetCodeRate;
decUL.TransportBlockLength = trBlkLen;

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

rxSoftBits = 1.0 - 2.0*double(codedTrBlock);
[decbits,blkerr] = decUL(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] 3GPP TS 38.211. "NR; Физические каналы и модуляция ". 3rd Генерация Partnership Project; Группа технических спецификаций Радиосеть доступ.

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

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

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

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

.

См. также

Объекты

Функции

Введенный в R2019a