LTE Turbo Decoder

Декодируйте закодированные турбо выборки

  • Библиотека:
  • Wireless HDL Toolbox / Выявление ошибок и Коррекция

  • LTE Turbo Decoder block

Описание

Блок LTE Turbo Decoder реализует турбо декодер, требуемый TS 36.212 [1] стандарта LTE, и обеспечивает интерфейс и архитектуру, оптимизированную для аппаратного развертывания и генерации HDL-кода. Блок выполняет итерации более чем двух декодеров MAX. Можно задать количество итераций. Уровень кодирования является 1/3. Блок принимает закодированные биты как вектор 3 на 1 из мягко закодированных значений, [S P1 P2]. В этом векторе, S систематический бит и P1 и P2 биты четности от этих двух энкодеров.

Этот блок использует демонстрационный интерфейс потоковой передачи с шиной для связанных управляющих сигналов. Этот интерфейс позволяет блоку действовать независимо от формата кадра и соединиться легко с другими блоками Wireless HDL Toolbox™. Блок принимает и возвращает значение, представляющее одну выборку и шину, содержащую три управляющих сигнала. Эти сигналы указывают на валидность каждой выборки и контуры системы координат. Чтобы преобразовать матрицу в демонстрационный поток и эти управляющие сигналы, используйте блок Frame To Samples или whdlFramesToSamples функция. Для полного описания интерфейса смотрите Демонстрационный Интерфейс Потоковой передачи.

Блок может принять следующую систему координат только после того, как это завершило декодирование предыдущей системы координат. Необходимо оставить Iterations *2*HalfIterationLatency+BlockSize+4 неактивными циклами между входными кадрами. Задержка полуитерации описана в разделе Algorithms. В качестве альтернативы можно использовать выходной сигнал ctrl.end определить, когда блок готов к новому входу.

Эта форма волны показывает входной кадр 120 выборок (+ 4 бита хвоста) и 2 632 неактивных цикла между системами координат. Каждая входная выборка является вектором из трех значений мягкого решения фиксированной точки. Ввод и вывод шины ctrl расширен, чтобы показать управляющие сигналы. start и end покажите контуры системы координат и valid квалифицирует выборки данных.

Порты

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

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

Введите выборку в виде трехэлементного целочисленного вектора. Значения представляют мягко закодированные вероятности. Если значение будет отрицательно, бит, более вероятно, будет 0. Если значение будет положительно, бит, более вероятно, будет 1. Первым элементом является последовательный бит, и другими двумя элементами являются биты четности. Блок ожидает входные кадры BlockSize + 12 выборок. Этот формат кадра включает биты хвоста в порядке, заданном TS 36.212 [1] стандарта LTE.

Для аппаратной реализации используйте фиксированную точку с двумя или тремя целочисленными битами и одним - четырьмя дробными битами. Внутренние типы данных выведены из этого типа данных, и более низкие типы точности могут привести к потере декодирования точности. Если тип входных данных имеет нулевые дробные биты или меньше чем два целочисленных бита, блок возвращает предупреждение. double и single поддерживаются для симуляции, но не для генерации HDL-кода.

Типы данных: fixdt(1,WL,FL) | single | double

Управляющие сигналы, сопровождающие демонстрационный поток в виде samplecontrol шина. Шина включает startконец, и valid управляющие сигналы, которые указывают на контуры системы координат и валидность выборок.

  • start — Указывает на запуск входного кадра

  • end — Указывает на конец входного кадра

  • valid — Указывает, что данные по порту входа data допустимы

Для большего количества детали смотрите Демонстрационную Шину управления.

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

Размер блока турбокода в виде целого числа. Это значение должно быть одним из этих 188 значений, заданных в стандарте LTE, от 40 до 6 144 в этих интервалах: [40:8:512 528:16:1024 1056:32:2048 2112:64:6144].

Зависимости

Этот порт появляется, когда вы устанавливаете Block size source на Input port.

Типы данных: single | double | uint16 | fixdt(0,13,0)

Вывод

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

Выведите выборку, возвращенную как бинарный скаляр. double и single поддерживаются для симуляции, но не для генерации HDL-кода.

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

Управляющие сигналы, сопровождающие демонстрационный поток, возвращенный как samplecontrol шина. Шина включает startконец, и valid управляющие сигналы, которые указывают на контуры системы координат и валидность выборок.

  • start — Указывает на запуск выходной системы координат

  • end — Указывает на конец выходной системы координат

  • valid — Указывает, что данные по порту выхода data допустимы

Для большего количества детали смотрите Демонстрационную Шину управления.

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

Параметры

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

Выберите, задаете ли вы размер блока с входным портом или вводите фиксированное значение в качестве параметра. Если вы выбираете Property, параметр Block size появляется. Если вы выбираете Input port, порт blockSize появляется.

Размер блока турбокода в виде целого числа. Это значение должно быть одним из этих 188 значений, заданных в стандарте LTE, от 40 до 6 144 в этих интервалах: [40:8:512 528:16:1024 1056:32:2048 2112:64:6144]. Это значение указано для каждой системы координат, когда ctrl.start = 1 (true).

Зависимости

Этот параметр появляется, когда вы устанавливаете Block size source на Property.

Сколько итераций декодирования MAX, чтобы выполнить в виде положительного целого числа. Реализация декодера использует один декодер MAX с выходными данными каждой полуитерации, направленной назад к входу. Более высокое количество итерации увеличивает точность и добавляет задержку. Приблизительно после 15 итераций алгоритм не обеспечивает дальнейшую точность.

Алгоритмы

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

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

Эта схема показывает концептуальный алгоритм для одной итерации. Несмотря на то, что схема показывает два декодера и три interleavers, блок на самом деле реализует алгоритм с помощью только одного декодера и одного interleaver. Декодер выполняет одну полуитерацию и чередует результаты. Затем выход направляется назад к входу для следующей полуитерации. interleaver вычисляет индексы чередования из размера блока. Для получения дополнительной информации interleaver реализации, смотрите LTE Turbo Encoder.

Нечетные полуитерации вычисляют отношение правдоподобия из нечередованных битов (P1, S, и устраненные чередование результаты декодирования P2). Ровные полуитерации вычисляют отношение правдоподобия из чередованных битов (P2 и чередованные результаты P1 и S, декодирующего).

Блок декодера использует алгоритм BCJR, чтобы найти отношение правдоподобия конкретного бита [2].

L(uk)log(P(uk=+1 | y)P(uk=+1 | y))         =log(s+p(sk1=s',sk=s,y)/p(y)sp(sk1=s',sk=s,y)/p(y))

Вероятности могут также быть представлены в терминах текущих и будущих состояний:

p(s',s,y)=αk1(s')γk(s',s)βk(s)αk1(s')=P(s',y<k)γk(s',s)=P(yk,s | s')βk(s)=P(y<ks)

α вероятность представляет предыдущее состояние, β представляет вероятность текущего состояния, и ɣ представляет следующее состояние. Алгоритм вычисляет ɣ от входных значений. α и β вероятности вычисляются с помощью прямой и обратной рекурсии по возможным состояниям решетки, и также зависят от ɣ. Все вычисления сделаны в log область.

αk=αk1(s')γk(s',s)         βk1(s')=βk(s)γk(s',s)    

Начальные условия для α и β:

α0(s)={1,s=00,s0β0(s)={1,s=00,s0

Эта схема показывает декодер полуитерации и interleaver архитектуру. Начальная вероятность обнуляется.

В нормальной архитектуре BCJR алгоритм не может вычислить β, пока целая система координат не находится в памяти. Это должно выполнить полную систему координат, вперед прослеживают, и затем полная система координат назад прослеживает, что означает, что задержка одной полуитерации является двумя длинами системы координат. Необходимой памятью является BlockSize*NumStates*DataWidth. В этом случае NumStates равняется восьми от TS 36.212 [1] стандарта LTE.

Однако эта реализация декодера использует раздвижное окно, чтобы уменьшать необходимую память и задержку алгоритма [3]. Размер окна является 32 выборками, который является пять раз продолжительностью ограничения решетки 7. Задержка одной полуитерации:

(ceil(BlockSizeWinSize)+2)×WinSize+PipeDelay

Необходимая память с раздвижным окном 2*32*NumStates*DataWidth. Этот рисунок показывает, как β вычисление прослеживает и декодирует одно окно за один раз, чередуя вход между A и блоками вычисления B.

Ссылки

[1] 3GPP TS 36.212. "Мультиплексирование и кодирование канала". Проект Партнерства третьего поколения; Сеть радиодоступа Technical Specification Group; Развитый Универсальный Наземный Радио-доступ (к E-UTRA). URL: https://www.3gpp.org.

[2] Bahl, L. R. Дж. Кок, Ф. Елинек и Дж. Рэвив. "Оптимальное Декодирование Линейных Кодов для Минимизации Коэффициента ошибок Символа". Транзакции IEEE на Теории информации. Vol 1T-20, март 1974, стр 284–287.

[3] Viterbi, Эндрю Дж. "Интуитивное выравнивание и упрощенное внедрение декодера MAP для сверточных кодов". Журнал IEEE на выбранных областях в коммуникациях. Издание 16, № 2, февраль 1998.

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

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

Блоки

Функции

Введенный в R2017b