exponenta event banner

nrDLSCH

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

Описание

nrDLSCH Система object™ применяет цепочку обработки кодера общего канала нисходящей линии связи (DL-SCH) к одному или двум транспортным блокам. Процесс кодирования DL-SCH состоит из циклического контроля избыточности (CRC), сегментации кодовых блоков и CRC, кодирования с низкой плотностью контроля четности (LDPC), согласования скорости и конкатенации кодовых блоков. Объект System реализует TS 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

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

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

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

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

release(obj)

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

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

Примеры

свернуть все

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

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

.
Представлен в R2019a