nrDLSCHDecoder

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

Описание

nrDLSCHDecoder Система object™ применяет нисходящий канал совместно использованный канал (DL-SCH) цепь обработки декодера к мягким битам, соответствующим одному или двум транспортным блокам DL-SCH-encoded. 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.

Типы данных: логический

Целевая скорость кода в виде числового скаляра или 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' — Используйте эту опцию, чтобы задать многоуровневый передающий веру алгоритм, который подходит для квазициклических матриц проверки четности (PCMs).

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

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

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

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

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

Зависимости

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

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

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

Зависимости

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

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

Схема Modulation в виде '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 указывает на ошибку во время транспортного блокового декодирования.

Типы данных: логический

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

Чтобы использовать объектную функцию, задайте Системный объект как первый входной параметр. Например, чтобы выпустить системные ресурсы Системного объекта под названием 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; Мультиплексирование и кодирование канала”. Проект Партнерства третьего поколения; Сеть радиодоступа Technical Specification Group.

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

[3] Hocevar, D.E. "Уменьшаемая архитектура декодера сложности через многоуровневое декодирование кодов LDPC". В Семинаре IEEE по Системам Обработки сигналов, 2004. ГЛОТКИ 2004. dois: 10.1109/SIPS.2004.1363033

[4] Чен, Jinghu, Р.М. Таннер, К. Джонс и Ян Ли. "Улучшенные алгоритмы декодирования суммы min для неправильных кодов LDPC". В Продолжениях. Международный Симпозиум по Теории информации, 2005. ISIT 2005. doi: 10.1109/ISIT.2005.1523374

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

Смотрите также

Объекты

Функции

Введенный в R2019a
Для просмотра документации необходимо авторизоваться на сайте