Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КП Кодирование ТЕОРИЯ 2012-весна.doc
Скачиваний:
17
Добавлен:
04.09.2019
Размер:
1.37 Mб
Скачать

5. Код Хемминга

Помехоустойчивое кодирование методом Хемминга позволяет:

- обнаруживать одиночные ошибки;

- исправлять одиночные ошибки.

Метод основан на перекрестном вычислении битов паритета.

Основными свойствами кода Хемминга являются:

- расстояние по Хеммингу;

- минимальное расстояние по Хеммингу;

- вес Хемминга.

Расстоянием по Хеммингу d(x,y) называется число позиций, в которых различаются два n-разрядных кода.

Минимальным расстоянием d* называется наименьшее из всех расстояний по Хеммингу между различными парами всех n-разрядных кодов.

Весом Хемминга w(x) называется число ненулевых компонент n-разрядного кода.

Пример. Определить расстояние по Хеммингу d(x,y) для кодов х = 0110 и y = 1011:

0110

Код х

Сумма по модулю два

1011

Код y

1101

Результат

В результате 1101 единицы отражают число позиций, в которых различаются коды 0110 и 1011. Количество единиц равно 1 + 1 + 0 + 1 = 3.

Ответ. Расстояние по Хеммингу d(0110, 1011) = 3.

Пример. Определить минимальное расстояние d* для кодов 0110, 1011, 1101:

d(0110, 1011) = 3;

d(1011, 1101) = 2;

d(0110, 1101) = 2.

Ответ. Минимальное расстояние d* = 2.

Пример. Определить вес Хемминга w(x) для кода х = 0110.

Ответ. Вес Хемминга w(0110) = 0 + 1 + 1 + 0 = 2.

Помехоустойчивые коды характеризуется выражениями:

(n, k, d) или (n, k),

где n – общее число разрядов в передаваемом сообщении; k – число информационных разрядов (k = n - r); r – число проверочных разрядов; d* – минимальное кодовое расстояние между разрешенными кодовыми комбинациями.

Дополнительным показателями избыточности являются:

- относительная избыточность ;

- относительная скорость передачи .

Рассмотрим работу метода на примере кода Хемминга (7,4) для данного D3D2D1D0 (n =7, k = 4).

Кодирование данных и передача по линии связи :

1. Вычисление для данного D3D2D1D0 поверочных битов Р2Р1Р0 по формулам:

Р0 = D2D1D0;

Р1 = D3D1D0;

Р2 = D3D2D0.

2. Переда сообщения D3D2D1D0Р2Р1Р0 по линии связи.

Прием и проверка данных:

  1. Прием сообщения D3D2D1D0Р2Р1Р0.

  2. Вычисление синдромов по формулам:

S0 = D2D1D0Р0;

S1 = D3D1D0Р1;

S2 = D3D2D0Р2.

Трёхразрядный код называется синдромом.

Синдром представляет собой сочетание результатов проверки на чётность соответствующих символов кодовой группы и характеризует определённую конфигурацию ошибок (шумовой вектор).

3. Проверка на наличие ошибок:

- получение идентификаторов ошибки для синдромов (восемь идентификаторов ошибки), приведенных в таблице.

Таблица Идентификаторы ошибок

Синдромы

Идентификатор

ошибки

S2

S1

S0

0

0

0

0

Ошибки нет

1

0

0

1

Ошибка в P0

2

0

1

0

Ошибка в P1

3

0

1

1

Ошибка в D1

4

1

0

0

Ошибка в Р2

5

1

0

1

Ошибка в D2

6

1

1

0

Ошибка в D3

7

1

1

1

Ошибка в D0

Пример. Передать четырехразрядное данное D3D2D1D0 = 0000 с контролем достоверности по Хеммингу.

Кодирование данных и передача по линии связи :

  1. Вычисление для данного D3D2D1D0 = 0000 поверочных битов Р2Р1Р0 по формулам:

Р0 = D2D1D0 = 0  0  0 = 0;

Р1 = D3D1D0 = 0  0  0 = 0;

Р2 = D3D2D0 = 0  0  0 = 0.

Поверочные биты Р2Р1Р0 равны 000.

2. Передача сообщения D3D2D1D0Р2Р1Р0 = 0000 000.

Прием и проверка данных:

  1. Прием сообщения D3D2D1D0Р2Р1Р0 = 0000 000.

  2. Вычисление синдромов :

S0 = D2D1D0Р0 = 0  0  0  0 = 0;

S1 = D3D1D0Р1 = 0  0  0  0 = 0;

S2 = D3D2D0Р2 = 0  0  0  0 = 0.

Синдромы равны 000.

  1. Проверка на наличие ошибок:

- из таблицы идентификаторов получаем, что для синдромов = 0000 ошибки нет.

Пример. Выполнить верификацию принятого сообщения 0100000, использующее кодирование методом Хемминга (7,4).

Прием и проверка данных:

  1. Прием сообщения D3D2D1D0Р2Р1Р0 = 0100 000.

2. Анализ принятого сообщения:

Данное

Код Хемминга

D3

D2

D1

D0

Р2

Р1

Р0

0

1

0

0

0

0

0

  1. Вычисление синдромов :

S0 = D2  D1  D0  Р0 = 1  0  0  0 = 1  0  0 = 1  0 = 1;

S1 = D3  D1  D0  Р1 = 0  0  0  0 = 0  0  0 = 0  0 = 0;

S2 = D3  D2  D0  Р2 = 0  1  0  0 = 1  0  0 = 1  0 = 1.

  1. Проверка на наличие ошибок:

- для синдромов = 101 из таблицы синдромов извлекаем сообщение: «Ошибка в D2».

4. Исправление ошибки:

- исправление ошибки с помощью логической операции инверсии (второго разряда) = 0000.

Ответ. Передавалось данное 0000.