УДК 621.391
РЕАЛИЗАЦИЯ ТУРБОКОДЕКА НА ПРОГРАММИРУЕМОЙ ЛОГИЧЕСКОЙ ИНТЕГРАЛЬНОЙ СХЕМЕ
А.В. Яременко, А.Н. Осокин
Томский политехнический университет E-mail: [email protected]
Получены выражения, позволившие разработать модифицированный алгоритм декодирования турбокодов Рида-Маллера (32,26)2, пригодный для аппаратной реализации. Разработаны конечные автоматы кодера и декодера для реализации на программируемой логической интегральной схеме, интерфейс ввода-вывода турбокодера. Кодер и декодер реализованы на Virtex XCV1000E-6 от компании Xilinx (разработаны программы на языке Very high speed integrated circuits Hardware Description Language). Проведенное моделирование в пакете Xilinx ISE показало, что разработанный кодер обеспечивает скорость кодирования для турбокода Рида-Маллера (32,26)2 38,6 Мбит/с, декодер обеспечивает скорость декодирования 70,2 кбит/с при пяти итерациях.
Ключевые слова:
Алгоритм максимальной апостериорной вероятности, логарифмический алгоритм максимальной апостериорной вероятности, турбокод, декодер с мягким входом и мягким выходом, коэффициент внешнего логарифма отношения правдоподобия, программируемая логическая интегральная схема.
Key words:
Maximum aposteriory algorithm, logarithmic versions of the maximum aposteriory algorithm, turbo code, soft-in soft-out decoder, likelihood ratios, field-programmable gate array.
Наиболее заметным достижением в теории помехоустойчивого кодирования за последние десятилетия являются турбокоды. Они обладают уникальной способностью обеспечивать характеристики помехоустойчивости передачи информации, близкие к теоретически достижимым значениям при умеренной сложности реализации кодеков [1]. Особенное достоинство турбокодов состоит в том, что они допускают итеративную процедуру декодирования. В 2004 г. в стандарте фиксированной радиосвязи IEEE 802.16 (WiMax), представляющем наиболее перспективные технические и технологические решения в области радиодоступа, было определено использование турбодекодирования. Вышеуказанные достоинства турбокодов делают исследование и разработку новых кодеков, обеспечивающих высокую надежность обмена информацией в условиях воздействия внешних помех, актуальной научно-технической задачей. В данной работе предлагается экономичное архитектурное решение турбокодека на базе программируемой логической интегральной схемы (ПЛИС).
Осокин Александр
Николаевич, канд. техн. наук, доцент кафедры
вычислительной техники
Института кибернетики ТПУ. Email: [email protected] Область научных интересов:
помехоустойчивое кодирование, сжатие информации,
применение ПЛИС,
микропроцессоров, цифровых сигнальных процессоров. Ярёменко Анна Васильевна: магистрант кафедры
вычислительной техники ТПУ. E-mail: [email protected] Область научных интересов: помехоустойчивое кодирование, применение ПЛИС.
Проблемы реализации и имеющиеся решения
Разработка турбокодов развивается по двум направлениям: сверточные и блочные турбокоды. Как показали исследования [2], блочные турбокоды являются более эффективными при относительно высоких кодовых скоростях.
Турбокоды обладают высокой сложностью представления и вычисления, что создает ряд проблем их практической реализации. Имеющиеся VHDL решения являются не эффективными либо с точки зрения использования ресурсов памяти, либо задержек
декодирования. Реализация блокового турбодекодера в стандарте IEEE 802.16 сделана
опционально с использованием кодов Хэмминга или простой проверки на четность с
декодированием по Витерби. Имеется также несколько коммерческих реализаций в виде интегральных микросхем от компании Advanced Hardware Architectures (AHA), информация о которых является платной. DSP решения турбокодеков, как показано в работе [3],
неэффективны и дорогостоящи.
Согласно последним исследованиям и разработкам наилучшие практические результаты достигаются при использовании турбокодов на основе решетчатых кодов, таких как расширенные коды Хэмминга, Боуза-Чоудхури-Хоквингема (БЧХ) или Рида-Маллера [4]. Коды Рида-Маллера (РМ) имеют более регулярную и симметричную решетчатую структуру с большим числом параллельных подрешеток; это увеличивает скорость декодирования и дает возможность рекурсивного построения, что является ценным свойством для построения алгоритмов мягкого декодирования [4]. Именно поэтому коды Рида-Маллера выбраны для реализации турбокодека.
Декодирование турбокодов с помощью решеток, как правило, осуществляется по одному из двух типов алгоритмов: алгоритму Витерби или алгоритму максимума
апостериорной вероятности (maximum a posteriori - MAP). MAP является более оптимальным алгоритмом по сравнению с алгоритмом Витерби, т. к. минимизирует вероятность возникновения ошибки на символ при посимвольного декодировании линейных блоковых кодов [4].
Общая структура кодека
Двумерный блочный турбокод может быть представлен в виде прямоугольника, построенного из двух кодов: горизонтальных n;кх ;dx и вертикальных n ; ку; dy. В качестве
компонентных кодов, как уже сказано, выбраны коды Рида-Маллера. Систематическая форма порождающей матрицы кода РМ(32,26) получена по методу Месси и выглядит следующим образом:
JPM(32,26)
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 1 1 0
0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1
0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 1
0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0
0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 1
0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0
0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0
0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1
0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0
0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0
0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1
0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0
0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 1 1 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 1 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 1 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1
а кода в результате будет состоять из 638
Решетчатая диаграмма кода в результате будет состоять из 638 состояний и 1180 переходов.
Схема итеративного декодирования турбокодов представлена на рис. 1. Турбодекодер представляет собой последовательное соединение двух декодеров с мягким входом и мягким выходом (Soft Input Soft Output - SISO). На каждой итерации вычисляются логарифмическое отношение функций правдоподобия (Log-Likelihood-Ratio, LLR), называемые мягкими решениями, для каждого символа в кадре данных в соответствии с критерием максимальной апостериорной вероятности (MAP). Мягкое решение символов на выходе первого декодера используется в качестве входной информации для второго. На второй и последующих итерациях входные данные обновляются и используются как априорная информация о переданных символах для первого декодера. Процедура повторяется от итерации к итерации, увеличивая вероятность правильного декодирования. Окончание процесса декодирования происходит после заданного количества итерационных циклов. Априори символы на входе декодера являются равновероятными. Анализ отдельных порций входных отсчетов на каждой итерации увеличивает вероятность одних и уменьшает вероятность других символов. Техническая реализация алгоритма MAP в общем случае вряд ли возможна [4]. Применение турбокодов в системах цифровой связи достигается за счет использования субоптимальных вариантов MAP алгоритма.
Обратная связь для следующей итерации
и10) = о
-г-
Горизонтальный SISO-декодер 1
Горизонтальный SISO-декодер 2
17 (х) ! U*)
— ч—►
| финальная итерация
Рис. 1. Итеративная процедура декодирования турбокодов
Log-MAP алгоритм
Представим модификацию алгоритма MAP, которая позволит снизить его вычислительную сложность и реализовать на ПЛИС. Процесс декодирования в MAP алгоритме включает вычисление прямых и обратных метрик прохода по кодовой решетке для получения
мягких выходов. LLR для информационного символа , принимаемого декодером как последовательность у, может быть представлено суммой:
L хк ) = 4 • Jk + LХк ) + Le (%к ),
где L ■ У к называют LLR канала, величину L( хА) называют априорным LLR информационного символа и Le (хк) называют внешним (extrinsic) LLR, которое может быть
введено в декодер (через обратную связь) и использовано в качестве априорной вероятности на следующей итерации.
Внешнее LLR может быть записано в следующем виде:
L( хк ) = log
Z («) Хк=1Z sak 1( s) ■ Ук(^s) ■ Рк (s) Z (.',.) Хк =-Z s®k-1( s') ■ Ук(s'>s) ■ Рк(s) ’
I (s,s)Хк =-1 S
где а, в и у представляют собой метрики прямого, обратного прохода и метрику ребра соответственно. Индексы k и S обозначают время и состояние. LLR значения вычисляются для всех состояний S в моменты k и k-1. Используя аппроксимацию
log(e8 + e8 +... + eSn) « и} 8t, внешнее LLR может быть записано в
логарифмической форме следующим образом:
Le ( Хк ) = max( s'.s )^ [log«k-1( S) + logPk(s)] - max( s'.s )^ [log«k-1( S) + l0g^l (s)] .
Улучшения мягкого решения LLR на выходе декодера можно достичь, используя Якобианов логарифм:
log(e8 + e8) = max(^, S2) + log(1 + e48-8') = max(^, S2) + f (| S2 - 8l |).
Применением рекурсивно уравнения, приведенного выше, для вычисления метрик ак (s) и Рь-1(s'), а также Le (хА) , достигается практически такая же точность вычислений, как в исходном алгоритме MAP [4], при этом сложные операции экспоненционирования и умножения изменились на простые операции суммы и сравнения, что делает реализацию данного алгоритма технически возможной. Функция f (| 8 -8п |) вычислена и представлена в таблице.
Таблица вычисленных значений | 8 - 8п |
|Dif| <0,0625 0,5 1,0 1,5 2,0 >2,0
ln(1 + eHDf|) 0,625 0,5 0,375 0,25 0,125 0
Реализация на ПЛИС
На основании выше рассмотренного предлагается архитектура кодека (рис. 2, рис. 3) для реализации на ПЛИС. В представленной архитектуре имеется 4 отдельных модуля вычислений метрик и LLR, соединенных промежуточной памятью, детали которых не могут быть рассмотрены в рамках данной статьи.
входные данные
закодированные данные
Рис. 2. Архитектура кодера
получаемая информация
Рис. 3. Архитектура декодера
Данная архитектура турбокодека реализована на ПЛИС Уіііех (XCV1000E-6) от Xilinx. Проведенное моделирование в пакете Хіііпх КЕ показало, что разработанный кодер
обеспечивает скорость кодирования для турбокода Рида-Маллера (32,26)2 38,6 Мбит/с, декодер обеспечивает скорость декодирования 70,2 Кбит/с при пяти итерациях.
Достоинства архитектуры:
• эффективное использование памяти;
• невысокая сложность реализации;
• низкая стоимость разработки;
• приемлемая скорость кодирования и декодирования.
Заключение
Предложена и реализована на ПЛИС архитектура турбокодека с кодированием по коду Рида-Маллера и декодированием по модифицированному Log-MAP алгоритму. Оценка аппаратных затрат на реализацию исследуемых декодеров показала, что для реализации такого турбокодека требуется примерно на 35 % меньше аппаратных ресурсов, чем для реализации сверточного турбокодека с такой же эффективностью кодирования.
СПИСОК ЛИТЕРАТУРЫ
1. Золотарев В.В., Овечкин Г.В. Помехоустойчивое кодирование. Методы и алгоритмы / под ред. чл.-кор. РАН Ю.Б. Зубарева. - М.: Горячая линия - Телеком, 2004. - 126 с.
2. Архипкин А.В. Турбокоды - мощные алгоритмы для современных систем связи // Беспроводные технологии. - 2006. - № 1 (02). - С.63-64.
3. Pietroben S.S. Implementation and Performance of A Turbo/MAP Decoder // International Journal of Satellite Communications. - 2006. - № 16. - P. 16-18.
4. Морелос-Сарагоса Р. Искусство помехоустойчивого кодирования. Методы, алгоритмы, применение. - М.: Техносфера, 2006. - 320 c.
Поступила 21.09.2011 г.