Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

pds

.pdf
Скачиваний:
8
Добавлен:
15.03.2015
Размер:
457.45 Кб
Скачать

 

 

é

g(x)

ù

 

 

ê

xg(x)

ú

 

 

ê

 

 

 

 

ú

G

=

ê

x2g(x)

ú

(n,k)

 

ê

.....

 

 

ú

 

 

ê

 

 

ú

 

 

ê

x

k

1

 

ú

 

 

ë

 

 

g(x)û

Пример1: по второму определению циклического кода n=7 x7 +1=(x+1)(x3 +x+1)(x3 +x2 +1)

В качестве g(x) можно взять: g1(x)=x+1

g2(x)=x3 +x+1 g3(x)=x3 +x2 +1 g4(x)=(x+1)(x3 +x+1) g5(x)=(x+1)(x3 +x2 +1)

g6(x)=(x3 +x+1)(x3 +x2 +1)

Это будут следующие коды: (7,6)

d=2

(7,4)

d=3

(7,4)

d=3

(7,3)

d=4

(7,3)

d=4

(7,1)

d=7

 

é

1+

x+

 

x

3

ù

é

1101000ù

 

ê

 

 

ú

ê

ú

Для кода Хемминга: G(7,4)=

ê

x+

 

x2 +

x4

ú

= ê

0110100ú приведём к канонической

 

ê

x2

+

x3

+

x5

ú

ê

0011010ú

 

ê

ú

 

ê

x

3

+

x

4

+

6

ú

ê

ú

 

ë

 

 

x

û

ë

0001101û

é1101000ù

форме и получим: G(7,4)=êê0110100úú

ê1110010ú êë1010001úû

é1001011ù

Проверочная матрица: H=[I3 RT] =êê0101110úú ,где I3 –единичная матрица 3 ×3

êë0010111úû

Последовательности (α0, α1, ... ,α n-1)соответствует многочлен α0x0 + … +α0x n-1

Как можно построить проверочную матрицу?

xn +1=g(x) h(x)=0

Для g(x) есть ортогональный многочлен, следовательно можно строить проверочную матрицу на основе g(x).

g(x)- порождающий многочлен

h(x)- проверочный многочлен степени k

Надо найти h(x). Способ 1 (см. пример1):

(x7+1) / (x3+x+1) = (x4+x2+x+1) = h(x)

(деление столбиком)

Способ 2:

h(x)=(x+1)(x 3+x 2+1)=x4+x3+x+x3+x2+1=x4+x2+x+1

 

é

h(x)

ù

 

ê

xh(x)

ú

 

ê

 

 

 

ú

Строим H(n,r) =

ê

x2h(x)

ú

 

ê

 

 

 

ú

 

ê

 

 

 

ú

 

ê

x

nk

 

ú

 

ë

 

h(x)û

éx4 +

Для нашего примера H(7,4)=êêx5 +

êëx6 +

x2

+

x+ 1

ù

é

0010111ù

 

x

3

+

x

2

+

 

ú

ê

 

ú

 

 

 

 

xú

= ê

0101110ú

приведём к канонической

x

4

+

3

+

x

2

ú

ê

1011100

ú

 

 

 

 

û

ë

û

 

é1001011ù

форме и получим H(7,4)=êê0101110úú

êë0010111úû

Пример2: надо умножить (a0+a1x+a2x2)(b0+b1x+b2x2 ) по mod x3.

a0b0 + a0b1x + a0b2x2 +

+a1b0x + a1b1x2 + a1b2x3 +

+a2b0x2 + a2b1x3 + a2b2x4

Приведём по mod x3:

a0b0 + a0b1x + a0b2x2 +

a1b2 + a1b0x + a1b1x2 + a2b1 + a2b2x + a2b0x2

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

é

h(x)

 

ù

 

ê

 

ú

 

H = ê

xh(x)

ú

g(x)h(x)=0 mod(x n+1)

ê

x

nk

1

ú

 

ë

 

h(x)û

 

x7+1=(x+1)(x 3+x+1)(x 3+x2+1)

С помощью неприводимого многочлена П(α)=α3+α+1 можно построить

поле GF(23):

 

 

 

α0 =

1

=

100

α1 =

α

=

010

α2 =

α2

=

001

α3

= 1+α

=

110

α4

=

α+α2

=

011

α5

= 1+α+α2 =

111

α6

=

1+α2

=

101

Построили элементы поля GF(23 ) по модулю неприводимого многочлена.

В теории Галуа доказано, что имеется однозначная связь между корнями двучлена (xn+1) и ненулевыми элементами поля GF(qn), а именно: корни двучлена (xn+1) являются ненулевыми элементами поля GF(qn).

Возьмём двоичное поле GF(2m). Установим связь между:

 

2m-1

 

 

X

+ 1

и GF(2m),

где (2m-1) – всего ненулевых элементов поля

GF(2m),

 

 

α0= … = 100

 

:

 

:

 

α6= … = 100 Распределим все элементы поля по многочлену:

x7+1=(x+1)(x 3+x+1)(x 3+x2+1)

α0 α1 α2 α4 α3 α6 α5 (т.к. α12 = α75 = 1+α5 = α5)

Корректирующие свойства циклических кодов.

Корректирующие свойства циклических кодов задаются следующими двумя теоремами, авторами которых являются Боуз и Чоудхури. Впоследствии оказалось, что аналогичные результаты получил француз Хоквинчел. Поэтому коды, удовлетворяющие теоремам называются кодами ВЧХ.

Теорема1. Для любых чисел l и t можно построить циклический код с длиной кодовой комбинации n=2l-1. Число избыточных элементов n-k = l*t. Минимальное кодовое расстояние d ³ 2t +1.

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

Теорема2 (эта теорема говорит как реализовать теорему1). Если среди корней порождающего многочлена есть числа вида

αm0 , αm0 +1 , αm0 +2 , … , αm0 +d-2 , то минимальное кодовое расстояние циклического кода с данным g(x) :

dmin ³ d , где d -конструктивное расстояние.

Пример1: пусть l =3, t =1. при l =3 : n =7

при t =1: n-k =3. Следовательно получили код (7,4)

g1(x) = x 3+x+1 , корни многочлена: α1, α2, α4 (два подряд идущих корня α1 и α2 )

m0 =1 m0+d-2=2; d =3

g2(x) = x 3+x 2+1 , корни многочлена: : α3, α5, α6 (два подряд идущих корня α5 и α6 )

m0 =5 m0+d-2=6; d =3

Для кода (7,6): g(x) =1+x (один корень), dmin =2;

Для кода (7,3): g(x) = (1+x) (1+x+x3) , корни: α0, α1, α2, α4 (три подряд идущих корня α0, α1, α2), dmin =4;

Укорочение кодов.

Из любого группового (n,k)-кода можно получить (n-i,k-i)-код. Для этого необходимо в порождающей матрице (n,k)-кода, записанной в

канонической форме G(n,k) =[Rk , (n-k) Ik] ,вычеркнуть i крайних справа столбцов и i нижних строк. Оставшаяся часть порождающей матрицы даст порождающую матрицу кода (n-i,k-i) в канонической форме.

Рассмотрим код (5,3):

G(5,3)=

é10100ù êê11010úú , êë01001úû

é1010ù

следовательно G(4,2)=ê ú

ë1101û

Укорочение проверочной матрицы происходит по следующему правилу: необходимо в проверочной матрице (n,k)-кода, H(n,k) =[ In-k RT ], вычеркнуть i крайних справа столбцов (проверочные элементы не вычёркиваются, только информационные). Оставшаяся часть проверочной матрицы даст проверочную матрицу кода (n-i,k-i).

é10110ù

H(5,3) = ê ú ,

ë01011û

é1011ù

следовательно H(4,2)=ê ú

ë0101û

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

Процедуры кодирования и декодирования для циклических кодов.

1) Процедуры на основе g(x).

Кодовая комбинация циклического кода f(x):

 

x 0

xn-k-1

 

xn-k

xn-1

 

 

 

 

 

избыточные элементы (n-k)

 

информационные элементы (k)

 

 

 

 

 

 

 

 

а) Процедура кодирования.

Есть комбинация k(x), а хотим сделать f(x). Для этого размещаем комбинацию k(x) на месте информационных элементов, а потом находим избыточные элементы. Таким образом получаем f(x).

k(x)= x0 … x k-1

, а нам надо

k(x)= x n – k … x n -1

 

Для этого k(x)*x n - k

-первый шаг кодирования.

Таким образом, разместили k(x). Теперь находим избыточные элементы. Любая кодовая комбинация циклического кода должна делиться на порождающий многочлен:

(k(x) * x n - k ) / g(x)= q(x) (частное от деления) + r (x) / g(x) (остаток от деления) -второй шаг кодирования.

k(x) * x n - k = q(x) r (x) + k(x) * x n - k

* g(x) + r (x)

 

= q(x) * g(x)

-третий шаг кодирования.

Вкачестве избыточных элементов берётся остаток от деления r (x).

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

f (x) =k(x) / g(x) по mod (x n +1)

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

Воснове процедуры декодирования лежит вычисление синдрома S(x). Есть 3 способа вычисления синдрома:

1.S (x) = f (x) * HT

2.S (x) = остаток от деления f (x) на g(x)

3. S (x) = f (x= a i), где a i -корни g(x)

Если код используется в режиме обнаружения ошибок, то синдром даёт основание решать: есть ошибки в принятой комбинации или нет.

Если S(x) = 0, то ошибок нет или они не обнаруживаются кодом Если S(x) ¹ 0, то в принятой комбинации есть ошибки.

При исправлении ошибок поступают также как и в групповых кодах. По S(x) находят e(x) и тогда:

f '(x)+e(x) = f(x), где f '(x) -принятая комбинация.

х°

хn-k-1

х n-k

х n-1

Избыток

Информация

 

 

 

 

 

n-k

k

 

 

1.Кодирование

g(х)

2.Декодирование. Вычисление синдрома.

1.

S (x) = f (x) H T

f (x)

 

2.

S(x) = 2(x) =остаток от деления

g(x)

 

 

3.

αi * S(x) = f (x −αi ) для всех корней g(x)

Пример Рассмотреть процедуру кодирования и декодирования для кода БЧХ (7,4) с g(x)=1+х+х³

Числа, соответствующие кодовой комбинации:

Элемент

Частное от

 

 

 

кодовой

деления

r(x)

 

Двоичная

комбина

 

 

 

посл-ть

ции

 

 

 

остатка

хº

q(x)g(x)=0*g(x

xº=1

 

100

 

)

 

 

 

х¹

0*g(x)

x

α¹

010

х²

0*g(x)

α²

001

х³

1*g(x)

1+x

 

110

х4

x*g(x)

x+x² α4

011

х5

(x²+1)g(x)

1+x+x²

111

х6

(x³+x+1)g(x)

1+x²

 

101

случайно

 

элементы поля GF(2³)

каноническая форма порождающей матрицы G(7,4)

Декодирование:

1.Сумма строк HT соответствующих f(x) 2.Сумма строк HT соответствующих f(x) 3. Сумма строк HT соответствующих f(x)

é1000ù

êê0100úú

ê0010ú

êë0001úû

Теорема:

Справедливо рав-во (a+b)p=a p+b p,если GF(p m ) (a+b+c)p=a p+b p +c p Т.е.все 3 способа вычисления синдрома -одно и тоже

f '(x)=f(x)+e(x)

S(x)= f '(x) HT=(f(x)+e(x))HT=e(x) HT,т.е.синдром полностью определяется многочленом ошибок

Если е(х)=1, то инвертирование принятой комбинации

ПРОЦЕДУРА КОДИРОВАНИЯ И ДЕКОДИРОВАНИЯ НА ОСНОВЕ h(x)

Только для кодов n=2l−1(коды естественной длины) Если f(x)=q(x)*g(x)

f(x)h(x)=0(=C(x)−пусть)

Ci = fi h0 + fi −1+... + fi k hk = 0

Процедура кодирования: известны все информационные элементы К(х), по ним найти n-k

fi k = fi h0 + fi −1h1 +... + fi k +1hk −1

Пусть i=n-1

fn k −1 = fn −1h0 + fn − 2h1 +... + fn khk −1

Дальше: i=n−2 и тд

В общем виде:

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]