nrDLSCH

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

Описание

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

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

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

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

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

Создание

Описание

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

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

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

Свойства

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

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

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

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

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

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

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

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

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

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

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

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

Описание

пример

codedBits = encDL(mod,nLayers,outlen,rv) применяет цепь обработки энкодера DL-SCH к одному или двум транспортным блокам. Объект возвращает закодированные, согласованные по скорости и конкатенированные блоки кода как одно или два кодовых слова длины outlen. Перед вызовом этого объекта необходимо загрузить транспортные блоки в объект с помощью setTransportBlock функция объекта. mod задает схему модуляции. nLayers задает количество слоев передачи. rv задает версию резервирования коробки передач.

пример

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

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

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

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

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

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

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

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

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

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

Фактическая длина выхода является кратным продуктом количества бит на символ и количества слоев передачи. Для примера, для 64-QAM и 1 слоев передачи, если вы задаете 16 для outlenфактическая выходная длина 6x1x3 = 18.

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

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

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

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

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

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

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

Одно или два кодовых слова DL-SCH, возвращенные как двоичный вектор-столбец или массив ячеек из двух двоичных векторов-столбцов. Кодовое слово является кодированными, согласованными со скоростью и конкатенированными кодовыми блоками, полученными путем обработки одного транспортного блока. Задайте длину кодовых слов при помощи outlen входной параметр.

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

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

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

release(obj)

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

getTransportBlockПолучите транспортный блок из UL-SCH или DL-SCH энкодера
setTransportBlockЗагрузите транспортный блок в 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

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

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

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

encDL = nrDLSCH;
encDL.MultipleHARQProcesses = true;

Загрузите trBlk транспортного блока для транспортного блока с номером 0 в энкодер DL-SCH, задающий процесс HARQ с номером 2.

harqID = 2;
trBlkID = 0;
setTransportBlock(encDL,trBlk,trBlkID,harqID);

Вызовите энкодер со схемой модуляции QPSK, 3 слоями передачи, выходной длиной 10 002 бита и версией резервирования 3. Энкодер применяет цепь обработки DL-SCH к транспортному блоку, загруженному в объект для процесса HARQ № 2.

mod = 'QPSK';
nLayers = 3;
outlen = 10002;
rv = 3;
codedTrBlock = encDL(mod,nLayers,outlen,rv,harqID);

Проверьте, что кодированный транспортный блок имеет необходимое количество бит.

isequal(length(codedTrBlock),outlen)
ans = logical
   1

Ссылки

[1] 3GPP TS 38.212. "NR; Мультиплексирование и канальное кодирование. "3rd Генерация Partnership Project; Группа технических спецификаций Радиосеть доступ.

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

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