- •Помехоустойчивое кодирование информации
- •Помехи
- •Помехоустойчивые свойства кодов
- •Расстояние Хемминга
- •Кодовый куб
- •Примеры кодовых расстояний
- •Неравенство Хемминга
- •Коды для обнаружения ошибок
- •Код Хемминга
- •Построение кода Хемминга
- •Пример построения кода Хемминга
- •Примеры кодовых комбинаций Хемминга
- •Декодирование кода Хемминга
- •Пример декодирования кода Хемминга
- •Циклический код
- •Построение циклического кода
- •Пример построения циклического кода
- •Декодирование циклического кода
- •Образующая матрица циклического кода
- •Проверочная матрица циклического кода
- •Пример вычисления остатков
- •Пример образующей матрицы
- •Пример проверочной матрицы
- •Пример декодирования циклического кода
- •Примеры образующих многочленов
Пример построения кода Хемминга
1.Задать количество информационных разрядов:
k = 4.
2.Определить количество проверочных разрядов:
2r r + k + 1 r = 3.
3.Задать проверочные равенства:
e1 = a1 a3 a5 a7; e2 = a2 a3 a6 a7 ; e3 = a4 a5 a6 a7.
4.Определить позиции проверочных разрядов:
a1, a2, a4.
5.Определить значения проверочных разрядов:
a1 = a3 a5 a7 ; a2 = a3 a6 a7 ; a4 = a5 a6 a7.
5.Построить кодовые комбинации.
Примеры кодовых комбинаций Хемминга
Исходная |
|
Кодовая |
Исходная |
|
Кодовая |
||
кодовая |
комбинация |
кодовая |
комбинация |
||||
комбинация |
Хемминга |
комбинация |
Хемминга |
||||
0000 |
|
0000000 |
1000 |
1110000 |
|||
|
|
|
|
|
|
|
|
0001 |
|
1101001 |
1001 |
0011001 |
|||
|
|
|
|
|
|
|
|
0010 |
|
0101010 |
1010 |
1011010 |
|||
|
|
|
|
|
|
|
|
0011 |
|
1000011 |
1011 |
0110011 |
|||
|
|
|
|
|
|
|
|
0100 |
|
1001100 |
1100 |
0111100 |
|||
|
|
|
|
|
|
|
|
0101 |
|
0100101 |
1101 |
1010101 |
|||
|
|
|
|
|
|
|
|
0110 |
|
1100110 |
1110 |
0010110 |
|||
|
|
|
|
|
|
|
|
0111 |
|
0001111 |
1111 |
1111111 |
|||
|
|
|
|
|
|
|
|
Декодирование кода Хемминга
1.Получить кодовую комбинацию Хемминга.
2.Сформировать синдром согласно проверочным равенствам.
3.Если синдром не равен 0, то исправить ошибку в разряде, номер которого равен значению синдрома.
4.Определить по таблице исходную комбинацию.
Пример декодирования кода Хемминга
1.Получить кодовую комбинацию Хемминга:
1101011.
2.Сформировать синдром согласно проверочным равенствам:
e1 = 1 0 0 1 = 0; e2 = 1 0 1 1 = 1; e3 = 1 0 1 1 = 1.
3.Если синдром не равен 0, то исправить ошибку в разряде, номер которого равен значению синдрома:
e3e2e1 = 1102 = 6 – ошибка в 6-м разряде; правильная кодовая комбинация:
1101001.
4.Определить по таблице исходную комбинацию:
0001.
Циклический код
Циклическими кодами называют специальную группу линейных кодов, которые имеют полиномиальное представление.
Полиномиальное представление:
101101 1 x5 + 0 x4 + 1 x3 + 1 x2 + 0 x1 + 1x0 = = x5 + x3 + x2 + 1.
Циклические коды – систематические коды, в которых контрольные и информационные разряды расположены на строго определенных местах.
Построение циклического кода
1.Получить исходную комбинацию, содержащую k информационных разрядов.
2.Сформировать h(x) – многочлен, соответствующий исходной комбинации.
3.Определить число контрольных разрядов r, удовлетворяющее уравнению r = log(r + k + 1)
4.Выбрать образующий многочлен g(x) порядка r.
5.Сформировать многочлен h(x)xr.
6.Определить частное Q(x) и остаток R(x) от деления h(x)xr на g(x).
7.Сформировать многочлен F(x) = h(x)xr + R(x).
8.Определить кодовую комбинацию, соответствующую F(x).
Пример построения циклического кода
1.Получить исходную комбинацию, содержащую k информационных разрядов:
1101.
2.Сформировать h(x) – многочлен, соответствующий исходной комбинации:
h(x) = x3 + x2 + 1.
3. Определить число контрольных разрядов r, удовлетворяющее уравнению r = log(r + k + 1):
r = 3.
4.Выбрать образующий многочлен g(x) порядка r:
g(x) = x3 + x + 1.
5.Сформировать многочлен h(x)xr:
h(x)xr = x6 + x5 + x3.
6.Определить частное Q(x) и остаток R(x) от деления h(x)xr на g(x):
Q(x) = x3 + x2 + x + 1; R(x) = 1.
7.Сформировать многочлен F(x) = h(x)xr + R(x):
F(x) = x6 + x5 + x3 + 1.
8.Определить кодовую комбинацию, соответствующую F(x):
1101001.
Декодирование циклического кода
1.Получить циклическую кодовую комбинацию.
2.Сформировать многочлен, соответствующий циклической кодовой комбинации.
3.Вычислить остаток от деления многочлена циклической кодовой комбинации на образующий многочлен.
4.Если остаток не равен 0, то исправить ошибку в разряде, соответствующем значению остатка.
5.Определить по таблице исходную комбинацию.
Образующая матрица циклического кода
Для образования циклических кодов можно воспользоваться образующей (порождающей) матрицей. Образующая матрица Gk n составляется на основе единичной матрицы Ik, к которой справа дописывается матрица остатков Rk r:
Gk n = (IkRk r).
Матрица Rk r получается из остатков ri от деления полинома xn–i на образующий многочлен g(x) для всех строк с номерами
i = 1, 2, …, k.
Проверочная матрица циклического кода
Для обнаружения ошибок можно использовать проверочную матрицу Hr n:
Hr n = ((Rk r)TIr).
Столбцы проверочной матрицы содержат в двоичной форме возможные остатки ошибочных комбинаций (порядок разрядов задается от нижней строки к верхней).