nrUCIDecode

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

Описание

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- 1 вектор-столбец двоичных значений.

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

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

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

Алгоритмы

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

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

Вопросы совместимости

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

Поведение изменяется в R2020a

Ссылки

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

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

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

Функции

Введенный в R2019a