nrULSCH

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

Описание

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

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

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

Создание

Описание

encUL = nrULSCH создает кодировщик UL-SCH Системного объекта.

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

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

Свойства

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

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

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

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

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

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

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

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

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

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

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

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

Зависимости

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

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

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

Описание

пример

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

пример

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

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

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

Схема модуляции, заданная как '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

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

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

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

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

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

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

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

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

Кодовое слово UL-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');

Создайте и сконфигурируйте кодер 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

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

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

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

encUL = nrULSCH;
encUL.MultipleHARQProcesses = true;

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

harqID = 2;
setTransportBlock(encUL,trBlk,harqID);

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

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

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

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

Ссылки

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

[2] 3GPP TS 38.211. "NR; Физические каналы и модуляция ". 3rd Генерация Partnership Project; Группа технических спецификаций Радиосеть доступ.

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

.

См. также

Объекты

Функции

Введенный в R2019a