Загрузил Костя Новожилов

Циклические коды

реклама
Циклические коды
практика
Представление кодовой комбинации в
виде многочлена
(a1, a2, …, an) → (an, a1, a2, …, an−1)
An−1(x) = an−1 xn−1 + an−2 xn−2 + … + a1 x + a0
1101 ⇔ A1(x) = x3 + x2 + 1
1010 ⇔ A2(x) = x3 + x
G1(x) = x5 + x3 + x
G2(x) = x4 + x3 + 1
G3(x) = G1(x) ⊕ G2(x) = x5 + x4 + x + 1
Циклический сдвиг кодовой
комбинации
а(x) = an xn−1 + an−1 xn−2 + … + a2 x + a1
a(x)*x = an xn + an−1 xn−1 + … + a2 x2 + a1x
an(xn − 1)
a(x) · xi − an(xn − 1)
Порождающий полином
p(x)
p(x) · x − C2 (xn − 1)
V=
p(x) · x2 − C3 (xn − 1)
…
p(x) · xm−1 − Cm (xn − 1)
,
•p(x) должен быть ненулевым;
•вес
p(x)
не
должен
расстояния: v(p(x)) ≥ dmin;
быть
меньше
минимального
кодового
•p(x) должен иметь максимальную степень k (k — число избыточных элементов в
коде);
•p(x) должен быть делителем полинома (xn − 1).
Примеры порождающих полиномов
r, степень полинома
P(x), порождающий полином
2
111
3
1011
4
10011
5
100101, 111101, 110111
6
1000011, 1100111
7
10001001, 10001111, 10011101
8
111100111, 100011101, 101100011
P(x) = ar−1 xr + ar−2 xr−1 + … + 1 - полином
Ak−1(x) – исходный код
1. Умножаем многочлен на xr:
Ak−1(x) · xr
2. Определяем проверочные разряды:
Ak−1(x) · xr ⁄ Pr(x) ⇒ R(x)
3. Получаем:
An−1(x) = Ak−1(x) · xr + R(x)
Пример
A(х) = х3 + х2 + 1 или 1101
r=3
P(х) = х3 + х + 1 или 1011
A(x) · xr = (x3 + x2 + 1) · x3 = x6 + x5 + x3 ⇒ 11010000
A(x) · xr ⁄ P(x) = (x6 + x5 + x3) ⁄ (х3 + х + 1) = х3 + х2 + х + 1 + 1 ⁄ (х3 + х + 1) ⇒
1111 + 001 ⁄ 1011
F(x) = (x3 + x2 + 1) · (x3 + x + 1) = (x3 + x2 + 1) · x3 + 1 ⇒ 1101001
A(х) = 1101, R(х) = 001
Закодировать кодовую комбинацию G(X) = 1111=
x3+x2+x+1 циклическим кодом.
P(X) = x 3+x+1 = 1011.
G(X) * Xn = (x3 + x2 + x + 1)x3 = x6 + x5 + x4 + x3 →1111000.
Q(X) = 1101
G(X) = 1111
R(X) = 111
F(X) = 1111000 ⊕ 111 = 1111111
Правила выбора компонентов
• Число ячеек памяти равно степени образующего
полинома.
• Число сумматоров на единицу меньше веса
образующего полинома.
• Сумматор ставится после каждой ячейки, начиная
с нулевой, для которой существует
соответствующий член в полиноме. После ячейки,
соответствующей старшему разряду, сумматор не
ставится.
Структурный состав
Метод умножения 1
Метод умножения 2
Пример
Метод деления полиномов 1
Метод деления полиномов 2
(с применением генераторного полинома)
Пример
Кодер (7,4)
Кодирующее устройство
Структурная схема кодера циклического кода (9,5) для
Такты
Вход
T1
T2
T3
T4
G(x)
Выход
F(x)
1
1
1
1
0
0
1
2
0
0
1
1
0
0
3
1
1
1
1
1
1
4
1
0
1
1
1
1
5
0
1
1
1
1
0
6

0
1
1
1
1
7

0
0
1
1
1
8

0
0
0
1
1
9

0
0
0
0
1
Схема обнаружения ошибок
Декодер (7,4)
Декодер (9,5)
Ошибки нет
Ошибка во 2 разряде
Двукратная ошибка
Декодер (9,5), исправляющий
однократную ошибку
Исправление однократной ошибки
Bi’(x)/G(x)=Ui(x)+Si(x)
Bi(x)=Bi’(x)+z(x)
Ssum=2^(n-k)=2^r=n+1
Скачать