Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
учебное пособие по А и ЛО ВТ.doc
Скачиваний:
43
Добавлен:
24.02.2016
Размер:
4.95 Mб
Скачать

Коды Хемминга

Американский ученый Р. Хемминг предложил способ кодирования информации, позволяющий не только обнаруживать, но и исправлять ошибки при передаче одиночного слова любой разрядности. Эти коды – систематические. Пусть разрядность слова равна m. Для контроля информации требуетсяkдополнительных разрядов. Числоkвыбирается согласно следующим правилам.

1. Контролирующее число kвыбирается таким образом, чтобы оно имело количество комбинаций, достаточное для распознавания одной изm+kпозиций или для сигнализации отсутствия ошибки. Полученное таким образом число описываетn=m+k+1 событий. Следовательно, необходимо чтобы выполнялось неравенство2k≥(m+n+1).

2. (m+k)– разрядные позиции нумеруются от единицы до(m+k), начиная от младшей значащей. Контрольные разряды kобознаютсяP0,P1,P2, …,Pk-1и помещаются в разряды, имеющие номера 1,2,4,8, …,2k-1(m+k) – разрядного числа. Остальныеmразрядов могут быть размещены в любом порядке между контрольными разрядами.

3. Контрольные разряды P0,P1,P2, …,Pk-1 выбраны таким образом, чтобы для определенных разрядов слова служить в качестве контрольных избыточных разрядов.

Проверка

Проверяемые разряды

1

1

3

5

7

9

11

13

15

2

2

3

6

7

10

11

14

15

18

19

22

3

4

5

6

7

12

13

14

15

20

21

22

23

4

8

9

10

11

12

13

14

15

24

25

26

27

.

.

.

P0выбрано с таким расчетом, чтобы в позициях 1, 3, 5, 7, 9, 11 … число единиц каждого слова было четным,P1– выбрано для того, чтобы выполнялось условие четности в разрядах 2, 3, 6, 7, 10, 11, 14, 15 …, аналогичноP2контролирует позиции 4, 5, 6, 7,12,13,14,15,20… иP3для разрядов 8, 9,10,11,12,13,14,15,24,25…

На основании рассмотренных правил в таблице показаны семиразрядные коды. Контрольные разряды обозначены P0,P1 иP2и помещены в позициях 1, 2 и 4.

Таблица 6.

Разряды

Число

7

6

5

4

3

2

1

A

B

C

P2

D

P1

P0

0

0

0

0

0

0

0

0

1

0

0

0

0

0

1

1

1

2

0

0

1

1

0

0

1

3

0

0

1

1

1

1

0

4

0

1

0

1

0

1

0

5

0

1

0

1

1

0

1

6

0

1

1

0

0

1

1

7

0

1

1

0

1

0

0

8

1

0

0

1

0

1

1

9

1

0

0

1

1

0

0

10

1

0

1

0

0

1

0

11

1

0

1

0

1

0

1

12

1

1

0

0

0

0

1

13

1

1

0

0

1

1

0

14

1

1

1

1

0

0

0

15

1

1

1

1

1

1

1

Операция обнаружения и исправления ошибок выполняется путем нахождения k-разрядного контрольного числа. При этом младший значащий разряд контрольного числа находится посредством проведения контроля на четность над разрядами 1,3,5,7,9… . Если контроль показывает правильность передачи, то пишется нуль, иначе единица. Следующий разряд контрольного числа определяется путем проверки на четность разрядов 2,3,7,10,11,14,15,… . Остальные разряды контрольного числа находятся аналогично.

Если контрольное число равно нулю, то это означает, что при передаче информации ошибка не произошла. Если же контрольное число не равно нулю, то оно указывает на тот разряд числа, где зафиксирована ошибка и которую необходимо исправить.

Пусть, например, передается число шесть 0110011, а принимается в виде 0110111, то есть произошла ошибка в третьем разряде. Выполняя контроль на четность с помощью разрядов P0,P1иP2, находим:

Контрольное число

P0 (1, 3, 5, 7) = (1, 1, 1, 0) нечетность 1

P1 (2, 3, 6, 7) = (1, 1, 1, 0) нечетность 1

P2 (4, 5, 6, 7) = (0, 1, 1, 0) четность 0

Полученное контрольное число равно 011, что соответствует ошибке в третьем разряде.

Таким образом, дополнительный разряд Piвыбран так, чтобы проверять четность той совокупности разрядных позиций, чьи контрольные числа содержат единицу в позиции 2i.