
ТСиТ / 5_л циклические коды
.pdf
Циклические и сверточные коды
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