nrUCIDecode

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

Описание

ucibits = nrUCIDecode(softbits,A) декодирует входные softbits и возвращает декодированные биты длины A. Функция реализует обратный процесс кодирования, указанный в разделах 6.3.1.2-6.3.1.5 ТУ 38.212 для физического канала управления восходящей линии связи (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 указывает, что во время декодирования кодового блока произошла ошибка. The 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 до 1706.

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

Схема модуляции, заданная как '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 указывает, что во время декодирования кодового блока произошла ошибка.

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

Алгоритмы

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

ADeconcatenationРасшифровкаБиты CRC
1–11Н/ДМаксимальная правдоподобностьН/Д
12–19Н/ДSCL с CRC6
20–1706Зависит от A и длину softbitsSCL с CRC11

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

расширить все

Поведение изменено в R2020a

Ссылки

[1] 3GPP TS 38.212. "NR; Мультиплексирование и канальное кодирование. "3rd Генерация Partnership Project; Группа технических спецификаций Радиосеть доступ.

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

.

См. также

Функции

Введенный в R2019a