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

ТСиТ / 5_л циклические коды

.pdf
Скачиваний:
25
Добавлен:
21.03.2016
Размер:
469.64 Кб
Скачать

Циклические и сверточные коды

1. Принципы формирования циклических кодов.

2.

Алгоритмы

декодирования

 

циклических кодов.

 

Принципы формирования циклических кодов

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

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

единицу и не делится ни на какой другой многочлен. На такой

многочлен делится без остатка двучлен xn

1

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

V x

b

x0

b

x1

b

x2

b

 

x3

...

b

2

xn

2

b

 

xn 1

 

0

 

1

 

2

 

3

 

 

 

n

 

 

n 1

 

Циклическая перестановка результат умножения:

 

 

 

 

 

x V x

x

b

x0

b

x1

b

x2

b

x3

...

b

2

xn

2

b

xn 1

 

 

0

 

1

 

2

 

 

3

 

 

n

 

 

n 1

 

 

b x1

b

x2

b

x3

b

x4

...

 

b

2

xn 1

b

 

xn .

 

 

 

 

0

1

 

2

 

3

 

 

 

n

 

n 1

 

 

 

 

 

Полином g(x) степени r=n-k, на который делится без остатка двучлен, называют порождающим полиномом циклического кода.

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

двучлена на порождающий полином:

x

n

1

 

h x

g x

Рассмотрим как строится циклический код (7,4) взяв в качестве порождающего полинома: g x x3 x 1

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

x7 1

 

 

x3 x 1

т.к. результат деления получили

 

 

x7 x5 x4

 

 

 

x4 x2 x 1

без остатка, то g(x) действительно

 

x5 x4 1

 

 

 

 

 

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

 

 

x5 x3 x2

 

Полученный полином

 

 

 

x4 x3 x2 1

h x x

4

x

2

x 1

 

 

x4 x2 x

 

 

 

 

 

 

 

x3 x 1

 

 

является проверочным

 

 

 

 

 

 

x3 x 1

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

Комбинация исходного кода (С)

xr

Cxr

g(x)

Остаток R

Комбинация

циклического кода С=C×xr+R

Метод построения кодовых комбинаций

Впроцессе кодирования кодовая

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

Полученное произведение C xr делят на специально подобранный образующий многочлен g(x). При этом получают остаток

R.

Данный остаток R суммируют с произведением C xr. Получают кодовую комбинацию C= C xr+R, которая будет без остатка делиться на g(x).

Требуется закодировать сообщение 1001. Дано: общее число разрядов n = 7, число информационных разрядов k =4, число

избыточных разрядов r = 3, порождающий полином:

x3

 

 

g x

x 1

Комбинация

исходного кода (С)

Для кодирования сообщения 1001 определим,

 

какому многочлену оно соответствует:

 

 

 

xr

Cxr

g(x)

Остаток R

Комбинация

циклического кода С=C×xr+R

C 1 x 3

0 x 2

0 x1

1 x 0

x 3

1

Умножаем кодовую комбинацию С на хr:

 

C

x r

x 6

x 3

 

 

Разделим полином

С хr

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

полином g(x) для определения остатка R:

x6 x3 x3 x 1 x6 x4 x3 x3 x

x4

x4 x2 x

x2 x - остаток R x2 x

Суммируем С хr произведение с остатком:

C x6 x3 x2 x1

Алгоритмы декодирования циклических кодов

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

Это свойство лежит в основе обнаружения и исправления ошибок циклическими кодами.

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

x6

x3

x2

x

 

x3

x 1

 

x6

x4

x3

 

 

x3

x

 

 

x4

 

x2

x

 

 

 

 

 

x4

 

x2

x

 

 

 

 

 

 

 

 

0

 

(деление произведено без остатка)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рассмотрим пример, когда произошла ошибка во втором разряде,

т.е. принята комбинация С

 

1101_110

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x6

x5

x3

x2

x

 

x3

x 1

 

 

x6

x4

x3

 

 

 

x3

x2

x 1

 

 

 

x5

x4

x2

x

 

 

 

 

 

 

 

x5

x3

x2

 

 

 

 

 

 

 

 

 

x4

x3

x

 

 

 

 

 

 

 

 

x4

x2

x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x3

x2

 

 

x3

x

1

 

x2

x

1

остаток

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

Для обнаружения и исправления ошибочного разряда производят следующие операции:

принятую комбинацию делят на порождающий полином; подсчитывают количество единиц в остатке (вес остатка ω):

если ω≤t, принятую комбинацию складывают по модулю два с полученным остатком, сумма дает исправленную комбинацию; если ω>t, то производят циклический сдвиг принятой комбинации влево на один разряд. Комбинацию, полученную в результате циклического сдвига, делят на образующий полином. Если в результате повторного деления его вес ω>t повторяют операцию циклического сдвига до тех пор, пока не будет достигнуто ω≤t.

В этом случае комбинацию, полученную в результате последнего циклического сдвига, суммируют с остатком от деления этой комбинации на образующий многочлен; производят циклический сдвиг вправо ровно настолько разрядов,

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

Рассмотрим пример, когда произошла ошибка во втором разряде, т.е. принята комбинация С 1101_110

1101110 1011

1011

1101

1011

1101

1011

1100

1011

 

 

3

111 остаток

Складываем по модулю два остатком:

1011101 1011

 

1011

 

101 остаток

2

0111011 1011

1011

1011

1011

 

 

 

1 остаток

1

последнее делимое с последним

0111011

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

0111010 0011101 1001110

Соседние файлы в папке ТСиТ