Коды Хемминга
Эти коды позволяют определять все одиночные ошибки при d=3, а также исправлять все одиночные ошибки и обнаруживать все двойные ошибки при d=4 (но не исправлять их). Рассмотрим код Хемминга, исправляющий все одиночные ошибки. В качестве исходного берут двоичный код на все сочетания с числом информационных символов k, к которому прибавляют контрольные символы m. Таким образом, общая длина закодированной комбинации: n=k+m. Рассмотрим последовательность кодирования по Хеммингу. Сначала определяем число контрольных символов. При передаче по каналу с шумами может быть искажен любой из n символов кода, или слово передано без искажений. С помощью контрольных символов m можно описать два события. Значит должно быть выполнено условие:
2m > n+1=(k+m)+1
Размещение контрольных символов.
Так как произвольное расположение контрольных символов затрудняет проверку принятого кода, то для удобства обнаружения искаженного символа целесообразно размещать их на местах, кратных степени 2 (1,2,4,8 и т.д.). Поэтому при k=4, m=3 закодированная комбинация будет выглядеть так:
m1, m2, k4 m3, k3, k2, k1 (1)
Определение состава контрольных символов
С помощью проверки на четность выявляют какой из символов должен стоять на позиции “1” или “0”. Рассмотрим это на примере приведенной выше комбинации.
Таблица 1. Составление проверочной таблицы для кодов Хемминга
|
Разряды двоичных чисел |
Символы кода | ||
|
k3 |
k2 |
k1 | |
|
0 |
0 |
1 |
m1 |
|
0 |
1 |
0 |
m2 |
|
0 |
1 |
1 |
k4 |
|
1 |
0 |
0 |
m3 |
|
1 |
0 |
1 |
k3 |
|
1 |
1 |
0 |
k2 |
|
1 |
1 |
1 |
k1 |
Таблица 2. Проверочная таблица для кода Хемминга.
|
m1 |
+k4 |
+k3 |
+k1 |
|
m2 |
+k4 |
+k2 |
+k1 |
|
m3 |
+k3 |
+k2 |
+k1 |
В таблице 1 записаны все кодовые комбинации (исключая нулевую) для трехразрядного двоичного кода на все сочетания и рядом справа, сверху вниз проставлены символы комбинаций кода Хемминга, записанные в последовательности (1). Из таблицы 1 составляется таблица 2, в которой выписаны символы в трех строках в следующей закономерности. В первую строку записывают символы, против которых проставлены 1 в младшем (первом) разряде комбинации двоичного кода в таблице 1. Во вторую строку проверочных коэффициентов записываются символы, против которых проставлены 1 во втором разряде двоичного кода. В третью строку записываются символы, против которых проставлены 1 в третьем разряде двоичного кода (m3, k3, k2, k1,). Состав контрольных символов с помощью проверок определяют следующим образом. Суммируют информационные символы, входящие в каждую строку таблицы 2, если сумма единиц в данной строке четная, то значение символов m, входящих в эту строку .равно нулю, если нечетная, то единице. По первой строке таблицы 2 определяют значение символа m1, по второй - m2, по третьей - m3.
