Краткие теоретические сведения. Рекуррентный код – это код, в котором после каждой информационной посылки следует
Рекуррентный код – это код, в котором после каждой информационной посылки следует проверочная посылка. Последние формируются путем сложения по модулю 2 двух информационных посылок, отстоящих одна от другой на шаг сложения k. Шаг сложения – это расстояние между двумя информационными посылками, образующими проверочную посылку.
Пусть имеем последовательность информационных посылок:
Тогда проверочные посылки определяются следующим образом:
Итак, последовательность проверочных посылок:
В связи с тем, что каждая информационная посылка участвует в формировании двух проверочных посылок, а каждая проверочная посылка формируется по двум информационным, число проверочных посылок, сформированных за некоторое время, будет равно числу информационных посылок, поступивших за то же время на вход кодирующего устройства. Поэтому избыточность цепного кода равна 1/2.
Процесс декодирования принимаемой последовательности импульсов определяется принципом формирования проверочных посылок.
1. На приеме информационные и проверочные посылки разделяются и регистрируются независимо друг от друга.
2. Из принятой последовательности информационных посылок формируются контрольные посылки аналогично тому, как происходит формирование при передаче проверочных посылок.
3. Каждая контрольная посылка сравнивается с принятой из канала связи соответствующей проверочной посылкой. При отсутствии искажений в канале связи, сравниваемые контрольные и проверочные посылки совпадают, при наличии ошибок в принимаемой последовательности, сравниваемые соответствующие контрольные и проверочные посылки не совпадают.
Согласно принципу формирования проверочных посылок при шаге сложения k вся последовательность передаваемых в канал связи посылок разбивается как бы на k независимых цепей. В каждую цепь входят информационные и проверочные посылки, связанные друг с другом.
Корректирующие возможности цепного кода зависят от шага сложения k. Изменяя его, можно построить кодирующие и декодирующие устройства для обнаружения и исправления пачек ошибок любой длительности l: l = k.
Кодирование
Кодовая комбинация, которую необходимо закодировать:
11101111 11101001 11110111.
Выбираем шаг сложения:
.
Путем сложения по модулю 2 элементов, находящихся друг от друга на расстоянии 5, находим проверочные посылки:
0001001011010111000,
Дописываем к ним спереди 5 нулей, и получаем последовательность проверочных посылок, которая будет следовать после нашей последовательности информационных посылок:
000000001001011010111000.
Декодирование
Пускай при передаче последовательности информационных посылок произошла 5-кратная ошибка (в разрядах с 6-го по 10-й), и декодер получил следующую искаженную кодовую комбинацию:
1110100000101001 11110111,
после чего получил последовательность проверочных посылок:
000000001001011010111000.
То есть, имеет место пачка ошибок длиной, равной шагу сложения, а это означает, что мы сможем ее исправить.
Для принятой последовательности информационных посылок находим последовательность проверочных посылок:
Далее каждую рассчитанную проверочную посылку сравниваем с соответствующей посылкой, принятой из канала связи:
000001110110100010111000 (рассчитанная)
000000001001011010111000 (принятая)
Видим, что рассчитанная и принятая последовательности проверочных посылок различаются в 8 битах (с 6-го по 15-й разряд), что свидетельствует о наличии пачки ошибок длиной 5 бит (с 6-го по 10-й разряд) в принятой последовательности информационных посылок.
Инвертируем 6-й, 7-й, 8-й, 9-й и 10-й разряды принятой кодовой комбинации и получаем декодированное сообщение:
11101111 11101001 11110111.
Канальные коды
Общие сведения
Канальные коды используются в цифровых системах передачи для вторичного кодирования сообщений при их передаче по линиям связи. Еще одно применение канальные коды нашли при записи информации на оптические носители данных (CD, DVD).
Необходимость в этом возникает, главным образом, при передаче сообщений постоянным потоком по проводным линиям с целью увеличения помехоустойчивости передачи, а также облегчения получения из информационного потока, который передается, сигналов синхронизации для стабильной работы передающего и принимающего устройств системы передачи данных.
Наиболее часто применяются следующие канальные коды: дуобинарный, квазитроичный, модифицированный дуобинарный, 4В3Т, Манчестер 2.
Дуобинарный код