ИТЕРАТИВНЫЕ КОДЫ
Итеративные коды широко применяются в системах передачи данных из-за простоты реализации. Код получают путем представления последовательности информационных символов в виде двумерного массива. Затем каждая строка массива и каждый столбец кодируются некоторым кодом, причем необязательно одним и тем же.
Информационные символы | Проверочные символы по строкам |
Проверочные символы по столбцам | Проверка проверок |
Кодовое расстояние dmin такого кода равно произведению кодовых расстояний используемых итерируемых кодов.
Рассмотрим итеративный код с проверкой на четность по каждой строке и каждому столбцу. Кодовые комбинации информационных символов представлены в коде ASCII.
1110001 0011001 | |
Код с проверкой на четность имеет кодовое расстояние dmin=2, соответственно для итеративного кода dmin=4. Полученный итеративный код исправляет одиночные ошибки и обнаруживает любые комбинации ошибок нечетного веса. Ошибки четного веса в пределах одной строки обнаруживаются при помощи проверок по столбцам. Четное число ошибок в пределах одного столбца обнаруживается при помощи проверок по строкам. Не обнаруживается любой набор из 4-х ошибок, образующих прямоугольник.
|
|
В настоящее время в системах передачи данных очень широко используется сверточное кодирование вместе с декодированием по алгоритму Витерби. Алгоритм Витерби представляет собой декодирование по максимуму правдоподобия и используется для исправления одиночных ошибок.
Сверточные коды являются непрерывными, то есть относятся к классу древовидных кодов. Символы последовательности на выходе кодера такого кода образуются путем суммирования по модулю 2 каждого информационного символа с некоторым набором предыдущих символов.
Кодирующее устройство сверточного кода в общем виде представлено ниже.
При поступлении на вход кодера каждого информационного символа Ui мультиплексор М последовательно считывает за один такт сигналы с выходов всех сумматоров по модулю 2, формируя на выходе m символов Vi. Таким образом, при скорости входной последовательности Ввх бит/с скорость выходной последовательности составляет Ввых=mВвх бит/с.
Для задания схемы кодера сверточного кода можно воспользоваться двоичными коэффициентами gij:
· Если gij =1, значит i -я ячейка регистра сдвига РС имеет связь с j -м сумматором.
· Если gij =0, значит i -я ячейка регистра сдвига РС не имеет связи с j -м сумматором.
Совокупность связей i-й ячейки РС с сумматорами представляют в виде двоичного вектора Gi=(gi1, gi2, ….,gim), 0<=i<=N-1.
Второй способ представления связей между ячейками регистра сдвига и сумматорами, который часто используется в научно-технической литературе, заключается в следующем: каждый сумматор описывается порождающим (образующим, формирующим) полиномом gj(D)=1+D+D2+D3+…
|
|
Здесь используется терминология циклических кодов.Степени полинома соответствуют номерам ячеек регистра сдвига (слева направо), с которыми j-й сумматор имеет связь. Например, в радиоканалах подвижной связи стандарта GSM (Глобальная система подвижной связи) используются сверточные кодеры с N=5 и порождающими полиномами g1=1+D2+D3+D4 и g2=1+D+D4.
Сверточный код может быть систематическим (разделимым) или несистематическим ( неразделимым ). Для систематического кода один из полиномов gj должен быть равен 1
gj=1.
Тогда на выходе соответствующего сумматора мы имеем входную информационную последовательность, а кодовая последовательность на выходе кодера является разделимой на информационные и (добавленные) проверочные символы. При использовании в декодере алгоритма Витерби предпочтение отдается несистематическим кодам.
Каждый информационный символ находится в регистре сдвига в течение N тактов и влияет на N*m передаваемых символов Vi. Величина N называется памятью сверточного кода. В общем случае число символов на выходе сверточного кодера, соответствующее передаче информационной последовательности длиной L символов составляет (L+N)*m. Обычно L>>N.
Сверточный код характеризуется скоростью R=k/m, где k – число входов сверточного кодера, m – число выходов, то есть число сумматоров. На практике чаще всего используются коды со скоростью R=1/2.