exponenta event banner

nrULSCH

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

Описание

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

  • Разделы 6.2.1: Крепление CRC транспортного блока

  • Разделы 6.2.2: Выбор базового графика LDPC

  • Разделы 6.2.3: Сегментация кодового блока и присоединение CRC кодового блока

  • Разделы 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

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

Зависимости

Чтобы включить это свойство, установите 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. Для получения дополнительной информации см. TS 38.211 раздел 6.3.1.3.

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

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

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

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

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

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

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

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

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

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

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

[2] 3GPP TS 38.211. "НР; Физические каналы и модуляция. "Проект партнерства 3-го поколения; Техническая спецификация на сеть радиодоступа группы.

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

.

См. также

Объекты

Функции

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