exponenta event banner

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 до 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 изменилось поведение