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

1.2.1 Выбор образующего многочлена

В теории кодирования показано, что степень многочлена Pr(x) следует выбирать равной

r = mtи.ош,

где m определяется условием

2m=n+1,

а tи.ош — число ошибок, исправляемых циклическим кодом (7.12).

Пример 3.9. Определить r для кода с k=20, tи.ош=2.

Примем m=3. Тогда 2m=23=8, n=7, что меньше k=20. Возьмем m=5. Тогда n=31; r=mtи.ош=52=10. Получается код с k=21, r=10. Этот код обеспечивает кодовое расстояние d02tи.ош+1=5.

В табл. 3.3 приведены образующие (примитивные) полиномы до 10-й степени.

1.2.2 Базис циклического кода, формирование кодовых комбинаций

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

Таблица 3.3 Образующие полиномы

r

Pr(x)

Двоичная запись Pr(x)

2

x2+x+1

111

3

x3+x+1

x3+x2+1

1011

1101

4

x4+x2+1

x4+x2+1

10011

100101

5

x5+x4+x3+x2+1

x5+x4+x2+x+1

111101

110111

6

x6+x+1

x6+x5+x2+x+1

1000011

1100111

7

x7+x3+1

х732+x+1

х7432+1

10001001

10001111

10011101

8

х87652+x+1

x8+x4+x3+x1+1

х8+x6+x5+х+1

111100111

100011101

101100011

9

x9532+1

х987653+1

1000101101

1111101001

10

х1043+х+1

х10+x965+x42+х+1

10000011011

11001110111

комбинации есть разрешенная комбинация того же кода. Рассмотрим циклический сдвиг кодовой комбинации:

. (3.13)

Такая циклическая перестановка при представлении комбинаций в виде полиномов соответствует умножению данного полинома A(x) на x, т.е. . Чтобы степень полученного полинома A1(x) не превышала n-1, член an-1xn заменяется единицей. Поэтому .

Например, имеем кодовую комбинацию:

1011101 A(x)=х6+x4+x3+x2+l.

Образуем циклический сдвиг на один разряд:

A(x)x=х7543+х 10111010.

Заменив х7 на единицу, имеем

x5+x4+x3+x+l 0111011,

т. е. сдвинутую на один разряд исходную кодовую комбинацию.

Базис циклического кода можно построить на основе циклических сдвигов кодовой комбинации, соответствующей образующему многочлену.

Пример 3.10. Сформировать базис циклического кода (7,4) с P3(x)=x3+x+1, r=3, k=4, d0=3. Для формирования первой разрешенной комбинации базиса следует взять кодовую комбинацию с r=3, соответствующую образующему полиному x3+x+1 (см. таблицу 3.3).

Ясно, что она будет делиться без остатка па образующий полином.

Итак, первая разрешенная комбинация имеет вид

.

(к образующему полиному x3+x+11011 слева добавляются три нуля)

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

Тогда производящая матрица циклического кода (7, 4) имеет вид:

Все остальные кодовые комбинации можно определить линейной композицией комбинаций базиса (ср. с производящей матрицей (7,3)).

*

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

.

В качестве оператора  используется вычисление вычета произведения Ak-1(x)xr по модулю Pr(x), где Ak-1(x) — многочлен, представляющий информационную часть кодовой комбинации, а Pr(x) — образующий многочлен степени r. Ранее было определено, что среди 2n кодовых комбинаций An-1(x) длиной n элементов имеется подмножество из 2k комбинаций, которые характеризуются отсутствием вычета по образующему многочлену степени r, где r=n-k.

Это создает возможность дополнить каждую кодовую комбинацию Ak-1(x) k-элементного первичного кода группой из r проверочных элементов, которая определяется в виде остатка R(x) от деления произведения Ak-1(x)  xr на образующий многочлен Pr(x). При этом образуется многочлен An-1(х), соответствующий n-элементному коду, у которого отсутствует вычет по Pr(x).

Действительно, умножение Ak-1(x) на xr приводит к многочлену, соответствующему n-элементной кодовой комбинации, у которой r младших разрядов нулевые. Определив R(x) как вычет Ak-1(x)xr по Pr(x), получаем всю проверочную группу из r элементов, которую и приписываем вместо r нулей.

Пример 3.11. Задана кодовая комбинация простого семиэлементного кода A6(0,1)=1001011, т. е. A6(x)=x6+x3+x+1. Надо образовать циклический код (9,7). Это код, у которого r — степень образующего многочлена (число проверочных элементов) равна 2.

Из табл. 3.3

P2 (x)=x2 + x + 1.

Повысим степень полинома на два:

A6(x) х2=x8532.

Определим группу проверочных разрядов в виде остатка от деления A6(x)x2 на P2(x). Значение остатка будет R(x)=x, т. е. R(0,1)=10. Найдем полином разрешенной кодовой комбинации:

A8(x)=A6(x)x2+R(x)=х8+x5+x3+x2+x.

Кодовая комбинация имеет вид 100101110.

Наряду с определением кодовой комбинации в виде многочлена все операции можно проделать и в записи двоичными элементами. В этом случае Ak-1(x)xr соответствует добавлению к Ak-1(0,1) r нулей, т. е. 100101100. Определение вычета произведем на основе деления в двоичной записи:

Отсюда R (0,1)=10.

Тогда A(0,1)=100101.10.

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

При другом способе построения это свойство нарушается и код становится неразделимым.

Способ основан на простом перемножении кодовых комбинаций информационной группы и образующего полинома. Действительно, поскольку произведение Ak-1(x) Pr(x)=An-1(x) делится без остатка на Pr(x), то An-1(х) является разрешенной комбинацией циклического кода. Однако в этой комбинации нельзя выделить информационные и проверочные разряды. Из примера 3.11 имеем произведение

что соответствует кодовой комбинации 111110001. Выделить позиции информационных элементов здесь нельзя. Поэтому на практике используется первый способ построения циклического кода.

*