nrUCIDecode

Декодируйте восходящую управляющую информацию (UCI)

Синтаксис

ucibits = nrUCIDecode(softbits,A)
ucibits = nrUCIDecode(softbits,A,mod)
ucibits = nrUCIDecode(___,'ListLength',L)
[ucibits,err] = nrUCIDecode(___)

Описание

ucibits = nrUCIDecode(softbits,A) декодирует вход softbits и возвращает декодируемые биты UCI длины A. Функция реализует инверсию процесса кодирования, заданного в Разделах TS 38.212 6.3.1.2–6.3.1.5 для физического восходящего канала управления (PUCCH) и в Разделах 6.3.2.2–6.3.2.5 для физического восходящего канала совместно использованный канал (PUSCH) [1]. Декодирование состоит из восстановления уровня, декодирования канала и декодирования контроля циклическим избыточным кодом (CRC) на блок кода. Конкретная схема декодирования, что функциональные реализации зависят от декодируемой длины сообщения UCI, A. Для получения дополнительной информации см. Алгоритмы.

пример

ucibits = nrUCIDecode(softbits,A,mod) также задает схему модуляции декодирования. Заданная схема модуляции применяется только, когда длина ucibits равняется 1 или 2. Если не заданный, значения по умолчанию схемы модуляции к QPSK.

ucibits = nrUCIDecode(___,'ListLength',L) задает длину списка для полярного декодирования в дополнение к входным параметрам в любом из предыдущих синтаксисов. Заданная длина списка применяется только для декодирования последовательного списка отмен (SCL) когда A ≥ 12. Если не заданный, значения по умолчанию длины списка к 8.

пример

[ucibits,err] = nrUCIDecode(___) также возвращает флаг ошибки. Используйте входные параметры в любом из предыдущих синтаксисов. Значение 1 в err указывает, что ошибка произошла во время блокового декодирования кода. err вывод применяется только для основанных на CRC схем декодирования. Для получения дополнительной информации см. Алгоритмы.

Примеры

свернуть все

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

A = 32;
E = 120;
uciBits = randi([0 1],A,1);
ucicw   = nrUCIEncode(uciBits,E);

Декодируйте мягкие биты, представляющие кодовую комбинацию UCI ucicw. Установите длину полярного списка декодирований к 4. Флаг ошибки в выводе указывает, что никакие ошибки не произошли во время блокового декодирования кода.

L = 4;
[recBits,err] = nrUCIDecode(1-2*ucicw,A,'ListLength',L)
recBits = 32x1 int8 column vector

   1
   1
   0
   1
   1
   0
   0
   1
   1
   1
      ⋮

err = logical
   0

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

isequal(recBits,uciBits)
ans = logical
   1

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

K = 2;
uci = randi([0 1],K,1,'int8');

Закодируйте сообщение в течение заданной продолжительности соответствующего уровню вывода и 16-QAM схемы модуляции.

mod = '16QAM';
E = 4*3;
encUCI = nrUCIEncode(uci,E,mod);

Замените заполнителей-1 и-2 в выводе посредством скремблирования.

encUCI(encUCI==-1) = 1;
encUCI(encUCI==-2) = encUCI(find(encUCI==-2)-1);

Модулируйте закодированное сообщение UCI.

modOut = nrSymbolModulate(encUCI,mod);

Добавить белый гауссов шум (AWGN) к модулируемым символам с помощью отношения сигнал-шум 0 дБ.

snrdB = 0;
rxSig = awgn(modOut,snrdB);

Демодулируйте полученный сигнал.

rxSoftBits = nrSymbolDemodulate(rxSig,mod);

Декодируйте мягкие биты, представляющие демодулируемую кодовую комбинацию UCI.

decBits = nrUCIDecode(rxSoftBits,K,mod);

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

isequal(decBits,uci) 
ans = logical
   1

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

свернуть все

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

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

Длина декодируемого UCI передает биты, заданные как целое число от 1 до 1 706.

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

Схема Modulation, заданная как 'QPSK', 'pi/2-BPSK', '16QAM', '64QAM' или '256QAM'. Эта схема модуляции определяет тип модуляции и количество битов, используемых на символ модуляции, как показано в этой таблице.

Схема модуляцииКоличество битов на символ
'pi/2-BPSK'1
'QPSK'2
'16QAM'4
'64QAM'6
'256QAM'8

Этот входной параметр применяется только, когда входом A является 1 или 2.

Типы данных: char | string

Длина полярного списка декодирований, заданного как 8 или степень двойки.

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

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

свернуть все

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

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

Результат блокового декодирования кода UCI для каждого блока кода, возвращенного как логический скалярный или логический вектор длины 2. 1 в err указывает, что ошибка произошла во время блокового декодирования кода.

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

Алгоритмы

Конкретное декодирование UCI интригует, что реализации nrUCIDecode зависят от заданной продолжительности вывода A.

ADeconcatenationДекодированиеБиты CRC
1–11Нет данныхНаибольшее правдоподобиеНет данных
12–19Нет данныхПомогший CRC SCL6
20–1706Зависит от A и длины softbitsПомогший CRC SCL11

Ссылки

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

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

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

Функции

Введенный в R2019a