- •Санкт-Петербургский государственный технический университет
- •Способы задания кодов, классификация и характеристики кодов.
- •Задание сверточного кода решеткой.
- •Матричное описание сверточных кодов.
- •Код Вайнера-Эша
- •Коды Хэмминга (недвоичные)
- •Коды Хэмминга как цикличные коды
- •Проблематика исправления ошибок.
- •Алгоритм декодирования сверточных кодов.
- •Синдромное декодирование сверточных кодов.
- •Исправление пакетов.
- •Алгоритм декодирования Витерби.
- •Оценка характеристик декодирования по алгоритму Витерби.
Исправление пакетов.
Пакет – это группа символов, начинающаяся ошибкой и заканчивающаяся ошибкой. Длина пакета – это число символов в группе. При таком определении самая маленькая длина равна 2.
Очевидно, что сверточный код, исправляющий t ошибок, исправляет и пакет длины t. Чтобы исправлять более длинные пакеты, применяют перемежение. Для этого берут j одинаковых (n, k) кадров кода (n, k) и чередуют их выходные символы, тогда длина исправляемого пакета равна jt. Методом перемежения можно получить сверточный код следующим образом. Пусть g(x) – порождающий многочлен исходного кода, тогда g(xj) – будет порождающим многочленом кода перемежения. Эти коды исправляют как пакеты, так и независимые ошибки. Однако, если ориентироваться на исправление только пакетов, можно построить коды более экономные и эффективные. Примером таких кодов являются коды Ивадаре.
Пусть и n0 – любые положительные целые числа. Код Ивадаре, исправляющий пакеты двоичный систематический, задается матрицей многочленов размерности [(n0-1) n0]

![]()
i=1, 2, … (n0-1).
Наибольшую степень имеет g1(x), равную (+1)(2n0-1)-2=m.
Код исправляет пакеты длиной до n0. Синдромный многочлен всего один, минимальный n0-k0=1
![]()
Как можно исправить пакет, рассмотрим на примере конкретного кода. Возьмем n0=3, =4, тогда m+1=24. Это код (72, 48).
Схема кодера приведена на рисунке.

Кодер кода Ивадаре (72, 48).
Обозначим С3(x) – многочлен проверочных битов. С1(x) и С2(x) – многочлены информационных битов. Многочлен ошибок соответственно l1(x), l2(x) и l3(x). Синдромный многочлен будет равен
![]()
Здесь, для начинающегося в первом кадре пакета
l3(x)= l30+ l31x+ l32x2+ l33x3
l2(x)= l20+ l21x+ l22x2+ l23x3+ l24x4
l1(x)= l10+ l11x+ l12x2+ l13x3+ l14x4
Надо обратить внимание, что если пакет начинается в первом кадре, то l34=0; если l240, то l20 и l10=0; если l140, то l10=0. Это определено тем, что длина пакета не более 12 бит. Ниже приведена структура синдрома для трех случаев.

Обратите внимание, что на каждый бит синдрома влияет лишь один ошибочный бит. Каждый бит многочлена l2(x) воздействует на синдром дважды: за его первым появлением следует отклик с задержкой на 14 битов. Так как l24 и l10 одновременно ненулевыми быть не могут, то эти пары ошибок никогда не перекрываются.

Декодер Ивадаре (72, 48).
Исправляются пакеты длины 12 бит. Расстояние между пакетами не менее, чем 72 бита.
Алгоритм декодирования Витерби.
Это полный декодер. Применяется для двоичных кодов с длиной кодового ограничения не более 7-10. По сути своей этот алгоритм есть алгоритм максимального правдоподобия. Принятая последовательность бит сравнивается с одной из 2L возможных, где L – длина информационной последовательности. Решение выносится в пользу той кодовой последовательности, которая ближе всего к принятой. Витерби удалось так переформулировать задачу, что не потребуется всех 2L сравнений (экспоненциальный рост сложности). Анализируются пути на решетке и сохраняются до каждой вершины только пути минимального веса (минимальной длины). Даже если есть несколько путей одинаковых, достаточно хранить один. Всего храниться 2k путей. Решение выносится, когда пути сливаются, остается только один путь из самой старой вершины. Относительно этого последнего самого старого кадра и выносится решение. Глубина, при которой происходит слияние путей, случайна, зависит от характера ошибок, от скорости кода, величины кодового ограничения. Поэтому при практической реализации выбирают фиксированную величину окна и дополнительный механизм вынесения решения.
