nrPolarDecode

Полярное декодирование

Синтаксис

decbits = nrPolarDecode(rec,K,E,L)
decbits = nrPolarDecode(rec,K,E,L,padCRC)
decbits = nrPolarDecode(rec,K,E,L,nmax,iil,CRClen)

Описание

пример

decbits = nrPolarDecode(rec,K,E,L) декодирует восстановленный с уровня вход rec для (N, K) полярный код, где N является длиной rec, и K является длиной декодируемых битов decbits, как задано в Разделе TS 38.212 5 [1]. Функция использует контроль циклическим избыточным кодом (CRC) - декодер списка последовательных отмен, которому помогают, длины L. По умолчанию выведите устранение чередования, включен, максимальная длина входа 512, и количество добавленных битов CRC равняется 24. Используйте этот синтаксис для нисходящей настройки.

decbits = nrPolarDecode(rec,K,E,L,padCRC) задает, был ли блок информации на конце передачи предварительно дополнен единицами перед кодированием CRC.

decbits = nrPolarDecode(rec,K,E,L,nmax,iil,CRClen) декодирует вход с заданной максимальной длиной 2nmax, выходное устранение чередования, заданное iil и количеством добавленных битов CRC, заданных CRClen. Этот синтаксис принимает, что блок информации на конце передачи не был предварительно дополнен единицами перед кодированием CRC.

  • Для нисходящего канала (DL) настройка, допустимые значения для nmax, iil и CRClen равняются 9, true, и 24, соответственно.

  • Для восходящего канала (UL) настройка, допустимые значения для nmax и iil равняются 10, и false, соответственно, и для CRClen равняется 11 или 6.

Примеры

свернуть все

Передайте полярно закодированный блок данных и декодируйте его с помощью декодера списка последовательных отмен.

Начальная настройка

Создайте канал, который добавляет белый гауссов шум (WGN) во входной сигнал. Установите шумовое отклонение на 1,5.

nVar = 1.5; 
chan = comm.AWGNChannel('NoiseMethod','Variance','Variance',nVar);

Создайте бинарный сдвиг фазы, включающий (BSPK) модулятор и демодулятор.

bpskMod = comm.BPSKModulator;
bpskDemod = comm.BPSKDemodulator('DecisionMethod', ...
    'Approximate log-likelihood ratio','Variance',nVar);

Моделируйте кадр

Выполните полярное кодирование случайного сообщения длины K. Соответствующий уровню вывод имеет длину E.

K = 132;
E = 256;
msg = randi([0 1],K,1,'int8');
enc = nrPolarEncode(msg,E);

Модулируйте полярные закодированные данные с помощью модуляции BSPK, добавьте WGN и демодулируйте.

mod = bpskMod(enc);
rSig = chan(mod);
rxLLR = bpskDemod(rSig); 

Выполните полярное декодирование с помощью декодера списка последовательных отмен длины L.

L = 8;
rxBits = nrPolarDecode(rxLLR,K,E,L);

Определите количество битовых ошибок.

numBitErrs = biterr(rxBits,msg);
disp(['Number of bit errors: ' num2str(numBitErrs)])
Number of bit errors: 0

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

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

свернуть все

Восстановленный с уровня вход, заданный как вектор-столбец действительных значений. Вход rec представляет логарифмические отношения правдоподобия на бит с отрицательным биполярным отображением. Таким образом, 0 сопоставлен с 1, и 1 сопоставлен с -1. Длина rec должна быть степенью двойки.

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

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

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

Соответствующая уровню продолжительность вывода в битах, заданных как положительное целое число.

  • Если 18 ≤ K ≤ 25, E должен быть в области значений K + 3 <E ≤ 8192.

  • Если K> 30, E должен быть в области значений K <E ≤ 8192.

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

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

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

Предварительное дополнение перед кодированием CRC, заданным как false или true. Установите padCRC на true, если блок информации на конце передачи, перед полярным кодированием, был предварительно дополнен всеми единицами перед кодированием CRC.

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

Основывайте 2 логарифма максимальной длины восстановленного с уровня входа, заданной как 9 или 10.

  • Для настройки DL задайте 9.

  • Для настройки UL задайте 10.

Если N является длиной rec в битах, N2nmax, смотрите Раздел TS 38.212 5.3.1.2.

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

Выведите устранение чередования, заданное как true или false.

  • Для настройки DL задайте true.

  • Для настройки UL задайте false.

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

Количество добавленных битов CRC, заданных как 24, 11 или 6.

  • Для настройки DL задайте 24.

  • Для настройки UL задайте 11 или 6.

Числа 24, 11, и 6 соответствуют полиномам gCRC24C, gCRC11, и gCRC6, соответственно, как описано в TS 38.212. Разделите 5.1 [1].

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

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

свернуть все

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

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

Ссылки

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

[2] Tal, я. и Vardy, A., “Декодирование списка Полярных Кодов “, Транзакции IEEE на Теории информации. Издание 61, № 5, стр 2213-2226, май 2015.

[3] Ню, K. и Чен, K., “Помогшее CRC Декодирование Полярных Кодов “, Коммуникационные Буквы IEEE, Издание 16, № 10, стр 1668-1671, октябрь 2012.

[4] Stimming, A. B., Parizi, M. B. и Город, A., “Основанное на LLR Последовательное Декодирование Списка Отмен Полярных Кодов “, Транзакция IEEE на Обработке сигналов, Издании 63, № 19, pp.5165-5179, 2015.

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

Введенный в R2018b