nrDLSCHDecoder

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

Описание

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

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

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

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

Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты? MATLAB.

Создание

Синтаксис

decDL = nrDLSCHDecoder
decDL = nrDLSCHDecoder(Name,Value)

Описание

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

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

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

Свойства

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

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

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

Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Используя Системные объекты (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

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

Синтаксис

trblk = decDL(softbits,mod,nLayers,rv)
trblk = decDL(___,harqID)
[trblk,blkerr] = decDL(___)

Описание

пример

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 = 5120×1 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.

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

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

Системные объекты

Функции

Введенный в R2019a