- •Глава 7 помехоустойчивое кодиров 7.1. Классификация корректирующих кодов
- •7.2. Принципы помехоустойчивого кодирования
- •7.3. Систематические коды
- •7.4. Код с четным числом единиц. Инверсный код
- •7.5. Коды Хемминга
- •7.6. Циклические коды
- •7.7. Коды с постоянным весом
- •7.8. Непрерывные коды
- •7.9. Обобщение теории кодирования на недвоичные коды
- •7.10. Итеративные и каскадные коды
- •7.11. Адаптивные корректирующие коды
7.6. Циклические коды
Важное
место среди систематических кодов
занимают циклические
коды. Свойство
цикличности состоит в том, что
циклическая перестановка всех символов
кодовой комбинации
Ai
дает другую кодовую комбинацию Aj,
также принадлежащую этому коду. При
такой перестановке
символы кодовой комбинации перемещаются
слева направо на
одну позицию, причем крайний правый
символ переносится на место крайнего
левого символа. Например,
=
101100,
=
010110
или
=
011101 и
=
111010.
Комбинации циклического кода, выражаемые двоичными числами, для удобства преобразований обычно определяют в виде полиномов, коэффициенты которых равны 0 или 1. Примером этого может служить следующая запись:
![]()
Помимо цикличности кодовые комбинации обладают другим важным свойством. Если их представить в виде полиномов, то все они делятся без остатка на так называемый порождающий полином G(z) степени r = n - k,где k —знач-ность первичного кода без избыточности, а n — значность циклического кода.
Построение
комбинаций циклических кодов возможно
путем умножения комбинации первичного
кода
на
порождающий полином
:
![]()
Умножение
производится по модулю
и
в данном случае сводится к умножению
по обычным правилам с приведением
подобных членов по модулю два.
В полученной таким способом комбинации A(z) в явном виде не содержатся информационные символы, однако они всегда могут быть выделены в результате обратной операции: деления A(z) на G(z).
Другой
способ кодирования, позволяющий
представить кодовую комбинацию в виде
информационных и контрольных символов,
заключается в следующем. К комбинации
первичного кода дописывается справа
r
нулей, что эквивалентно повышению
полинома A*(z)на
r
разрядов, т. е. умножению его на zr.
Затем произведение
делится
на порождающий полином. В общем случае
результат деления состоит из целого
числа Q(z)
и остатка R(z)
Отсюда:
![]()
Вычисленный
остаток
и используется для образования комбинации
циклического кода в виде суммы:
![]()
Так
как сложение и вычитание по модулю два
дают один и тот же результат, то нетрудно
заметить, что
т. е. полученная комбинация удовлетворяет
требованию делимости на порождающий
полином. Степень полинома
не превышает r
-1,
поэтому он замещает нули в комбинации
.
Для
примера рассмотрим циклический код с
n=7,
k
= 4, r
= 3
и
Необходимо закодировать комбинацию ![]()
![]()

![]()
![]()
![]()
![]()
Тогда
Для
определения остатка делим
на
.
Окончательно получаем:
![]()
В
высшие четыре разряда занимают
информационные символы, а остальные
три — контрольные.
Контрольные
символы в циклическом коде могут быть
вычислены и по общим формулам (7.9), однако
здесь определение коэффициентов
затрудняется
необходимостью выполнять требование
делимости
на порождающий полином
.
Процедура
декодирования принятых комбинаций
также основана на использовании
полиномов
.
Если ошибок в процессе передачи не
было, то деление принятой комбинации
на
дает целое число. При наличии корректируемых
ошибок в результате деления образуется
остаток, который и позволяет обнаружить
или исправить ошибки.
Кодирующие и декодирующие устройства циклических кодов в большинстве случаев обладают сравнительной простотой, что следует считать одним из основных их преимуществ. Другим важным достоинством этих кодов является их способность корректировать пачки ошибок, возникающие в реальных каналах, где действуют импульсные и сосредоточенные помехи или наблюдаются замирания сигналов.
