Главная страница

Циклические коды составляют большую группу наиболее широко используемых на


Скачать 201 Kb.
НазваниеЦиклические коды составляют большую группу наиболее широко используемых на
Анкор1.doc
Дата04.09.2018
Размер201 Kb.
Формат файлаdoc
Имя файла1.doc
ТипДокументы
#24050
страница1 из 4
  1   2   3   4

1.5. ЦИКЛИЧЕСКИЕ КОДЫ

Циклические коды составляют большую группу наиболее широко используемых на

практике линейных, систематических кодов. Их основное свойство, давшее им название,

состоит в том, что каждый вектор, получаемый из исходного кодового вектора путем

циклической перестановки его символов, также является разрешенным кодовым вектором.

Принято описывать циклические коды (ЦК) при помощи порождающих полиномов G(Х)

степени m = n – k, где m – число проверочных символов в кодовом слове. В связи с этим ЦК

относятся к разновидности полиномиальных кодов.

Операции кодирования и декодирования ЦК сводятся к известным процедурам

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

технически с помощью линейных переключательных схем (ЛПС), при этом получаются

относительно простые схемы кодеков, в чем состоит одно из практических достоинств ЦК.

Среди циклических кодов особое место занимает класс кодов, предложенных Боузом

и Чоудхури и независимо от них Хоквингемом. Коды Боуза-Чоудхури-Хоквингема получили

сокращенное наименование БЧХ-коды. БЧХ-коды являются обобщением кодов Хемминга

на случай исправления нескольких независимых ошибок (gи > 1). Частными случаями БЧХ-

кодов являются коды Файра, предназначенные для обнаружения и исправления серийных

ошибок («пачек» ошибок), код Голея – код, исправляющий одиночные, двойные и тройные

ошибки (dmin= 7), коды Рида–Соломона (РС-коды), у которых символами кода являются

многоразрядные двоичные числа.

1.5.1. ПОЛИНОМИНАЛЬНОЕ ОПРЕДЕЛЕНИЕ ЦИКЛИЧЕСКИХ КОДОВ И ОПЕРАЦИИ С

НИМИ

Циклические коды являются частным случаем систематических, линейных (n, k)-

кодов. Название ЦК получили из-за своего основного свойства: циклическая перестановка

символов разрешенной кодовой комбинации дает также разрешенную кодовую

комбинацию. При циклической перестановке символы кодового слова перемещаются

слева направо на одну позицию, причем крайний справа символ переносится на место

крайнего левого.

Если, например А1 – 101100, то разрешенной кодовой комбинацией будет и А2 –

010110, полученная циклической перестановкой. Отметим, что перестановка производится

вместе с проверочными символами, и по правилам линейных кодов сумма «по модулю 2»

разрешенных кодовых комбинаций дает также очередную разрешенную кодовую

комбинацию.

Описание ЦК связано с представлением кодовых комбинаций в виде полиномов

(многочленов) фиктивной переменной X. Для примера переведем кодовое слово А1

= 101100 в полиномиальный вид

i 6 5 4 3 2 1

Код 1 0 1 1 0 0 При этом A1(X)=1X

5

+0X

4

+1X

3

+1X

2

+0X

1

+0X

0

= X

5

+X

3

+X

2

(A1=101100).

Сдвиг влево на один разряд дает: 1X

6

+0X

5

+1X

4

+1X

3

+0X

2

+0X

1

+_ (101100_). Для

получения циклического сдвига, нужно левое слагаемое перенести в крайнюю правую

позицию: 0X

5

+1X

4

+1X

3

+0X

2

+0X

1

+1X

6

(011001) и принять X

6

≡X

0

. Тогда A2(X)=

0X

5

+1X

4

+1X

3

+0X

2

+0X

1

+1X

0

(A1=011001). Откуда следует:

6 0

1.

n

X X X = = =

Действия с кодовыми векторами, представленными в виде полиномов, производятся

по правилам арифметики «по модулю 2», в которой вычитание равносильно сложению.

Действительно, прибавив к левой и правой частям по единице, имеем Х

n

+ 1 = 1⊕1= 0 или

1.

n

X = −

Таким образом, вместо двучлена Х

n

– 1 можно ввести бином Х

n

+1 или 1 + Х

n

, из чего

следует, что Х

k

⊕ Х

k

= Х

k

(1⊕1) = 0 и при последующих операциях с полиномами

необходимо вычеркивать пары фиктивных переменных X с одинаковыми степенями.

Приведем далее порядок суммирования (вычитания), умножения и деления

полиномов с учетом того, что операция суммирования осуществляется «по модулю 2». В

примерах используем вышеприведенные кодовые комбинации A1(X)=X

5

+X

3

+X

2

и

A2(X)=X

4

+X

2

+X.

Суммирование (вычитание):

A1+A2 = A1-A2 = X

5

+X

4

+X

3

+X

2

+X

2

+X = X

5

+X

4

+X

3

+X

Умножение:

A1 ×A2 = (X

5

+X

3

+X

2

) ×(X

4

+X

2

+X) =

X

9

+X

7

+X

6

+X

7

+X

5

+X

4

+X

6

+X

4

+X

3

= X

9

+X

5

+X

3

= 1000101000.

Деление:

2

1

A

A

X

5

+ X

3

+ X

2

X

4

+ X

2

+ X

X

5

+ X

3

+ X

2

X

0 0 0 - остаток при делении R(X) = 0

или A1 101100



A2 010110

111010 = X

5

+ X

4

+ X

3

+ X. ( )

( )

( )

A X

G X

B X

i

i

=

B (X ) A (X )G(X ).

i = i

Из последнего примера следует, что циклический сдвиг полинома вправо на один

разряд эквивалентен делению его на Х, а циклический сдвиг влево на один разряд –

эквивалентен умножению полинома на Х.

1.5.2. ПОРОЖДАЮЩИЕ ПОЛИНОМЫ ЦИКЛИЧЕСКИХ КОДОВ

Формирование разрешенных кодовых комбинаций ЦК Bi(X) основано на

предварительном выборе так называемого порождающего (образующего) полинома

G (X), который обладает важным отличительным признаком: все комбинации Bi(X) делятся

на порождающий полином G(X) без остатка, т. е.

(1.17)

где Аi(Х) — информативный полином (кодовая комбинация первичного кода,

преобразуемого в корректирующий ЦК).

Поскольку, как отмечалось выше, ЦК относятся к классу блочных разделимых кодов, у

которых при общем числе символов n число информационных символов в Аi(Х) равно k, то

степень порождающего полинома определяет число проверочных символов m = n - k.

Из этого свойства следует сравнительно простой способ формирования разрешенных

кодовых комбинаций ЦК – умножение комбинаций информационного кода Аi(Х) на

порождающий полином G(X):

(1.18)

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

такие полиномы, которые являются делителями двучлена (бинома) 1:

n

X +

1

( )

( )

n

X

H X

G X

+

= (при остатке R(X) = 0). (1.19)

Возможные порождающие полиномы, найденные с помощью ЭВМ, сведены в

обширные таблицы. Некоторые из порождающих полиномов приведены в табл. 1.5. Так,

G(X) приведены с записью полиномов в восьмеричной системе счисления (mod 8). В этом

случае весовые коэффициенты ki

представляют три двоичных знака в соответствии со

следующим кодом: 0-000 1-001 2-010 3-011 4-100 5-101 6-110 7-111.

Двоичные символы являются весовыми коэффициентами порождающих полиномов,

коэффициенты восьмеричной системы счисления расположены слева от них с учетом того,

что 0 7

i ≤ ≤ k (при mod 8).

(при остатке R(X) = 0),,

1

n n

m

k = =

,

1

n

n

n

k

Bk



= =

Например, 3425 обозначает многочлен 10-й степени, В двоичной записи числу 3425

(mod 8) эквивалентно число 011 100 010 101 и соответствующий многочлен равен X

10

+ X

9

+

X

8

+ X

4

+ X

2

+ 1. Как видно из этого примера, восьмеричная система счисления для записи

многочленов выбрана, в частности, из соображений экономии длины записи в три раза при

больших объемах табулированных значений, что подчеркивает известный недостаток

двоичной системы счисления.

Следует отметить, что с увеличением максимальной степени порождающих

полиномов m резко увеличивается их количество. Так, при m = 3 имеется всего два

полинома, а при m = 10 их уже несколько десятков.

Первый порождающий полином минимальной степени m = 1, удовлетворяющий

условию (1.19), формирует код с проверкой на четность (КПЧ) при двух информативных

символах и одном проверочном, обеспечивающем обнаружение однократной ошибки,

поскольку минимальное кодовое расстояние dmin= 2. В общем случае коэффициент

избыточности КПЧ минимален:

(1.20)

а относительная скорость кода – максимальна и будет

(1.21)

в связи с этим КПЧ иногда называют быстрым кодом.

Таблица 1.5. Порождающие полиномы циклических кодов

m-степень

полинома

G(X)

Порождающий полином

G(X)

Запись

полинома

по mod2

Запись

полинома

по mod 8

n k Примечание

1 X+1 11 3 3 2 Код с проверкой на

четность (КПЧ)

2 X

2

+X+1 111 7 3 1 Код с повторением

3 X

3

+X

2

+1

X

3

+X+1

1101 13

15

7

7

4

4

Классический код

Хемминга

4 X

4

+X

3

+1

X

4

+X+1 X

4

+X

2

+X+1

X

4

+X

3

+X

2

+1

11001

10011

10111

11101

31

23

27

35

15

15

7

7

11

11

3

3

Классический код

Хемминга

Коды

Файра-Абрамсона

5 X

5

+X

2

+1

X

5

+X

3

+1

………

100101

101001

45

51

31

31

26

26

Классический код

Хемминга

6 X

6

+X

5

+X

4

+X

3

+X

2

+X+1

……..

1111111 177 7 1 Код с повторени-ем.

min d = l

.

1

1

l

B k

k = − =

Второй порождающий полином степени m = 2, являющийся «партнером» первого

G X X ( ) 1 = + при разложении бинома с n = 3, определяет код с повторением

единственного информативного символа k = 1 («0» или «1»).

Отметим, что ЦК принадлежат к классу линейных кодов, у которых кодовые

комбинации «000 ... 00» и «111 ... 11» являются разрешенными.

У кода с повторением возможности обнаружения и исправления ошибок

безграничны, поскольку число повторений l определяет минимальное кодовое расстояние:

(1.22)

В общем случае коэффициент избыточности кодов с повторением кодовых

комбинаций является максимально возможным: ,

1

1

1

l l

l

nl

nl n

k = −



=



= и при

увеличении l приближается к 1, а скорость (1.21) – минимальна

(1.23)

Таким образом, коды с проверкой на четность и коды с повторением – до некоторой

степени антиподы. Первый код очень быстр (всего один дополнительный символ), но

зачастую «легкомыслен». Возможности второго кода с повторением по исправлению

ошибок теоретически безграничны, но он крайне «медлителен».

Следующие порождающие полиномы в табл. 1.5 со степенью m = 3 позволяют

сформировать набор классических корректирующих (7,4)-кодов Хемминга. Коды Хемминга

также принадлежат к классу ЦК, однако при этом группа проверочных символов кода

получается сразу «в целом» при делении информативной кодовой группы на

порождающий полином, а не «поэлементно», когда последовательное суммирование по

модулю 2 соответствующих информативных символов давало очередной символ

проверочной группы. Отметим, что два варианта порождающих полиномов кода Хемминга

(7,4), с записью по модулю 2 в виде 1101 и 1011, представляют собой, так называемые

двойственные многочлены (полиномы).

Двойственные многочлены определяются следующим образом: если задан полином

в виде h(X) = h0 + h1X + h2X

2

+ … + hmX

m

, то двойственным к нему полиномом, т. е. весовые

коэффициенты исходного полинома, зачитываемые слева направо, становятся весовыми

коэффициентами двойственного полинома при считывании их справа налево. Говоря

образно, набор весовых коэффициентов «вывертывается наизнанку». Следует обратить

внимание на то, что в полных таблицах порождающих ЦК полиномов двойственные

полиномы, как правило, не приводятся. Наряду с тем, что порождающие полиномы кода Хемминга (7,4) являются

двойственными друг другу, они также являются неприводимыми. Неприводимые

полиномы не делятся ни на какой другой полином степени меньше r, поэтому их называют

еще неразложимыми, простыми и примитивными.

Далее в табл. 1.5 при значениях m = 4 и 5 попадают следующие классические коды

Хемминга (15, 11) и (31, 26). Порождающие их полиномы также являются двойственными

друг к другу и неприводимыми. Напомним, что к классическим кодам Хемминга относятся

коды, у которых n = 2m – 1, a k = 2m – 1 – m, с минимальным кодовым расстоянием dmin= 3,

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

При значениях m = 4 в табл. 1.5 попадают порождающие многочлены кода Абрамсона

(7,3), являющиеся частным случаем кодов Файра, порождающие полиномы для которых

имеют вид

( ) ( )( 1),

c

G X p X X = + (1.24)

где р (Х) – неприводимый полином.

Коды Абрамсона совпадают с кодами Файра, если положить с = 1. Число проверочных

символов m= 4 определяет общее число символов в коде (разрядность кода), поскольку

для этих кодов

1

2 1.

m

n



= − Эти коды исправляют все одиночные и смежные двойные

ошибки ( т. е. серии длиной 2). Помещенные в табл. 1.5 коды Абрамсона (7,3) являются

первыми циклическими кодами, исправляющими серийные ошибки (пакеты ошибок). В

этом применении ЦК оказываются особенно эффективными. Обратим внимание на то, что

при с = 1 порождающими полиномами р (X) являются двойственные полиномы X

3

+ X

2

+ 1 и

X

3

+ X + 1, образующие код Хемминга (7,4) при m= 3.

Серийные ошибки возникают в результате воздействия в канале телекоммуникаций

помех импульсного характера, длительность которых больше длительности одного

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

длительность которых соответствует длительности помехи.

В заключение на основании данных табл. 1.5 приведем все возможные

порождающие полиномы для кодовых комбинаций с числом символов n = 7. В

соответствии со свойством (1.17) порождающих полиномов G (X) бином X

7

+1

раскладывается на три неприводимых полинома

7 3 2 3

1 2 3 X X X X X X G X G X G X + = + + + + + = × × 1 ( 1)( 1)( 1) ( ) ( ) ( ) ,

(1.25)

каждый из которых является порождающим для следующих кодов:

G1(X) = Х + 1 – код с проверкой на четность, КПЧ (7, 6);

G2(X) = X

3

+ X

2

+ 1 – первый вариант кода Хемминга (7,4); G3(X) = X
  1   2   3   4


написать администратору сайта