Исправление ошибок
15 1 1 1 1 1 1 1
2 0 1 0 1 0 1 0
1 1 1 0 1 0 0 1
0 0 0 0 0 0 0 0
Mod2)
Mod2)
1 1 1
1 1 0
1 0 1
0 1 1
0 1 0
H= 1 0 0
В качестве строк матрицы возьмем порядковые двоичные числа номеров строк.
Представим кодовую комбинацию V кода Хэмминга в общем виде:
V= а1 а2 а3 а4 а5 а6 а7,
где аi – двоичные разряды двоичного кода, принимающие значения 0 или 1.
Номера контрольных позиций выбираются по правилу:
если в некоторой строке матрицы одна единица, то номер этой строки определит номер контрольной позиция в кодовой комбинации. Следовательно, позиции контрольных разрядов для данного примера кода: а1 а2 а4.
В общем случае номера позиций контрольных разрядов можно вычислить из выражения 2i , где i=0,1,2,3,4 и т. д.
Информационные позиции в кодовой комбинации а3, а5, а6, а7.
Информационные позиции всегда определены, т.к. они заполняются передаваемой информацией. Контрольные позиции вычисляются по правилам кодирования.
Представим кодовую комбинацию V в другом виде с учетом выполненных расчетов.
V= x1 x2 a3 x4 a5 a6 a7,
где символом x отмечены контрольные позиции, а символом a – информационные.
Для нахождения контрольных позиций кода необходимо решить систему уравнений, которая получается после умножения кодовой комбинации Vна проверочную матрицу Hкода Хэмминга. При умножении применяются специальные правила поразрядного умножения и суммирования по модулю 2:
Правила умножения
1*1=1
1*0=0
0*1=0
0*0=0
Правила суммирования
1+1=0
1+0=1
0+0=0
В качестве результата суммирования берем остаток от деления суммы единиц на модуль 2.
По алгоритму кодирования Хэмминга результат умножения комбинации V на любой столбец матрицы должен быть равен нулю.
Умножим комбинацию V на матрицу H
001
V*H=( x1 x2 a3 x4 a5 a6 a7) * 100 = 0
В результате получим три равенства:
x1*0 + x2*0 + a3*0 + x4*1 + a5*1 + a6*1 + a7*1 = 0
x1*0 + x2*1 + a3*1 + x4*0 + a5*0 + a6*1 + a7*1=0
x1*1 + x2*0 + a3*1 + x4*0 + a5*1 + a6*0 + a7*1=0
Учитывая, что умножение на 0 дает нулевой результат, получим три уравнения для вычисления контрольных разрядов кода.
x4=a5 + a6 + a7,
x2=a3 + a6 + a7,
x1=a3 + a5 + a7.
В уравнениях знак минус заменен на плюс, т.к. в операции по модулю 2 вычитание равноценно сложению.
Рассмотрим пример вычисления контрольных разрядов кодовой комбинации.
Пусть в комбинации V известны информационные разряды:
a3=1, a5=0, a6=1, a7=0
Тогда начальное состояние комбинации:
V=x1 x2 1 x4 0 1 0,
где разряды x1,x2,x4- не определены.
Подставим в полученные выше уравнения известные информационные разряды и вычислим контрольные :
X4=0+1+0=1
X2=1+1+0=0
X1=1+0+0=1
В результате процедуры кодирования получим комбинацию кода Хэмминга:
V=1 0 1 1 0 1 0
Подобным способом можно получить все 16 комбинаций кода Хэмминга, среди которых есть и нулевая.
……………
…………….
…………….
Входящие в код комбинации используются для передачи информации, которая занимает 4 позиции в каждой разрешенной комбинации.
Из рассмотренного выше правила кодирования следует, что при отсутствии ошибки в коде результат умножения разрешенной кодовой комбинации на проверочную матрицу равен нулю.
Искажение кодовой комбинации при передаче ее в канале связи может быть обнаружено путем умножения принятой комбинации на проверочную матрицу, которая применялась в процессе кодирования. Если результат умножения окажется не нулевым, то это свидетельствует о наличии ошибки.
Исправление ошибки будет возможно, если место ошибки однозначно связано с числом, полученным в результате умножения. Это число называется синдромом.
Составим таблицу соответствия между ошибками и синдромами.
Номер позиции в коде | Вектор ошибки | Синдром |
1 0 0 0 0 0 0 | 0 0 1 | |
0 1 0 0 0 0 0 | 0 1 0 | |
0 0 1 0 0 0 0 | 0 1 1 | |
0 0 0 1 0 0 0 | 1 0 0 | |
0 0 0 0 1 0 0 | 1 0 1 | |
0 0 0 0 0 1 0 | 1 1 0 | |
0 0 0 0 0 0 1 | 1 1 1 |
Можно заметить, что число, которое записано в синдроме, указывает на позицию ошибки в кодовой комбинации.
Пример.
0 1 0 1 0 1 0Кодовая комбинация 2
+