Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
a4.doc
Скачиваний:
45
Добавлен:
19.12.2018
Размер:
11.89 Mб
Скачать

6.5.1. Рекуррентные коды

Обычно они имеют скорость (на каждый информационный разряд приходится один контрольный). Простейший пример – так называемый корреляционный код, когда к каждому информационному разряду дописывается его инверсия, так что единица исходного кода трансформируется в код 10, а ноль соответственно – в 01. Такой код неэффективен, так как имеет кодовое расстояние для двух соседних разрядов, т. е. обнаруживает одиночные ошибки, но с другой стороны проверки независимы и фактически можно обнаружить большее их количество.

Более изощренными являются настоящие рекуррентные коды, в которых проверочные разряды удалены от соответствующих им информационных. Причем, чем больше удаление, тем выше корректирующая способность кода.

Рассмотрим простейший случай, когда проверочные разряды смещены относительно проверочных на два такта. Алгоритм формирования тривиален. Если нужен код, исправляющий пачки из 2 ошибок , то необходим двойной сдвиг на 2 такта. Выберем фрагмент непрерывного кода из 4 разрядов, например, 111010… и сформулируем правило образования проверочных разрядов: сдвинем на два такта исходную информационную последовательность, сдвинем еще на два такта и полученные коды просуммируем по модулю 2 (рис. 6.64).

Рис. 6.64. Формирование контрольных разрядов

Точками обозначены недостающие разряды в непрерывном потоке. Получающиеся контрольные разряды встраиваются в этот поток методом поочередной коммутации. При этом, чем больше задержка, тем большая пачка ошибок может исправляться.

Устройство, реализующее кодирование по этому алгоритму представлено на рисунке 6.65.

Рис. 6.65. Схема шифратора рекуррентного кода

Здесь элементы Д1, Д2, Д3 и Д4 – элементарные задержки на такт (обычный сдвиговый регистр), Д5 – «исключающее ИЛИ» (сумматор по модулю 2), СК – синхронный коммутатор. Последний производит поочередно коммутацию информационных и контрольных разрядов.

Нетрудно догадаться, что для получения рекуррентного кода с большей корректирующей способностью достаточно добавлять четное количество элементов задержки. Так шифратор кода, ориентированного на исправление пачек до 6 ошибок, будет содержать 6 элементов задержки, причем входы сумматора по модулю 2 подключаются соответственно к выходам третьего и шестого элементов задержки.

Декодер рекуррентного кода намного сложнее (рис. 6.66).

Рис. 6.66. Схема декодера рекуррентного кода

Она включает, во-первых, синхронный коммутатор, работающий с той же частотой, что и в шифраторе, и схему, повторяющую шифратор (элементы Д1, …, Д5). В результате на выходе Д5 образуются контрольные разряды, при отсутствии ошибок совпадающие с соответствующими разрядами шифратора. Если помех нет, на входах элемента Д6 значения разрядов одинаковы. В противном случае на выходе Д8 появляется некоторый код; Он поступает на детектор ошибок (элементы Д9, …, Д14). Детектор дает сдвиг на 2 такта, для компенсации которого происходит дополнительная задержка элементами Д5, Д6.

Так же, по аналогии с шифратором, можно расширить корректирующую способность дешифратора. Для этого достаточно добавить: по одному элементу сдвига в цепочку Д1, Д4; один дополнительный элемент задержки после Д6; по одному элементу задержки в цепочку Д9, …, Д12.

Главный недостаток дешифраторов – эффект размножения: если код исправляет пачки из ошибок, то расстояние между соседними пачками должно быть не меньше . В противном случае при декодировании ошибки размножаются. Поэтому рекуррентные коды особого применения не нашли. Но возможен облегченный вариант, при котором ошибки не исправляются, а только обнаруживаются. По схеме, изображенной на рисунке 6.66, удаляется детектор ошибок (элементы Д9, …, Д14), а на выходе вместо сумматора по модулю 2 Д15 устанавливается схема «запрет», стирающая код на длину разрядов.