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. В обоих случаях, чтобы включить повторные передачи, когда отказ происходит, объект буферизует входные данные.

Типы данных: логический

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

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

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

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

Типы данных: логический

Ограниченный 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.

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

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

Схема Modulation в виде '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

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

Чтобы использовать объектную функцию, задайте Системный объект как первый входной параметр. Например, чтобы выпустить системные ресурсы Системного объекта под названием 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; Мультиплексирование и кодирование канала”. Проект Партнерства третьего поколения; Сеть радиодоступа Technical Specification Group.

[2] 3GPP TS 38.211. “NR; Физические каналы и модуляция”. Проект Партнерства третьего поколения; Сеть радиодоступа Technical Specification Group.

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

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

Объекты

Функции

Введенный в R2019a