7.5 Каскадные коды
Как следует из теории информации, для наилучшего приближения скорости передачи к пропускной способности канала необходим случайный выбор кодовых слов при их достаточно большой длине. Практической целью является поиск кодов с большой эквивалентной длиной блока и структурой, допускающей приемлемую сложность реализации декодера. Поставленным условиям во многом удовлетворяет метод каскадного кодирования, обеспечивающий необходимый компромисс между исправляющей способностью и сложностью декодера.
Двухступенчатый последовательный каскадный кодек, показан на рис. 7.11.
Рис. 7.11 – Последовательное каскадное кодирование
При
последовательном каскадном кодировании
двоичных
символов кода 1-ой ступени (внутреннего
кода) представляются как один символ
недвоичного кода (с основанием
)
2-ой ступени (внешнего кода); к
информационным
символам этого кода добавляется
проверочных
символов, каждый из которых также состоит
из
двоичных
символов; в результате образуется
кодовое слово
.
Затем строки из
двоичных
символов кодируются кодом
и к каждой строке добавляется
проверочных
символов кода 1-ой ступени.
В
другом методе формирования каскадного
кода (итеративный код)
информационных
блоков, каждый из которых состоит из
двоичных
символов кода 1-ой ступени записываются
в виде строк матрицы; каждый ее столбец
образует
символов,
которые являются информационными
символами кода
2-ой
ступени. Затем, как и при каскадном
кодировании, строки из
двоичных символов кодируются кодом
и
к каждой строке добавляется
проверочных
символов кода 1-ой ступени; в результате
получается матрица
.
И
в том и другом случае образуется блок
двоичных символов длиной
,
содержащий
информационных
символов, а общее кодовое расстояние
равно произведению кодовых расстояний
внешнего и внутреннего кодов. Хотя общая
длина кода равна
,
декодирование может производиться с
помощью двух декодеров для кодов с
длинами
и
соответственно,
что уменьшает сложность декодирования.
В качестве кодов 1-ой и 2-ой ступеней могут использоваться как блочные, так и сверточные коды. В качестве кодов 2-ой ступени часто используются недвоичные циклические коды РС. При этом оценка вероятности ошибки на выходе декодера РС равна:
(7.26)
где
кратность ошибок, исправляемых внешним
кодом,
вероятность ошибки на выходе декодера
1-ой ступени,
множитель, учитывающий среднее число
ошибок в двоичных символах на выходе
на одну ошибку недвоичного символа кода
РС.
Необходимо также отметить, что для повышения качества декодирования при последовательном включении кодеров и декодеров полезно установить между кодерами перемежитель, а между декодерами деперемежитель. Это позволяет устранить влияние пакетирования ошибок, возникающих при декодировании внутреннего кода.
Одна из причин снижения эффективности последовательных каскадных кодов – кодирование внутренним кодером как информационных, так и проверочных символов внешнего кодера. Таким образом, часть пропускной способности канала тратится на передачу символов, являющихся "проверочными от проверочных".
Работы по совершенствованию методов исправления ошибок с помощью каскадного кодирования привели к разработке нового класса кодов — параллельных каскадных кодов с итерационным декодированием, обычно называемых турбокодами. Турбокод образуется при параллельном включении двух или более систематических кодов. В компонентных кодерах могут использоваться коды Хемминга, БЧХ, Рида-Соломона и сверточные.
Обобщенная
структурная схема турбокодера показана
на рис. 7.12. Блок информационных символов
поступает на вход турбокодера. Символы
подаются
на систематический выход турбокодера
и параллельно на М ветвей, состоящих из
-го
перемежителя и
кодеров.
Каждый перемежитель преобразует
последовательность символов
по
псевдослучайному закону и выдает пакет
на вход соответствующего кодера. На
выходах кодеров каждой из М ветвей
образуются последовательности проверочных
символов
.
Рис.7.12 – Структурная схема турбокодера
Информационные
символы
мультиплексируются с проверочными
символами
,
образуя кодовое слово, которое подлежит
передаче по каналу. Скорость кода на
выходе турбокодера
=
1/(М+ 1). Для повышения скорости кода
применяют выкалывание (перфорацию)
определенных проверочных символов. В
большинстве случаев ограничиваются
использованием двух ветвей кодирования
(М = 2) без перемежителя в первой ветви.
Классический турбодекодер содержит М декодеров, каждый из которых использует алгоритм МАВ или МП, рис. 7.13.
Рис. 7.13 – Структурная схема турбодекодера
В
результате демультиплексирования на
входе декодера имеется информационная
и
две проверочные последовательности
и
.
После декодирования информационной и
первой проверочной последовательностей
получается начальная оценка информационной
последовательности, которая может
использоваться как априорная информация
во втором декодере.
Качество декодирования турбокодов, как и других кодов, можно существенно улучшить при выполнении нескольких итераций декодирования одного и того же блока информации. Поэтому в дальнейшем для свёрточных кодов был разработан модифицированный алгоритм Витерби с "мягким" входом и выходом, известный как алгоритм SOVA (Soft-Output Viterbi Algorithm). Его реализация примерно вдвое сложнее алгоритма Витерби.
