Файл: Теория и техника передачи данных и телеграфия учебник..pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 09.04.2024

Просмотров: 280

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

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

ния циклических (п, к)-кодов

используют представление кодо­

вых комбинаций в виде многочленов,

степень которых не превы­

шает п—\, а коэффициентами

являются двоичные элементы «0»

и «1»

 

 

Многочлены, отображающие кодовые комбинации, можно складывать, умножать и делить по обычным правилам с приве­ дением поюбных членов по модулю 2, при этом степень много­ членов при умножении не должна превышать п— 1. Результат умножения приводят по модулю двучлена хп+\. Для того чтобы некоторое множество многочленов составило корректирующий код, необходимо разрешенным кодовым комбинациям придать определенные признаки, которыми они отличались бы от запре­ щенных комбинаций. В циклических кодах характерным призна­ ком разрешенных комбинаций является делимость соответствую­ щих им многочленов на некоторый многочлен, степень которого равна n — k. Этот многочлен называют порождающим или обра­ зующим многочленом циклического кода.

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

многочленов степени « — 1

и менее, делящихся

на некоторый

многочлен g(х)

степени

n—k,

являющийся

сомножителем

двучлена х" + \. Свое название коды, отвечающие данному определению, получили в силу присущего им свойства циклич­

ности: для любой кодовой комбинации

 

V — (vn,

v},...,

 

vn^)

циклический

сдвиг на единицу

РЛЄВО

V" =

v2,•

 

vn}

или

вправо

V"

=

(vn-\,

v0,...,

 

v„-2)

также

является

кодовой:

комбинацией.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

П р и м е р .

Изиестно разложение х7 4

1 на

неприводимые сомножители:

Xі

4-

1 =

(1 + л-) (1

+

х +х3)

(1

+ х2

+ х3).

Найти

все циклические

(п,

6)-коды-

с

п =

7,

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

 

 

 

По определению циклического кода любой делитель Xі + 1 является по­

рождающим многочленом

циклического

кода

длины 7.

Возможные

делители-

XІ

+

1 (порождающие многочлены)

и соответствующие

им

коды

сведены в-

таблицу.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Делитель

Xі

+

1 порождающий

многочлен

кода

 

 

 

Код

 

(-*")

=

14--*

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(7.6)

 

 

=

1 + X +

X3

 

 

 

 

 

 

 

 

 

 

 

 

(7.4)

gj

(х) =

1 -f X2

+

X3

 

 

 

 

 

 

 

 

 

 

 

 

(7,4)

g4 (X) =

(1

T x) (1

-f

x + x3) =

1 +

л? +

x3 + XІ

 

 

 

 

 

(7,3)

g'Ax) =

(1

+ x) (1

4-

X* + x3) =

1 +

x +

Xі

+ x*

 

 

 

 

 

(7.3)

gv,(x)

= (! + x + x3)(\ +x* + x3) = l 4- x + X і

+ x3

+ x< + x~°+x«

 

(7.1)


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

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

делится

без остатка

на

g(x).

 

 

 

 

6.6.2. Порождающая

и проверочная

матрицы

циклического

кода

Порождающая матрица циклического кода может быть по­

строена

по порождающему многочлену g(x).

Для

построения

порождающей матрицы необходимо

по g(x) сформировать k

ли­

нейно-независимых кодовых комбинаций. Так как g(x)

является

кодовой

комбинацией,

то и циклические сдвиги g(x)

также

есть

кодовые комбинации. Алгебраически сдвиг вправо соответствует

умножению

на х.

Циклическим

сдвигом g(x)

является

xg(x) —

многочлен

степени n k +

\. Подобным

образом можно

получить

кодовые комбинации x2g(x),

x3g(x),

 

rh-У

 

 

 

 

Рассмотренные кодовые комбинации

линейно-независимы

так как степени их различны

и,

следовательно,

могут

быть

использованы

в качестве строк

G(n ,

 

 

 

 

 

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

 

 

 

 

Цп,

k)

X2

g(x)

 

 

 

 

 

 

 

 

 

 

 

 

 

g(x)

 

 

 

 

 

 

С другой

стороны,

циклический

(п,

k)-код,

как

и

любой

групповой

код,

может

быть задан

через

двойственный

 

 

 

 

 

 

 

 

 

 

 

 

хп 4- Г

(л, п — Л)-код,

порождаемый

многочленом

h (х) =

—-.——.

 

h (х)

 

 

 

 

 

 

 

 

 

g

\х)

Многочлен

принято

называть

проверочным

многочленом.

-Матрица проверок циклического (п,

k)-кода

в качестве строк со­

держит проверочный

многочлен

п{х)

и n — k—l

его

сдвигов:

 

 

 

 

 

 

h(x)

 

 

 

 

 

 

 

 

 

 

 

X

 

h{x)

 

 

 

 

 

 

 

 

 

Н( Я , * )

Xі

 

h(x)

 

 

 

 

 

 

xn-k-lh(x)


g(x)

П р и м е р .

Для циклического (7,4)-кода

с

порождающим

многочленом

= 1 -f х +

Xі

построить

порождающую

матрицу. Находим:

 

 

 

 

 

 

1 x x"-i~

 

1 1 0 1 0 0 0~

 

 

 

х

g(x)

X +ХЇ

+ Xі

0

I 1

0

1

0 0

 

 

 

 

Jfig

(X)

xn- -f x*

-f X'>

0

0 1

1

0

1 0

 

 

 

 

_x3g (x)_

XiJ^Xl

-f Xs

0

0 0

1

1

0 і

 

 

При задании циклических кодов следует учитывать специ­

фику действий

над многочленами

по сравнению с векторами и,

в

частности

тот факт,

что умножение

многочленов

не совпа­

дает со скалярным произведением векторов, отображающих данные многочлены. Однако в случае приведения произведе­ ния многочленов по модулю двучлена хп + 1 между этими понятиями существует весьма тесная связь. Пусть имеется

вектор

0 ,

а , , . . . ,

а„ _ і)

и

соответствующий

ему

многочлен

а

(х)

= а0 +

ахх

+

..

. +

ап^ххп-{

 

,

 

а также

 

вектор

(b0,

 

Ь и . . . ,

bn-i)

и

соответствующий

ему

многочлен

b (х) = Ь0

+

Ьлх

+ . . .

+ bn-\xn~l.

Будем

считать

многочлены

а{х)

и b(х)

орто­

гональными, если выполняется условие а(х)Ь(х)

 

= 0.

Коэф­

фициент

при

х'

в

произведении

 

с (х)

— а (х)

b (х)

равен с} =

=

а0

bj + a ^ y - i +

. . . +

a.jb0

+

a1+xbn-X

+ . . . +an-\b}+x.

 

Слагае­

мые,содержащие

0 / + i , . . . , а„-\,

появляются

 

вследствие

сущест­

вования слагаемых в произведении, которые содержат хп+'.

Так

как

произведение

приводится

по модулю х" -+- 1, то

+

1 = 0 ,

т. е. хп

1 и xn+J

= xL

Равенство

для Cj можно

представить

в

виде

скалярного

произведения

 

Cj =

( а 0 ,

а , , . . . ,

а„_і)

 

 

 

Ь0, Ь „ _ і , . . . ,

bj+i). В

этом

произведении

первый век­

тор соответствует

а

(х),

а

второй

вектор

содержит

коэффици­

енты

b (х),

расположенные

в

обратном

порядке

и сдвинутые

циклически

на j -+-1

элемент

вправо.

 

 

 

 

 

 

 

 

 

 

Таким образом, если

произведение

а{х)Ь{х)

 

равно

нулю,

то

вектор,

соответствующий

 

многочлену

 

а(х),

ортогонален

вектору,

соответствующему многочлену

b (х),

компоненты ко­

торого расположены в обратном порядке,

и, кроме

того,

каж­

дому

циклическому

сдвигу

 

этого

вектора.

 

Верно

 

также

и обратное утверждение. Если

вектор

0 , а,,...,

 

а„_і) орто­

гонален

вектору

(bn-i, & „ _ 2 , . . . ,

Ь0) и

каждому

циклическому

сдвигу этого вектора, то а(х)Ь(х)

 

=

0.

 

Учитывая

данную

Специфику,

необходимо

при матричном описании

циклического

кода элементы матрицы проверок или порождающей

матрицы

записывать в обратном порядке. В этом случае

будет

выпол­

нено условие G ( n

> k) Н(и, k) =

0.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

П р и м е р .

Построить матрицу

проверок

для

циклического

(7,4) -кода

из предыдущего примера. Для построения

матрицы

проверок

находим про-

 

 

 

 

 

 

 

 

х7

+ 1

 

 

 

 

 

 

 

 

 

 

 

 

верочный многочлен h (х) = у——-—-г 1 + х + х* + Xі.


Отсюда

h

(х)

-

!

• х

х*

х*

1

1

1

0

1

(I

0;

х h

(х)

 

х

-~ Xі

X* х:'

— О I

I

1 0

 

1

0;

х2

(х) =

х2

-Ь л;:'

х<

f х л

= 0

0

1

1

1

0

1.

Найденные векторы записываем в качестве строк матрицы проверок

4(7,4) в

обратной последовательности:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

0

1 0

1

1

Г

 

 

 

 

 

 

 

 

Н(7,4)

0

1 0

1 1 1 0

 

 

 

 

 

 

 

 

 

1 0

1 1 1 0

 

0

 

 

 

 

В

полученной матрице проверок в качестве столбцов записаны все семь

ненулевых

последовательностей длины

3. Следовательно, данный код явля­

ется кодом Хэмминга.

 

 

 

 

 

 

 

 

 

 

 

6.6.3.

Каноническая

форма

порождающей

 

и проверочной

матриц

Условимся

в кодовой

комбинации

циклического

(/г,

k)-кода

первые n

— k

элементов,

т. е. коэффициенты

при Л"°,

х\

х 2 , . . . ,

xn-k-i

^ использоБать в качестве

проверочных

элементов, а по­

следние k

элементов, т. е. коэффициенты при

хп-

 

 

 

 

в

качестве

информационных

 

 

(рис. 6.7).

Такое

разме­

щение информационных и проверочных

элементов

обусловлено

особенностями реализации кодирующих и декодирующих уст­

ройств

циклических

кодов.

 

 

 

 

 

 

 

 

о

_/

 

 

п-к

 

 

п-г

 

 

 

X

X ' '

• X X X

• • • X X

 

 

 

избыточные

 

 

(Інірормааионньїе

 

 

 

 

м ементы

 

зле

менты

 

 

 

 

 

r*L (х)

 

 

ас

fx)

• х а ' к

 

 

 

 

 

 

 

Рис. 6.7.

 

 

 

 

 

Методика формирования кодовой комбинации, соответству­

ющей

данной

структуре,

заключается

в

следующем.

Пусть

at(x)

есть

многочлен

степени k — 1, соответствующий

комби­

нации простого ^-элементного кода,

которую

необходимо за^

кодировать

циклическим

(п,

k)-кодом.

 

В

комбинации

цикли­

ческого ( « ,

&)-кода

данную

^-элементную

комбинацию

необ­

ходимо поместить на позиции информационных разрядов. Для

этого многочлен а,(х) следует

умножить

на хп~к.

В резуль­

тате получим многочлен xn~kai (х),

степень

которого

р а в н а я — 1 .

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

ции на

g(x).

В общем случае

при

делении

хп~"аі(х)

на g

(х)

получается

частное qt

(х)

степени

k — 1 и остаток,

степень

ко­

торого

не превышает

n — k

1. Результат

деления

представим

в виде

 

 

 

 

 

 

 

. ., .

 

 

хп-*а,

(х) =

g (х) qt

{х) + г І

(х).

 

 


Рассмотрение многочлена rL (х)

4- xn~kai

 

(х)

показывает,

что

коэффициенты при х°, Xі,

 

х2,.

 

t-n-k

X являются

коэффици­

ентами остатка rt{x),

 

а

 

коэффициенты

 

при

 

степенях

хп~к,

х"~к+*,...,

 

 

хп~1 — элементами

 

первичной

кодовой

 

комбина­

ции

aL{x).

С

другой

стороны,

rt(x)

 

І - xn^kal

(х)

=

g

(х)

qt{x),

т. е. многочлен rt (х) + хп~ка1{х)

 

 

делится

на g

(х)

без

остатка.

Итак,

ri

(х)

-j- xn~kal

(х)

и

есть

искомая

кодовая

 

комбинация

циклического

(п,

 

к)-кода.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Теперь

можно

записать

порождающую

матрицу

цикличес­

кого

(п,

к)

-кода

в канонической

форме:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

G(n, k) = [ Rfcx(n-ft)lfc],

 

 

 

 

 

 

 

где

\k

— единичная

матрица

размеров

ky^k;

Rkx(n-k) — матрица

из k

строк

и п — k столбцов,

/-я строка

которой

соответствует

остатку

от

деления

х!+п~к~х

 

 

на

g

(х).

 

 

 

 

 

 

 

 

 

Матрица

проверок

в

канонической

форме

Н<п, *,

строится

на основании матрицы

G ( n , k ) ;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Н(л,fc)= [l(n-fe)R*X(n-*)]-

 

 

 

 

 

 

 

 

П р и м е р .

Построить

порождающую матрицу

и

матрицу

проверок

в канонической форме для циклического (7,4)-кода

с порождающим много­

членом

g

(х)

=

I -j- х

+

х3.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Находим остатки от деления х>

иа g (х)

и записываем

в форме равен­

ства

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

xn~kai

 

(х) =

g(x)qi(x)

 

 

 

+

П

(x).

 

 

 

 

 

 

 

 

 

 

 

 

 

=

g(x)-0

 

 

 

 

 

 

 

 

 

 

 

 

1 0

0

 

 

 

 

 

 

 

x=g(x)0

 

 

 

 

 

 

 

 

 

 

 

 

 

0

1 0

 

 

 

 

 

 

 

x*=g(x)-0

 

 

 

 

 

 

 

 

 

 

xi

 

0

0 1

 

 

 

 

 

 

 

xi

=

g(x)-l

 

 

 

 

+

1 +

x

 

 

 

1 1 0

 

 

H (7,4)

 

 

 

 

x*=g(x)-x

 

 

 

 

 

+

 

 

x- • X*

 

0

1 1

 

M X 3

 

 

 

 

X° = g (X)

(1 +

Jfl)

 

 

+

1 +x

-

x*

 

1

1 1

 

 

 

 

 

 

 

x* =

g(x)

(1 +X

+

X*)

 

1

 

+

x4-

 

1

0 1

 

 

 

 

Окончательно получаем

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

1

0

1

0

0

0"

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

O i l

 

0 1 0 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

° ( 7 , 4 )

 

-

1 1 1

 

0 0 1 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

J

0

1

о 0 0 1_

 

 

 

 

 

 

 

Из рассмотренного примера видно, что проверочная мат­

рица

Н(„, к)

циклического

 

(л,

k)-кода

 

содержит

в

качестве

столбцов остатки от деления л:0 ,

х,

 

х

2 , х п ~

х

на

порожда­

ющий

 

многочлен.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6.6.4. Корректирующие

 

свойства

циклических

 

(п,

 

к)-кодов

 

Определение корректирующих свойств циклических (п, k) -ко­

дов

сводится к нахождению

минимального

кодового

расстояния