Помехоустойчивое кодирование. Реализация кодирования
Download
Report
Transcript Помехоустойчивое кодирование. Реализация кодирования
Помехоустойчивое
кодирование
Реализация кодирования
Реализация кодирования
циклических кодов
Кодирование циклического кода сводится к умножению
информационного многочлена a ( x ) на порождающий
многочлен g ( x ) :
g ( x) a( x)
( g 0 g 1 x ... g n k 1 x
( a 0 a1 x ... a k 1 x
n k 1
k 1
)
)
Реализация кодирования
циклических кодов
Кодирование циклического кода сводится к умножению
информационного многочлена a ( x ) на порождающий
многочлен g ( x ) :
g 0 a 0 ( a 0 g 1 g 0 a 1 ) x ...
( a 0 g k 1 ... g 0 a k 1 ) x
k 1
( a 0 g k ... g 1 a k 1 ) x ...
k
g n k a k 1 x
n 1
Реализация кодирования
циклических кодов(1)
g 0 a 0 ( a 0 g 1 g 0 a 1 ) x ...
( a 0 g k 1 ... g 0 a k 1 ) x
k 1
( a 0 g k ... g 1 a k 1 ) x ...
k
g r a k 1 x
n 1
r nk
gr
вход
+
+
+
+
gr-1
gr-2
g1
g0
выход
Реализация кодирования
циклических кодов(2)
g 0 a 0 ( a 0 g 1 g 0 a 1 ) x ...
( a 0 g k 1 ... g 0 a k 1 ) x
k 1
( a 0 g k ... g 1 a k 1 ) x ...
k
g r a k 1 x
n 1
r nk
g0
вход
+
+
+
+
g1
g2
gr-1
gr
выход
Пример : циклический (7,4)-код Хэмминга
• Порождающий многочлен
g ( x) 1 x x
2
а( x) x x
• информационный многочлен
2
• тогда кодовый многочлен
с( x) а( x) g ( x) x x x x
2
3
4
6
3
3
Пример : циклический (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