
8 семестр / Вспомогательный материал / Групповые коды Хэмминга
.doc
Тема 6. Групповые коды Хэмминга
Задача 6.1 (эту задачу дать в виде раздаточного материала)
Построить групповой код Хэминга для N = 12 разрешенных к.к..
Решение.
1) Определяется число информационных разрядов k= log2N = log212 = 4
2) Определяется Nmax = 2k = 16.
3) Определяется n = nmin из выражения для границы Хэмминга: Nmax 2n / (1 + n).
Получаем nmin = 7. Таким образом, имеем код (7,4), в котором k = 4 информационных и = n - k = 3 проверочных разряда.
4) Перечисляются всевозможные векторы n - разрядных ошибок: для кода Хэмминга - векторы одиночных ошибок, для других групповых кодов - векторы кратных ошибок. Отметим, что часто длительность помехи превышает длительность отдельного двоичного символа, тогда появляются помехи в виде пакетов типа
* = 00..011110...0. В нашем случае (кода Хэмминга)
* = {1* = 1000000, 2* = 0100000, 7* = 0000001}
5) Каждому вектору ошибки сопоставляется специальный код, называемый опознавателем ошибки, удовлетворяющий следующему требованию: все опознаватели векторов ошибок должны быть различными и любой опознаватель кратной ошибки не должен быть равен сумме других (ранее уже построенных) опознавателей одиночных или кратных ошибок. В остальном выбор опознавателей - произвольный. Но для кода Хэмминга удобно каждому вектору ошибки сопоставить код номера искаженного разряда. Тогда разрядность кода опознавателя равна log2 n = 3.
Составим таблицу опознавателей:
Векторы ошибок * |
Коды опознавателей |
1 2 3 4 5 6 7 |
|
1 0 0 0 0 0 0 |
001 |
0 1 0 0 0 0 0 |
010 |
0 0 1 0 0 0 0 |
011 |
0 0 0 1 0 0 0 |
100 |
0 0 0 0 1 0 0 |
101 |
0 0 0 0 0 1 0 |
110 |
0 0 0 0 0 0 1 |
111 |
6) По кодам опознавателей составляются проверочные равенства (см. систему уравнений (2) из параграфа 3.5 лекций):
{ai 1 x1 ai 2 x2 ai k xk xk+i = 0}, i = 1 ... , ai j {0,1}, xj {0,1}.
Здесь k - число информационных, - число проверочных символов.
Коэффициенты ai j в i - м проверочном равенстве определяются кодами опознавателей. Младшие разряды опознавателей определяют коэффициенты a1j первого проверочного равенства, вторые разряды служат для определения коэффициентов a2j второго равенства и т.д. Если какой-либо разряд опознавателя равен 1, то соответствующему коэффициенту ai j присваивается значение 1, в противном случае присваивается 0. Просматривая младшие разряды всех опознавателей таблицы сверху вниз, составляем первое проверочное уравнение, затем, просматривая вторые разряды, составляем второе уравнение и т.д. В результате получаем:
x1 x3 x5 x7 = 0
x2 x3 x6 x7 = 0
x4 x5 x6 x7 = 0
Нарушение одного или нескольких проверочных равенств свидетельствует о наличии ошибки в принятой к.к. Из полученной системы видно, что если нарушилось первое уравнение (т.е. стало равным 1), то это означает, что искажен один из символов xj, при котором коэффициент a 1j = 1. Но a 1j = 1, если в младшем разряде одного из опознавателей стоит 1 (такими опознавателями являются 1, 3, 5, или 7- й). Значит возникла ошибка в 1, 3, 5 или 7 разряде кодовой комбинации. Аналогично - для других равенств. Если же ошибки нет, то все суммы будут равны 0. Поэтому данная система уравнений означает проверку на четность суммы соответствующих разрядов.
Пусть какие-то уравнения нарушились, например, получен результат
=1
=1
=0.
Считывая правые части равенств снизу вверх, получим синдром 011, указывающий на ошибку в определенном разряде кодовой комбинации, в данном случае - на ошибку в третьем разряде, т.к. только x3 встречается и в первом, и во втором равенстве. Синдромы в кодах Хэмминга всегда совпадают с соответствующими опознавателями таблицы. Найдя в таблице опознаватель 011, сразу определяем искаженный разряд x3 (код 011 соответствует индексу разряда).
7) Выбираем = n - k = 3 переменных в качестве проверочных. Удобно (но не обязательно) выбирать такие переменные, которые встречаются только в одном проверочном равенстве. Такие переменные расположены в позициях с номерами 2s (s = 0,1,2, ... ). В данном случае - это переменные x1, x2, x4. Проверочные переменные переносятся в другую часть каждого уравнения. В результате будет получена система (1) из параграфа 3.5:
x1 = x3 x5 x7
x2 = x3 x6 x7
x4 = x5 x6 x7
8) Перечисляются все 2k комбинаций информационных символов (и), затем используется система (1) для определения значений проверочных символов. В таблице проверочные символы (п) выделены жирным шрифтом.
x1 x2 x3 x4 x5 x6 x7 |
п п и п и и и |
0 0 0 0 0 0 0 |
1 1 0 1 0 0 1 |
0 1 0 1 0 1 0 |
1 0 0 0 0 1 1 |
0 1 0 0 |
0 1 0 1 |
0 1 1 0 |
0 1 1 1 |
1 0 0 0 |
1 0 0 1 |
1 0 1 0 |
1 0 1 1 |
1 1 0 0 |
1 1 0 1 |
1 1 1 0 |
1 1 1 1 |
В результате формируются все разрешенные кодовые комбинации (приведены только первые 4 комбинации, проверочные символы помечены курсивом и жирным шрифтом).
9) Среди найденных 16 комбинаций выбираются любые 12. Отметим, что обычно код 0000000 не используется.