LTE Turbo Decoder

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

  • Библиотека:
  • Беспроводной HDL Toolbox/Обнаружение и коррекция ошибок

  • LTE Turbo Decoder block

Описание

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

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

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

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

Порты

Вход

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

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

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

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

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

  • start - Указывает начало входного кадра

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

  • valid - Указывает, что данные входного data порта действительны

Для получения дополнительной информации см. Выборку шины управления.

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

Размер блока Turbo кода, заданный как целое число. Это значение должно быть одним из 188 значений, заданных в стандарте LTE, от 40 до 6144 в следующих интервалах: [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 bus. Шина включает в себя start, end, и valid управляющие сигналы, которые указывают контуры системы координат и валидность выборок.

  • start - Указывает начало выходной системы координат

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

  • valid - Указывает, что данные выходного data порта действительны

Для получения дополнительной информации см. Выборку шины управления.

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

Параметры

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

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

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

Зависимости

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

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

Алгоритмы

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

Блок реализует итерационный алгоритм декодирования, используя один декодер и один перемежитель.

Эта схема показывает концептуальный алгоритм для одной итерации. Хотя схема показывает два декодера и три перемежителя, блок фактически реализует алгоритм, используя только один декодер и один перемежитель. Декодер выполняет одну полуитерацию и перемежает результаты. Затем выход направляется назад на вход для следующей полуитерации. Перемежитель вычисляет индексы перемежения из размера блока. Для получения дополнительной информации о реализации перемежителя см. 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

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

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

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

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

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

Ссылки

[1] 3GPP TS 36.212. «Мультиплексирование и канальное кодирование». 3rd Генерация Partnership Project; Группа технических спецификаций Radio Доступа Network; Evolved Universal Terrestrial Radio Access (E-UTRA). URL-адрес: https://www.3gpp.org.

[2] Bahl, L. R., J. Cocke, F. Jelinek, and J. Raviv. Оптимальное декодирование линейных кодов для минимизации частоты ошибок символов. Транзакции IEEE по теории информации. Vol 1T-20, март 1974, с. 284-287.

[3] Viterbi, Andrew J. «Интуитивное обоснование и упрощенная реализация декодера MAP для сверточных кодов». Журнал IEEE по выбранным областям в коммуникациях. Том 16, № 2, февраль 1998 года.

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

.

См. также

Блоки

Функции

Введенный в R2017b