LEKTsIYa_10
.pdfЛЕКЦИЯ № 14.
6.3. Циклические коды.
Достоинства циклических кодов: простота в реализации и при невысокой избыточности обладают хорошими свойствами обнаружения ошибок. Они получили очень широкое распространение в технике связи и в компьютерных средствах хранения информации.
Циклические коды – подкласс класса линейных кодов, которые удовлетворяют
следующему условию: |
если Ci |
сn 1 |
|
сn 2 |
|
|
|
с1 |
с0 - кодовое слово, то |
||||||||||||||||||||
Cj сn 2 |
сn 3 |
|
|
|
с0 |
сn 1 |
|
|
- |
тоже кодовое, полученное циклическим |
|||||||||||||||||||
сдвигом элементов кода С1 . С кодовым словом |
С связан полином: |
|
|||||||||||||||||||||||||||
|
|
|
|
|
C( p) c |
|
|
pn 1 c |
|
pn 2 |
|
c p c |
|
(6.10) |
|||||||||||||||
|
|
|
|
|
|
|
|
|
|
n 1 |
|
|
|
|
n 2 |
|
|
|
|
|
|
1 |
0 |
|
|
||||
Для двоичного кода ck 0;1 , k 0,1,..., n 1 . |
|
|
|
|
|
||||||||||||||||||||||||
Пусть |
pC( p) c |
|
pn c |
|
pn 1 |
|
c p2 c p |
. Этот полином |
не |
может |
|||||||||||||||||||
|
|
|
|
n 1 |
|
|
n 2 |
|
|
|
|
|
|
1 |
|
|
|
|
|
0 |
|
|
|
|
|
|
|||
представлять кодовое слово, т.к. его степень больше n 1 при cn 1 |
1. Но |
||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
pC( p) |
Q( p) |
C1 ( p) |
|
|
|
|||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
, |
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
pn 1 |
|
pn 1 |
|
|
|
|||||||||||||||
где Q( p) c |
, |
C ( p) c |
n 2 |
pn 1 |
|
c p2 c p c |
представляет |
кодовое |
|||||||||||||||||||||
|
|
n 1 |
|
|
1 |
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
0 |
|
|
n 1 |
|
|
|
|||
слово сn 2 |
сn 3 |
|
|
с0 |
|
|
сn 1 . |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
p2C( p) |
Q( p) |
C ( p) |
|
|
|
|
Q( p) cn 1 p cn 2 , |
|||||||||||||||||
Аналогично |
|
|
|
|
|
|
|
|
2 |
|
|
|
, |
|
|
где |
|||||||||||||
|
|
|
pn 1 |
pn 1 |
|
|
|||||||||||||||||||||||
C ( p) c |
pn 1 |
|
c p3 c p2 |
c |
p c |
представляет кодовое |
слово |
||||||||||||||||||||||
2 |
n 3 |
|
|
|
|
1 |
|
|
|
|
0 |
|
|
|
|
n 1 |
|
|
n 2 |
|
|
|
|
|
|
|
|||
сn 3 |
сn 4 |
|
|
с0 |
|
сn 1 cn 2 , и т.д. |
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
В общем виде |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
piC( p) |
Q( p) |
C ( p) |
|
|
|
|
|
|||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
(6.11) |
||||||
|
|
|
|
|
|
|
|
pn 1 |
pn 1 |
|
|
|
|
|
Здесь остаточный полином Ci ( p) представляет кодовое слово в циклическом коде, Q( p) - частное.
Можно сгенерировать (n, k ) код, используя порождающий полином g( p)
степени n k |
с двоичными коэффициентами, |
который является множителем |
||||||||
при факторизации полинома pn 1: |
|
|
|
|
||||||
|
g( p) pn k g |
n k |
1 |
pn k 1 |
|
g p 1 |
(6.12) |
|||
|
|
|
|
|
|
|
1 |
|
||
Определим полином информационного сообщения X ( p) : |
|
|||||||||
|
X ( p) x |
pk 1 x |
|
|
pk 2 |
|
x p x , |
(6.13) |
||
|
k 1 |
|
k 2 |
|
|
1 |
0 |
|
||
где X xk 1 |
xk 2 |
x1 x0 |
- информационное двоичное кодовое слово, |
состоящее из k бит. Тогда помехоустойчивое кодовое слово можно получить
с помощью умножения информационного полинома X ( p) |
на порождающий |
||
полином g( p) с последующим сложением по модулю 2: |
|
||
C ( p) X |
m |
( p)g( p), m 1,2,...,2k |
(6.14) |
m |
|
|
Кодовые слова (6.14) удовлетворяют циклическому сдвигу (6.11), рассмотренному выше.
В общем случае полином pn 1 можно факторизовать следующим образом:
pn 1 g( p)h( p) |
(6.15) |
|
Здесь h( p) - проверочный полином степени k : |
||
h( p) pk h |
pk 1 |
h p 1. |
k 1 |
|
1 |
Пример 1. Пусть n 7 . Надо синтезировать код (7,4).
Порождающий полином должен быть третьей степени (7-4=3). Тогда
p7 1 ( p 1)( p3 p2 1)( p3 |
p 1) . |
В качестве порождающего полинома |
|||||
можно взять g ( p) p3 p2 |
1 |
или |
g |
2 |
( p) p3 p 1. Коды, генерируемые |
||
1 |
|
|
|
|
|
|
|
полиномами g1( p), g2 ( p) эквивалентны. |
|
|
|||||
Пусть X (0101) (x3 x2 |
x1 x0 ) . |
Тогда запишем информационный полином |
|||||
степени 4-1=3: X ( p) x |
p3 x |
p2 x p x p2 1. Полином степени 7-1=6, |
|||||
3 |
|
2 |
1 |
|
|
0 |
|
соответствующий помехоустойчивому кодовому слову, имеет вид: |
|||||||
C( p) X ( p)g ( p) ( p2 1)( p3 |
p2 1) p5 p3 p4 p2 |
p2 1 |
|||||
1 |
|
|
|
|
|
|
|
p5 p4 p3 p2 (1 1) 1 0 p6 1 p5 1 p4 1 p3 0 p2 0 p 1 |
|||||||
Тогда помехоустойчивое кодовое слово C 0 1 1 1 0 |
0 1 . |
Для генерирования дуального кода используют обратный полином:
|
h ( p) pk h( p 1) pk ( p k h |
p k 1 |
h p 1 1) |
|
|
|||||||
|
обр |
|
|
|
|
|
k 1 |
|
1 |
|
|
(6.16) |
|
1 h |
p h |
|
p2 |
h pk 1 pk |
|
|
|
||||
|
2 |
|
|
|
|
|||||||
|
k 1 |
k |
|
|
1 |
|
|
|
|
|
|
|
Для |
примера |
1: |
обратный |
полином |
определяется |
как |
||||||
h ( p) p4h ( p 1) 1 p p2 |
p4 . Этот полином генерирует дуальный код |
|||||||||||
обр |
1 |
|
|
|
|
|
|
|
|
|
|
|
(7,3). |
Пусть |
X (011) (x |
x |
x ) . |
Тогда |
X ( p) 0 p2 |
1 p 1 p 1. |
|||||
|
|
|
|
|
2 |
1 |
0 |
|
|
|
|
|
Дуальный |
код |
|
|
определяется |
следующим |
образом: |
||||||
D( p) X ( p)h |
( p) ( p 1)(1 p p2 p4 ) p p2 p3 |
p5 1 p p2 p4 |
||||||||||
|
обр |
|
|
|
|
|
|
|
|
|
|
|
p5 p4 p3 p2 (1 1) p(1 1) 1 p5 p4 p3 1 |
|
|
|
|||||||||
0 p6 1 p5 1 p4 1 p3 0 p2 0 p 1 |
|
|
|
|
||||||||
Значит кодовое слово дуального кода имеет вид: D |
0 1 |
1 1 0 |
0 1 . |
Кодовые слова дуального кода (7,3) ортогональны кодовым словам кода (7.4) из примера 1.
Циклический код можно задать порождающей матрицей G . Вернемся к примеру 1: g1( p) p3 p2 1. Четыре строки порождающей матрицы кода (7,4) можно получить из полиномов:
|
|
1 |
|
|
0 |
Тогда G1 |
|
|
|
|
0 |
|
|
|
|
|
0 |
pi g1 ( p) p3 i p2 i pi , i 3,2,1,0 .
1 |
0 |
1 |
0 |
0 |
0 |
|
|
|
1 |
1 |
0 |
1 |
0 |
0 |
|
|
|
|
. |
|||||||
0 |
1 |
1 |
0 |
1 |
0 |
|
||
|
||||||||
|
|
|||||||
0 |
0 |
1 |
1 |
0 |
1 |
|
|
Например, |
как |
формировалась |
первая строка порождающей матрицы: |
|||||||
i 3 p3 g ( p) p6 |
p5 |
p3 . Т.е. на 6-ой, 5-ой и 3-ей позиции 1, на остальных |
||||||||
|
|
1 |
|
|
|
|
|
|
|
|
(4-ой, 2-ой, 1-ой и 0-ой) -0. |
|
|
|
|
||||||
Аналогично можно создать проверочную матрицу H из обратного полинома: |
||||||||||
pl h ( p) pl |
p4h( p 1) pl (1 p p2 p4 ) p4 l p2 l p1 l pl , l 2,1,0. |
|||||||||
обр |
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
0 |
1 |
1 |
1 |
0 |
0 |
|
Тогда |
H |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
|
|
1 |
|
|
|
|
|
|
|
|
. |
|
|
|
|
0 |
0 |
1 |
0 |
1 |
1 |
1 |
|
|
|
|
|
В общем виде:
|
|
pk 1g( p) |
|
1 gn k 1 gn k 2 |
g1 1 0 |
0 |
||||
|
|
|
|
|
|
0 1 gn k 1 gn k 2 |
g1 1 0 ...0 |
|
||
G |
pk 2 g( p) |
|
|
|
||||||
|
|
|
|
|
|
|
|
, |
||
|
|
|
|
|
|
|
||||
|
|
g( p) |
|
|
|
0 |
0 1 gn k 1 |
gn k 2 |
g1 1 |
|
|
|
|
|
|
|
|
|
pn k 1hобр |
( p) |
|
|
1 h1 |
h2 |
hk 1 1 0 |
0 |
|
|||
|
|
|
n k 2 |
hобр |
|
|
|
|
0 1 h1 h2 |
hk 1 1 0 ...0 |
|
||
H |
p |
|
( p) |
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
. |
||
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
hобр ( p) |
|
|
0 |
0 1 h1 h2 |
hk 1 1 |
|
||||
|
|
|
|
|
Так же можно сконструировать порождающую матрицу G в систематической
форме. Для этого разделим |
pn l на g( p) : |
||||
|
pn l |
Ql ( p) |
R ( p) |
, l 1,2,..., k . |
|
|
|
|
l |
||
|
g( p) |
g( p) |
|||
|
|
|
Или pn l Q ( p)g( p) R ( p), Q ( p) |
- частное, тогда |
Q ( p)g( p) pn l R ( p) |
||||||||
l |
l |
|
|
l |
|
|
l |
|
l |
|
- кодовое слово. В этом случае желательный полином, |
соответствующий l - |
|||||||||
ой строке матрицы G равен |
pn l R ( p) . |
|
|
|
||||||
|
|
|
|
|
|
l |
|
|
|
|
Рассмотрим пример 1 с |
|
g |
2 |
( p) p3 |
p 1 |
, n 7, k 4 . Тогда |
|
|||
|
|
|
|
|
|
|
|
|
|
|
l 1 p6 ( p3 p 1)g |
2 |
( p) p2 1, |
p6 p2 |
1 |
- |
полином, |
||||
|
|
|
|
|
|
|
|
|
|
соответствующий первой строке: 1 на 6-ой, 2-ой и 0- ой позиции, 0 – на остальных.
l 2 p5 |
( p2 1)g |
2 |
( p) p2 p 1, |
p5 p2 p 1- |
полином, |
|||||
|
|
|
|
|
|
|
|
|
|
|
соответствующий второй строке: 1 на 5-ой, 2-ой, 1-ой, 0-ой позициях. |
||||||||||
l 3 p4 |
pg |
2 |
( p) p2 p , |
p4 p2 |
p - полином, соответствующий |
|||||
|
|
|
|
|
|
|
|
|
|
|
третьей строке: 1 на 4-ой, 2-ой и 1-ой позициях. |
|
|||||||||
l 4 p3 |
g |
2 |
( p) p 1 p3 |
p 1 - полином, соответствующий четвертой |
||||||
|
|
|
|
|
|
|
|
|
|
|
строке: 1 на 3 –ей, 1-ой и 0-ой позициях. |
|
|
|
1 |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
||||
|
|
0 |
1 |
0 |
0 |
1 |
1 |
1 |
|
|
1 |
1 |
1 |
|
G |
|
, P |
. |
|||||||||||
2 |
|
0 |
0 |
1 |
0 |
1 |
1 |
0 |
|
|
1 |
1 |
0 |
|
|
|
|
|
|||||||||||
|
|
|
|
|
||||||||||
|
|
0 |
0 |
0 |
1 |
0 |
1 |
1 |
|
|
0 |
1 |
1 |
|
|
|
1 |
1 |
1 |
0 |
1 |
0 |
0 |
|
H2 |
|
|
|
|
|
|
|
|
|
|
0 |
1 |
1 |
1 |
0 |
1 |
0 |
. |
|
|
|
1 |
1 |
0 |
1 |
0 |
0 |
1 |
|
|
|
|
Для формирования помехоустойчивого слова в систематической форме можно воспользоваться следующим алгоритмом:
1)умножим полином сообщения на pn k : X ( p) pn k ,
2)делим X ( p) pn k на g( p) , чтобы получить остаток r( p) ,
3)добавим r( p) к X ( p) pn k , т.е. r( p)+X ( p) pn k - систематический код
(«+» - по модулю 2).
Некоторый циклические коды.
1)Циклические коды Хемминга. Они эквиваленты кодам Хемминга, рассмотренным ранее.
2)Циклический код Голея: линейный (23,12) –код с порождающим
полиномом g( p) p11 p9 p7 p6 p5 p 1 и минимальным кодовым
расстоянием dmin 7 .
3) Коды Боуза – Чоудхури - Хоквингема (БЧХ коды) - это двоичные и недвоичные коды. Двоичные БЧХ коды можно построить с параметрами
n 2m 1, n k mt,
dmin 2t 1,
где m (m 3) и t - произвольные положительные целые числа. Порождающие полиномы для БЧХ кодов можно получить из множитьелей полинома pn 1 p2m 1 1. Существуют таблицы, где приведены коэффициенты порождающих полиномов для БЧХ кодов. Коэффициенты даны в восьмеричной форме, причем, самая левая цифра соответствует слагаемому полинома с наивысшей степенью. Например, для (15,5) кода коэффициентами полинома являются 2 4 6 7. Тогда в двоичной форме:
10 100 110 111. Значит порождающий полином имеет вид g( p) p10 p8 p5 p4 p2 p 1.
Синдромное декодирование циклических кодов.
Для циклического кода синдром можно вычислить с помощью регистра сдвига. Рассмотрим систематический циклический код. Пусть Y принимаемое помехоустойчивое кодовое слово. Его можно представить полиномом Y ( p) . Так как Y C e , где C - переданное кодовое слово, e - вектор ошибки в канала, то
|
|
|
|
Y ( p) C( p) e( p) X ( p)g( p) e( p) . |
(*) |
||
Тогда |
|
Y ( p) |
Q( p) |
R( p) |
или |
|
|
|
|
|
|
||||
|
|
g( p) |
|
g( p) |
|
||
|
|
|
|
Y ( p) Q( p)g( p) R( p) . |
(**) |
||
Объединяя (*) с (**), получим |
|
||||||
|
|
|
|
e( p) X ( p) Q( p) g( p) R( p) . |
|
||
Остаток R( p) |
- полином степени n k 1 и зависит от полинома ошибки. |
||||||
Т.е. |
R( p) S ( p) - полином, соответствующий синдрому S |
. Тогда можно |
|||||
записать: |
|
|
|
|
|||
|
|
|
|
|
Y ( p) Q( p)g( p) S ( p) |
(6.17) |
Если Y ( p) делится на g( p) без остатка, то S ( p) 0 и C Y .
+
Рисунок 6.1. Структурная схема формирования синдрома.
Пример. Задан циклический код Хемминга (7,4) с порождающим полиномом g( p) p3 p 1 . Пусть принято помехоустойчивое кодовое слово
Y 1 0 0 1 1 0 1 .
Порождающий полином можно записать в виде: g( p) p3 0 p2 1 p 1, т.е. g1 1, g2 0 .
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Сдвиг |
Содержимое регистра |
Сдвиг |
|
Содержимое регистра |
|||||||||||||||||||||||||||||||
0 |
|
|
|
|
|
|
|
|
000 |
|
|
5 |
|
101 |
|||||||||||||||||||||
1 |
|
|
|
|
|
|
|
|
100 |
|
|
6 |
|
100 |
|||||||||||||||||||||
2 |
|
|
|
|
|
|
|
|
010 |
|
|
7 |
|
110 |
|||||||||||||||||||||
3 |
|
|
|
|
|
|
|
|
001 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
4 |
|
|
|
|
|
|
|
|
010 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Сначала регистры обнулены (ключ в верхнем положении). После того, как n - ый бит вошел в регистр, содержимое n k ячеек образует синдром.
Метод справочной таблицы можно использовать, если n k мало, например, n k 10 . Если n k 20 , то таблица имеет 220 записей. Такой метод декодирования непрактичен для длинных кодов, т.к. требует огромного объема памяти и времени.