УДК 658.512
РЕАЛИЗАЦИЯ НА ПЛИС АЛГОРИТМОВ ПОМЕХОУСТОЙЧИВОГО КОДИРОВАНИЯ:
ТУРБО-ДЕКОДЕР И ДЕКОДЕР ВИТЕРБИ
Н.В. Астахов, А.А. Пирогов
В данной статье рассматриваются вопросы реализации на ПЛИС помехоустойчивого модифицированного алгоритма Витерби
Ключевые слова: алгоритм, декодирование, Витерби, ПЛИС, кодирование
В настоящее время в телекоммуникационных системах наиболее широко для помехоустойчивого кодирования сигналов применяют турбо-код и код Витерби. Это обусловлено свойствами данных кодов и близостью их к теоретической границе Шеннона. Рассмотрим более подробно код Витерби и турбо-код, принципы применяемого кодирования и декодирования, структурные схемы кодеров и декодеров.
ских ученых, и уже через несколько лет данный код занял прочные позиции в системах передачи цифровой информации. Это обусловлено тем, что данный код обладает частотой ошибочных битов и энергетической эффективностью на 0,5 дБ больше, чем условие Шеннона.
Турбо-код - параллельный каскадный блоковый систематический код, способный исправлять ошибки, возникающие при передаче цифровой информации по каналу связи с шумами. Турбо-код
Рис. 1. Структурная схема М-блочного турбо-кодера
С момента создания Клодом Шенноном в 1948 г. основ передачи информации, представленной в цифровом виде, разработано большое количество помехоустойчивых кодов, и до настоящего времени работы в данном направлении продолжаются. Примером продолжающихся работ может служить работы по совершенствованию энергетической эффективности в системах космической связи за счет совершенствования сигнально-кодовых конструкций. Целесообразность данных работ обусловлена тем, что улучшение энергетической эффективности на 1 дБ снижает стоимость всей системы на один миллион долларов США. Помимо всего прочего, снижение энергетической эффективности в системе, меняет область ее применение.
Наиболее заметным достижением в работах по разработке помехоустойчивого кодирования за последнее время стала разработка турбо-кодов. Турбокоды были разработаны в 1993 г. группой француз-
Астахов Николай Владимирович - ВГТУ, ассистент, тел. 89038564513
Пирогов Александр Александрович - ВГТУ, ассистент, тел. 8920521578
состоит из каскада параллельно соединенных систематических кодов. Эти составляющие называются компонентными кодами чаще всего их роль выполняю свёрточные коды, коды Хемминга, Рида-Соломона, Боуза-Чоудхури-Хоквингема и другие. В зависимости от выбора компонентного кода, турбокоды подразделяются на сверточные турбо-коды и блоковые коды- произведения.
Рассмотрим структуру турбо-кодера и принцип кодирования. Структурная схема турбо-кодера представлена на рис. 1.
На вход формирователя пакетов PAD (англ. Packet Assembler-Dissembler) поступает блок данных U длинной к битов. В формирователе пакетов ко входным битам добавляются бит служебной информации, в соответствии с используемым стандартом формирования пакета и включающих в себя символы начала и окончания пакета. На выходе формирователя пакетов имеем выходную последовательность битов Х0. Затем происходит передача последовательности Х0 на М параллельных ветвей, состоящих из последовательно соединенных перемежителя и кодера. Таким образом, Х0 используется в качестве входных данных для всех компонентных
кодеров. В качестве кодера наиболее целесообразно использовать рекурсивные систематические сверточные кодеры (Я8С) /3/.
В перемежителях по псевдослучайному закону происходит перемешивание поступающих бит. В отличие от посимвольного прямоугольного перемежителя, используемого в кодах Рида-Соломона, в турбо-кодах используется перемежение отдельных битов, которое подобно случайным перестановкам. Причём впоследствии, при операциях декодирования этот закон перемежения будет считаться известным. Полученные последовательности поступают на входы кодеров. Задача перемежителя - преобразовать входную последовательность так, чтобы комбинации бит Х0, соответствующие кодовым словам с низким весом (число ненулевых бит кодового слова) на выходе первого кодера, были преобразованы в комбинации, дающие кодовые слова с высоким весом на выходах остальных кодеров.
я
XX,
Декодер I
Перемежитель I
Демульти-
плексор
Я Л :, X,
Перемежитель 2
Задержка
проверочных битов. Для выполнения данной операции в кодере используется перфоратор. В результате подачи и обработки перфоратором проверочных битов, на выходе имеем число проверочных битов N меньшее поданного на вход числа битов М. Кодовая скорость при перфорировании составляет
(2)
где N - количество проверочных битов после выкалывания.
Поскольку турбо-коды работают с кодами большой длинны блока порядка к > 10000, то и кодовая скорость будет
(3)
Мульти-
плексор
Декодер 2
X
Депере-
межитель 1
Депере-
межитель2
Задержка
Рис. 2. Структурная
Таким образом, кодеры получают на выходе кодовые слова с различными весами. При кодировании формируются кодовые слова так, чтобы получалось максимально возможное среднее расстояние между ними (расстоянием между двумя кодовыми словами называется число бит, в которых они различаются). Из-за того что кодовые блоки формируются из почти независимых частей, на выходе турбо-кодера среднее расстояние между кодовыми словами больше, чем минимальное расстояние для каждого компонентного кодера, а следовательно растёт эффективность кодирования /1/.
На рис. 2 представлена структурная схема турбо-декодера. В кодеры подается информационный поток с выходов перемежителя и в результате обработки на выходе кодера появляется
совокупность — -------- проверочных
бит. К каждому ■ ■ - пакету Х0, в
результате его обработки, добавляется М совокупность проверочных бит. В мультиплексоре происходит объединение информационных потоков компонентных кодеров и пакета Х0 в выходной сигнал /2/. Кодовая скорость для такого кодера составляет
(1)
где к - исходная информация, бит; п - сформированный пакет, бит;
М - количество блоков кодера.
В результате подобной обработки кодовая скорость всего кодера оказывается весьма низкой. Для увеличения скорости можно применять перфорацию
схема турбо-кодера
Из приведённых формул видно, что с помощью перфоратора, выкалывая разное число проверочных бит, возможно регулирование кодовой скорости. То есть можно построить кодер, адаптирующийся к каналу связи. При сильном зашумлении канала перфоратор выкалывает меньше бит, чем вызывает уменьшение кодовой скорости и рост помехоустойчивости кодера. Если же канал связи хорошего качества, то выкалывать можно большое число бит, вызывая рост скорости передачи информации.
Рассмотрим декодирование для турбо-кодов и структурные схемы декодеров.
Из рассмотрения принципа кодирования ясно, что при декодировании блок можно разделить на два кодовых блока, причем информационные части этих двух блоков в силу систематического кодирования и с учетом перемежения идентичны. Это обстоятельство позволяет использовать два декодера, каждый из которых производит декодирование своего кодового блока. Поскольку информационные части каждого из двух кодовых блоков идентичны, декодированную информацию первого (второго) декодера с учетом перемежения можно использовать в качестве априорной информации для второго (первого) декодера с целью уточнения результата декодирования, тем самым как бы замыкая обратную связь между декодерами двух кодовых блоков. Подобную операцию можно производить многократно. В этом и состоит принцип турбо- или итеративного декодирования. Оптимальный декодер дол-
жен быть построен на основе критерия минимума вероятности ошибочного декодирования. Однако построение такого декодера из-за наличия перемежителя встречает трудности. В то же время изложенная идея итеративного подоптимального декодирования оказалась исключительно плодотворной и эффективной.
Имея в виду изложенный принцип итеративного декодирования, помимо общего критерия мини-
формации о нем для второго декодера. Этот декодер производит оценку символа с выхода перемежителя на основе проверочной части второго кодового слова. Рассмотрим представленную на рис. 3 структурную схему трехитерационного декодера /4/.
На второй и последующих итерациях декодирования эта оценка обновляется и используется как априорная информация о переданном символе для первого декодера. Таким образом, на вход каждого
Рис. 3. Схема итеративного декодера для двухблочного кодирования
мума вероятности ошибочного декодирования путем нахождения наиболее благоприятной формы закона распределения функции S(d), можно также сформулировать критерий повышения достоверности декодирования путем сочетания структуры псевдослучайного перемежителя со структурой сверточных кодеров: в случае формирования "плохого" первого кодового блока, т.е. близко расположенного от соседних кодовых блоков, следует стремиться второй кодовый блок сделать "хорошим", т. е. расположить его далеко от соседних кодовых блоков. Тогда в целом повышается достоверность декодирования информационного блока. Решению этой задачи посвящено значительное число работ по ТК /3/.
Декодер для каждой итерации представляет собой каскадное соединение двух элементарных декодеров: первого и второго. Каждый из этих декодеров выносит решение о переданном символе на основе критерия максимальной апостериорной вероятности (Maximum A Posteriori — MAP), чем обеспечивается минимум вероятности ошибочного декодирования каждым элементарным декодером.
На первой итерации от демодулятора на вход первого декодера поступают оценки ("мягкие" решения) символов от демодулятора систематической и первой проверочной частей первого кодового блока. На выходе первого декодера формируется оценка ("мягкое" решение) информационного символа, которая затем используется в качестве априорной ин-
Воронежский государственный технический университет
из двух элементарных декодеров поступают "мягкие" решения, результат декодирования на выходе элементарного декодера - также "мягкое" решение. По этой причине такие схемы получили название декодеров с мягким входом и мягким выходом (Soft Input Soft Output - SISO). Окончательное принятие решения о переданном информационном символе выносится нижним декодером.
Изложенный алгоритм декодирования оказался чрезвычайно эффективным, и каждая последующая итерация увеличивает априорную информацию о переданном символе. Окончание процесса декодирования происходит либо после выполнения заданного количества Q итерационных циклов, либо после того, как величина поправки результата декодирования достигнет установленного порога.
Литература
1. Золотарев В.В., Г.В. Овечкин. Помехоустойчивое кодирование. Методы и алгоритмы.- М.: Горячая линия-Телеком, 2005. - 126 с.
2. Морелос-Сарагосса Р. Искусство помехоустойчивого кодирования. - М.:Техносфера, 2005. - 320 с.
3. Кларк Д.К., Кейн. Д.Б. Кодирование с исправлением ошибок в системах цифровой связи. - М.: Радио и связь, 1987. - 392 с.
4. Вернер М. Основы кодирования: учебник для вузов. - М.: Техносфера, 2004. - 288 с.
IMPLEMENTATION ON FPGA ALGORITHMS ERROR-CORRECTING CODING: TURBODECODER AND A VITERBI DECODER
N.V. Astakhov, A.A. Pirogov
This article discusses the issues of implementation on FPGA of error of the modified Viterbi algorithm
Key words: algorithm, decoding, Viterbi, FPGA coding