nrDLSCH

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

Описание

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

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

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

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

Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты? MATLAB.

Создание

Описание

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

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

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

Свойства

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

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

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

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

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

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

Целевой уровень кода в виде числового скаляра или 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 функция.

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

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

Схема Modulation в виде '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; Мультиплексирование и кодирование канала”. Проект Партнерства третьего поколения; Сеть радиодоступа Technical Specification Group.

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

Введенный в R2019a