Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
336
Добавлен:
20.06.2014
Размер:
7.49 Mб
Скачать

9. Циклические коды. Образующий полином.

Циклические коды позволяют обнаруживать и исправлять групповые ошибки. В циклических кодах широко используется операция циклической перестановки (самый старший разряд переставляется в конец кодовой комбинации, а остальные сдвигаются влево или, наоборот, младший разряд переставляется в начало, остальные сдвигаются вправо).

При формировании циклических кодов происходит деление на образующий полином.

Представление кодовой комбинации в виде полинома.

Q(x)=111111=x5+x4+x3+x2+x1+x0

xi – двоичный разряд. x1=x, x0=1

Если какой-либо разряд xi = 0 в составе полинома, то его опускают.

Q(x)=1100110=x6+x5+x2+x

Образующий полином – это полином, который является простым числом: (11)10, (13)10, (17)10, (19)10 и т.д. Он выбирается заранее как делитель, позволяющий выполнять обнаружение и исправление ошибки.

P(x)=(11)10=(1011)2=x3+x+1 Степень образующего полинома – к. (к=3)

Операция деления полинома на полином.

Деление сходно с алгебраическим, но есть отличие:

  • операция вычитания заменяется суммированием по модулю 2;

  • деление заканчивается, если наивысшая степень у остатка меньшей таковой у делителя;

  • интерес представляет не частное от деления, а остаток.

Рассмотрим пример деления.

Пусть Q (x) = x 5 + x 3 + x - делимое

P (x) = x 3 + x + 1 - делитель

x 5 + x 3 + x

x 3 + x + 1

x 5 + x 3 + x 2

x 2

x 2 + x

Остаток: R (x) = x 2 + x = 110

Формирование циклического кода.

Правило: нужно исходную кодовую комбинацию (КК) - Q(x) разделить на образующий полином Р(х) и дописать справа остаток от деления к исходной КК. Обозначим F(x) – комбинация циклического кода.

F(x) = Q(x) *x k R(x) , где k – степень образующего полинома.

Величина k показывает количество сдвигов влево, которое Q(x) должно претерпеть.

Пример: Q(x) = x 5 + x 3 + x = 101010 – исходная КК,

Р(х) = x 3 + x + 1 = 1011 - образующий полином

R(x) = x 2 + x = 110 - полученный остаток от деления,

F(x) = 101010 110 - комбинация циклического кода,

где: 101010 - информационная часть,

110 – контрольная часть

Остаток R(x) называется синдромом..

Пусть Q(x) = 1110. Если k =3, то Q(x) X k = 1110 000

Проверка правильности циклического кода.

Правильность циклического кода проверяется с помощью операции деления на образующий полином. Если в результате деления остаток равен нулю (R(x)=0), то считается ,что комбинация циклического кода ошибки не содержит. Если же при делении получился остаток, то комбинация содержит ошибку, которую можно исправить. Процедура отыскания места ошибки сводится к циклическим сдвигам КК F(х) и деление ее на образующий полином.

W - вес остатка (количество единиц в нем).

S - кратность ошибки (количество ошибочных разрядов в кодовой комбинации).

В алгоритме используются циклические сдвиги влево и вправо, количество которых подсчитывается во время выполнения.

Cn - счетчик циклических сдвигов.