Помехоустойчивое кодирование. Реализация кодирования

advertisement
Помехоустойчивое
кодирование
Реализация кодирования
Реализация кодирования
циклических кодов
Кодирование циклического кода сводится к умножению
информационного многочлена a(x) на порождающий
многочлен g (x ) :
g ( x)  a( x) 
( g 0  g1 x  ...  g n k 1 x
 (a0  a1 x  ...  ak 1 x
n  k 1
k 1
)
)
Реализация кодирования
циклических кодов
Кодирование циклического кода сводится к умножению
информационного многочлена a(x) на порождающий
многочлен g (x ) :
 g 0  a0  (a0 g1  g 0  a1 ) x  ...
 (a0 g k 1  ...  g 0  ak 1 ) x
k 1

 (a0 g k  ...  g1  ak 1 ) x  ...
k
 g n  k  ak 1 x
n 1
Реализация кодирования
циклических кодов(1)
g 0  a0  (a0 g1  g 0  a1 ) x  ...
 (a0 g k 1  ...  g 0  ak 1 ) x
k 1

 (a0 g k  ...  g1  ak 1 ) x  ...
k
 g r  ak 1 x n 1
r  nk
gr
вход
+
+
+
+
gr-1
gr-2
g1
g0
выход
Реализация кодирования
циклических кодов(2)
g 0  a0  (a0 g1  g 0  a1 ) x  ...
 (a0 g k 1  ...  g 0  ak 1 ) x k 1 
 (a0 g k  ...  g1  ak 1 ) x  ...
k
 g r  ak 1 x n 1
r  nk
g0
вход
+
+
+
+
g1
g2
gr-1
gr
выход
Пример : циклический (7,4)-код Хэмминга
• Порождающий многочлен
• информационный многочлен
g ( x)  1  x 2  x 3
а ( x)  x 2  x 3
• тогда кодовый многочлен
с( x)  а ( x)  g ( x)  x 2  x 3  x 4  x 6
Пример : циклический (7,4)-код
Хэмминга
0011101
•
0011
вход
состояние
регистра
выход
1
000
1
1
100
0
0
110
1
0
011
1
0
001
1
0
000
0
0
000
0
Реализация этапа декодирования:
деление на порождающий многочлен
При декодировании циклического кода сначала
вычисляется синдром. Эта операция сводится к
делению полученного из канала ошибочного
многочлена с(x ) на порождающий многочлен g (x )
g0
g1
g2
gr-1
+
+
+
+
...сn 3 , сn 2 , сn 1
gr
Пример : циклический (7,4)-код
Хэмминга
Пусть полученное слово 1110101
Регистр реализует процесс деления
1110101
1011
1011000 1100  частное
____________________
101101
101100
____________________
1  остаток
Пример : циклический (7,4)-код
Хэмминга
•
1010111
вход
выход
Нулевое
начальное
состояние
состояние
регистра
1
100
0
•
На выходе – частное
1
110
0
•
Конечное состояние –
остаток
1
111
0
0
101
1
1
000
1
0
000
0
1
100
0
•
Алгоритм Меггитта
•
Получаем остаток от деления е(х), соответствующего ошибке в
старшем разряде [1000000000], на порождающий полином g(x):
r0 ( x)  e( x)  q( x)  g ( x)
•
Делим полученный полином c(х) на g(x) и получаем текущий
остаток r(x).
Сравниваем r0 ( x) c r ( x)
•
–
–
•
Если они равны, то ошибка произошла в старшем разряде.
Если нет, то увеличиваем степень принятого полинома на x и снова
проводим деления: x·c(x) на g(x), остаток опять обозначим r(x)
Опять сравниваем полученный остаток с r0 ( x)
–
–
Если они равны, то ошибки во втором по старшинству разряде.
Если нет, то берем х · х ·c(х) · и повторяем эти операции до тех пор,
пока r(x) не будет равен r ( x)
0
Download