2.8 Коррекция ошибок
Исправлять ошибки труднее, чем их детектировать или предотвращать. Процедура коррекции ошибок предполагает два совмещенные процесса: обнаружение ошибки и определение места (идентификация сообщения и позиции в сообщении). После решения этих двух задач, исправление тривиально – надо инвертировать значение ошибочного бита. В наземных каналах связи, где вероятность ошибки невелика, обычно используется метод детектирования ошибок и повторной пересылки фрагмента, содержащего дефект. Для спутниковых каналов с типичными для них большими задержками системы коррекции ошибок становятся привлекательными. Здесь используют коды Хэмминга или коды свертки.
Код Хэмминга представляет собой блочный код, который позволяет выявить и исправить ошибочно переданный бит в пределах переданного блока. Обычно код Хэмминга характеризуется двумя целыми числами, например, (11,7) используемый при передаче 7-битных ASCII-кодов. Такая запись говорит, что при передаче 7-битного кода используется 4 контрольных бита (7+4=11). При этом предполагается, что имела место ошибка в одном бите и что ошибка в двух или более битах существенно менее вероятна. С учетом этого исправление ошибки осуществляется с определенной вероятностью. Например, пусть возможны следующие правильные коды (все они, кроме первого и последнего, отстоят друг от друга на расстояние 4):
00000000
11110000
00001111
11111111
При получении кода 00000111 не трудно предположить, что правильное значение полученного кода равно 00001111. Другие коды отстоят от полученного на большее расстояние Хэмминга.
Рассмотрим пример передачи кода буквы s = 0x073 = 1110011 с использованием кода Хэмминга (11,7).
Позиция бита: | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
Значение бита: | 1 | 1 | 1 | * | 0 | 0 | 1 | * | 1 | * | * |
Символами * помечены четыре позиции, где должны размещаться контрольные биты. Эти позиции определяются целой степенью 2 (1, 2, 4, 8 и т.д.). Контрольная сумма формируется путем выполнения операции XOR (исключающее ИЛИ) над кодами позиций ненулевых битов.
В данном случае это 11, 10, 9, 5 и 3. Вычислим контрольную сумму:
11 = | 1011 |
10 = | 1010 |
09 = | 1001 |
05 = | 0101 |
03 = | 0011 |
s = | 1110 |
Позиция бита: | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
Значение бита: | 1 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 0 |
11 = | 1011 |
10 = | 1010 |
09 = | 1001 |
08 = | 1000 |
05 = | 0101 |
04 = | 0100 |
03 = | 0011 |
02 = | 0010 |
s = | 0000 |
|
|
С11 | С12 | С13 | Значение |
1 | 2 | 4 | Позиция бит |
0 | 0 | 0 | Ошибок нет | 0 | 0 | 1 | Бит С3 не верен |
0 | 1 | 0 | Бит С2 не верен |
0 | 1 | 1 | Бит М3 не верен> |
1 | 0 | 0 | Бит С1 не верен> |
1 | 0 | 1 | Бит М2 не верен |
1 | 1 | 0 | Бит М1 не верен |
1 | 1 | 1 | Бит М4 не верен |
d=1 | n=2n |
d=2 | n=2n-1 |
d=3 |
n 2n /(1+n) |
d=2q+1 |
|