nrULSCHDecoder

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

Описание

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

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

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

Создание

Синтаксис

decUL = nrULSCHDecoder
decUL = nrULSCHDecoder(Name,Value)

Описание

decUL = nrULSCHDecoder создает Системный объект декодера UL-SCH.

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

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

Свойства

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

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

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

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

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

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

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

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

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

Длина декодируемого транспортного блока, в битах, заданных как положительное целое число.

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

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

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

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

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

Зависимости

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

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

Максимальный LDPC декодирование итераций, заданных как положительное целое число. Поскольку раннее завершение включено, декодируя остановки, если проверки четности удовлетворены. В этом случае меньше итераций происходит, чем максимум, заданный этим аргументом.

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

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

Синтаксис

trblk = decUL(softbits,mod,nLayers,rv)
trblk = decUL(___,harqID)
[trblk,blkerr] = decUL(___)

Описание

пример

trblk = decUL(softbits,mod,nLayers,rv) применяет цепочку обработки декодера UL-SCH к входу softbits и возвращает декодируемые биты. mod задает схему модуляции. nLayers задает количество слоев передачи. rv задает версию сокращения передачи.

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

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

[trblk,blkerr] = decUL(___) возвращает флаг ошибки, с помощью входных параметров в любом из предыдущих синтаксисов. Значение 1 в blkerr указывает на ошибку во время транспортного блокового декодирования.

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

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

Аппроксимированное логарифмическое отношение правдоподобия (LLR) мягкие биты, соответствуя UL-SCH-encoded транспортирует блок, заданный как действительный вектор-столбец.

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

Схема 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

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

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

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

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

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

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

Декодируемые UL-SCH транспортируют блок, возвращенный как вектор столбца двоичных данных длины, заданной свойством TransportBlockLength.

Результат UL-SCH транспортирует блоковое декодирование, возвращенное как логический скаляр. Значение 1 указывает на ошибку во время транспортного блокового декодирования.

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

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

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

release(obj)

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

resetSoftBufferСбросьте мягкий буфер для процесса HARQ в 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 = 5120×1 int8 column vector

   1
   1
   0
   1
   1
   0
   0
   1
   1
   1
      ⋮

blkerr = logical
   0

Проверьте, что переданные и полученные биты сообщения идентичны.

isequal(decbits,trBlk)
ans = logical
   1

Ссылки

[1] 3GPP TS 38.212. “NR; Мультиплексирование и кодирование канала”. Проект Партнерства третьего поколения; Сеть радиодоступа Technical Specification Group.

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

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

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

Системные объекты

Функции

Введенный в R2019a