ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 03.12.2023
Просмотров: 14
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Введение
Турбо коды представляют собой новый тип кодов для исправления ошибок, возникающих при передаче цифровой информации по каналам связи с шумами. Турбо коды были введены в рассмотрение французским исследователем Claude Berrou в 1993 г. и сразу же привлекли к себе пристальное внимание специалистов в области помехоустойчивого кодирования информации во всем мире. Причина этому - уникальная способность турбо кодов обеспечивать характеристики помехоустойчивости передачи информации по каналам с шумами близкие к теоретически достижимым значениям (так называемый предел Шеннона) при умеренной сложности оборудования для кодирования и декодирования. Уже в первой работе по турбо кодам [C. Berrou, A. Glavieux, and P. Thitimajshima, "Near Shannon limit error-correcting coding and decoding: Turbo-codes," in ICC'93, Geneva, Switzerland, May 93, pp. 1064-1070] была практически продемонстрирована возможность получения значения средней вероятности ошибки на бит 10-5 для ФМ-2 в канале с аддитивным белым гауссовским шумом при отношении сигнал шум на бит всего 0.7 дБ, что лишь на 0.5 дБ больше теоретического предела для бинарных антиподальных сигналов. Мечта осуществилась - предел Шеннона почти достигнут!
Как устроен кодер турбо кода.
Турбо коды относятся к классу так называемых параллельных каскадных кодов. Принцип построения кодера турбо кода достаточно прост (рис. 1). Из структуры кодера видно, что турбо код представляет собой систематический код в котором проверочная группа образуется из проверочных битов, генерируемых двумя кодерами составных рекурсивных сверточных кодов (РСК), причем информационная последовательность подается в кодер первого РСК (РСК1) непосредственно, а в кодер второго РСК (РСК2) через устройство псевдослучайного перемежения. Схема выкалывания проверочных бит применяется для регулирования общей скорости турбо кода. Причина феноменальной помехоустойчивости турбо кодов лежит в сочетании следующих свойств:
-
сильная зависимость веса выходной последовательности РСК от вида входной информационной последовательности, т. е. от порядка расположения нулей и единиц в ней; -
применение перемежителя для изменения вида входной последовательности, подаваемой на входы кодеров составных РСК.
Сочетание этих свойств приводит к тому, что если при подаче определенной информационной последовательности на вход кодера РСК1 вес его проверочной последовательности оказывается малым, то
перемеженная версия этой информационной последовательности, подаваемая на вход кодера РСК2, с высокой вероятностью приведет к генерации проверочной последовательности большого веса из-за указанного выше свойства РСК. Таким образом, если какая-либо комбинация ошибок не может быть исправлена одним РСК, то это почти наверняка будет сделано с помощью проверочной группы другого РСК и наоборот. Заметьте, что при использовании в составе турбо кода нерекурсивной формы сверточных кодов с такой же корректирующей способностью выигрыш от кодирования оказывается намного меньше! Это происходит как раз потому, что вес выходной последовательности сверточных кодов в нерекурсивной форме слабо зависит от вида входной информационной последовательности.
Рис. 1. Кодер классического турбо кода.
Очевидно, что число составных кодов в турбо коде может быть и больше двух. Существуют также схемы построения кодеров с перемежителем в своем составе, которые используют последовательное или гибридное (последовательное и параллельное) соединение кодеров составных кодов, однако приставку турбо в отношении этих конструкций стараются не использовать, несмотря на то, что они обладают столь же высокими рабочими характеристиками. Существуют также турбо коды в которых в качестве составных кодов используются блочные коды, однако такие конструкции несколько уступают классическим турбо кодам по помехоустойчивости и кроме того не позволяют произвольно выбирать длину одновременно кодируемого информационного блока и скорость кода (для сверточных кодов скорость довольно просто реализуется путем применения процедуры выкалывания). Интересно отметить, что после открытия турбо кодов в 1993 году имеется тенденция использовать приставку "турбо" для любой кодовой конструкции хотя бы отдаленно напоминающей турбо код по построению. Яркий пример - так называемые коды произведений, которые теперь пытаются "переименовать" в турбо коды произведений (turbo product codes) мотивируя это тем, что при их декодировании также используется итеративный алгоритм (см. ниже). Однако, эти конструкции были известны задолго до открытия турбо кодов и не обладают столь высокими характеристиками. Кроме того в составе кодов произведений не используется перемежитель - непременный элемент любого "подлинного" турбо кода. В этой связи не лишне напомнить всем известный лозунг - "Остерегайтесь подделок".
Как устроен декодер турбо кода.
Для декодирования турбо кодов в настоящее время повсеместно применяется концепция так называемого итеративного декодирования [J. Hagenauer, E. Offer, and L. Papke, "Iterative decoding of binary block and convolutional codes," IEEE Trans. Inform. Theory, vol. 42, no. 2, pp. 429-445, Mar. 1996.,] сущность которой можно раскрыть, рассматривая структуру итеративного декодера турбо кода (рис. 2).
Рис. 2. Структурная схема итеративного декодера турбо кода.
Итеративный декодер образован последовательным соединением декодеров двух элементарных кодов (РСК1 и РСК2), так называемых декодеров с мягкими входным и выходным сигналом (Soft-In Soft-Out - SISO). Каждый элементарный декодер имеет два входа:
-
вход для сигнала, представляющего собой мягкое решение демодулятора; -
вход для сигнала так называемой внешней информации (extrinsic information), получаемой от декодера другого элементарного кода.
Первый декодер в схеме на рис. 2 имеет только один выход, на который подается внешняя информация, полученная этим декодером в процессе декодирования. Внешняя информация, производимая декодером для каждого информационного бита, представляет собой величину, модуль которой пропорционален надежности приема данного информационного бита, а знак соответствует передаче 0 или 1 в данном информационном бите. Существенным является то, что внешняя информация о каждом информационном бите вырабатывается декодером элементарного кода с использованием сведений об информационных символах, содержащихся только в проверочной группе данного составного кода. Таким образом, внешняя информация оказывается некоррелированной с мягкими решениями, производимыми демодулятором по каждому информационному биту и с информацией о передаваемых информационных символах, содержащейся в проверочной группе другого элементарного кода (разумеется, если мягкие решения, производимые демодулятором по каждому биту, являются статистически независимыми случайными величинами). Поэтому оказывается возможным использовать внешнюю информацию каждого элементарного кода в качестве априорных сведений о передаваемых информационных символах в процессе декодирования в другом элементарном декодере
, осуществляя, таким образом, декодирование по методу максимума апостерионой вероятности, что повышает достоверность декодирования. В процессе декодирования турбо кода элементарные SISO декодеры обмениваются друг с другом внешней информацией с каждой итерацией улучшая окончательное решение в смысле снижения средней вероятности ошибки на бит в декодированной информационной последовательности (одна итерация включает в себя декодирование РСК1 и РСК2). Однако, уже после первой итерации внешняя информация, подаваемая на вход декодера РСК1 по цепи обратной связи, оказывается коррелированной с информацией, получаемой из мягких решений демодулятора для проверочных символов РСК1, поэтому улучшение окончательного решения, с каждой итерацией становится меньше и таким образом, величина вероятности ошибки на бит, достигаемая декодированием по этому методу, стремится к определенному пределу. Окончательное (жесткое) решение о передаваемых информационных битах принимается после завершения последней итерации декодером РСК2 и подается на его отдельный выход. Методы построения SISO элементарных декодеров практически сводятся к использованию двух различных алгоритмов декодирования элементарных кодов, способных вырабатывать мягкие выходные решения о передаваемых информационных символах:
-
BCJR (L. R. Bahl, J. Cocke, F. Jelinek, J. Raviv) алгоритм (другое название - MAP - Maximum Aposteriory Probability) и его упрощенные реализации log-BCJR и max-log-BCJR; -
алгоритм Витерби с мягким входным и выходным сигналом (Soft In Soft Out Viterbi Algorithm - SOVA).
BCJR алгоритм позволяет реализовывать характеристики помехоустойчивости турбо кодов, близкие к теоретическим пределам для данных кодов, однако он часто оказывается сложнее в реализации, чем SOVA, который в свою очередь может проигрывать BCJR в помехоустойчивости до 1 дБ при больших длинах блока перемежения и кодового ограничения РСК.