r (n k) log2 (n 1). |
(4.9) |
Из (4.7) и (4.9) следует, что в коде Хэмминга возможны комбинации
(n,k): (7,4); (15,11); (31,26); (63,57) и т.д.
Возможна реализация кодов Хэмминга и с другими значениями количества бит данных и проверочных бит для исправления одиночных ошибок таблица 4.2.
Таблица 4.2 Соотношение между битами данных и проверочных
Биты данных k |
от3 до 4 |
от 5 до 11 |
от12 до 26 |
от27 до 57 |
от27 до 57 |
Проверочные биты r |
3 |
4 |
5 |
6 |
7 |
Вкачестве примера рассмотрим реализацию кода Хэмминга для r = (n-k)
=3. Из (4.6 – 4.9) и таблицы 4.2 следует, что в этом случае необходимо использовать код (7,4), т.е. каждый блок содержит n = 7 бит, из которых k
=4 информационных бита, которые дополняются r = (n-k) = 3 проверочными битами. Проверочные (контрольные) биты определяются (рассчитываются) путем сложения по модулю 2 (исключающее ИЛИ) информационных бит. При определении каждого из проверочных бит информационные биты участвуют, по крайней мере, дважды. Для рассматриваемого примера при заданных четырех информационных битах (i1,i2 ,i3,i4 ) каждое кодовое слово дополняется тремя проверочными битами,
определяемыми равенствами
r1 |
i1 |
i2 |
i3 , |
|
r2 |
i2 |
i3 |
i4 , |
(4.10) |
r3 |
i1 |
i2 |
i4 . |
|
Шестнадцать разрешенных семибитовых кодовых слов (7,4) – кода Хэмминга (i1,i2 ,i3,i4 ,r1,r2 ,r3 ) представлены в таблице 4.3.
Схемная реализация кодера (7,4) – кода Хэмминга в соответствии с формулой (4.10) и таблицей 4.3 представлена на рисунке 4.3.
При вычислении проверочных бит (r1,r2 ,r3 ) согласно (4.10) и рисунка
4.3 осуществляется проверка на четность комбинации из трех информационных бит, если рассматриваемая комбинация четная, то ri = 0, если нечетная – ri = 1.
Таблица 4.3 Разрешенные комбинации (7,4) – кода Хэмминга
0000000 |
|
1000101 |
0001011 |
|
1001110 |
0010110 |
|
1010011 |
|
111 |
|
0011101 |
1011000 |
0100111 |
1100010 |
0101100 |
1101001 |
0110001 |
1110100 |
0111010 |
1111111 |
4-битовое |
7-битовое |
слово данных |
кодовое слово |
i1 |
i1 |
i2 |
i2 |
i3 |
i3 |
i4 |
i4 |
|
r1 |
|
r2 |
|
r3 |
|
Рис. 4.3 Кодер (7,4) – кода Хэмминга |
При передаче по каналу связи возможно появление ошибок, поэтому принятое семибитовое кодовое слово (i1 ,i2 ,i3 ,i4 ,r1 ,r2 ,r3 ) . По изображенному на рисунке 4.4 алгоритму вычисляются биты
112
s1 |
r1 |
i1 |
i2 |
i3 , |
|
s2 |
r2 |
i2 |
i3 |
i4 |
, |
|
|
|
|
|
(4.11) |
s3 |
r3 |
i1 |
i2 |
i4. |
|
7-битовое |
|
|
|
|
|
4-битовое |
кодовое слово |
|
|
|
|
|
кодовое слово |
i1 |
|
|
|
|
|
i1 |
i2 |
|
|
|
|
|
i2 |
i3 |
|
|
|
|
|
i3 |
i4 |
|
|
|
|
|
i4 |
r1 |
e4 |
e |
3 |
e |
e |
1 |
|
|
2 |
|
|||
r2 |
Корректирующая |
|||||
|
|
логика |
|
|
||
|
|
|
|
|
||
r3 |
s1 |
s2
s3
Рис.4.4 Декодер (7,4) – кода Хэмминга
Если в канале отсутствуют ошибки, то согласно (4.10) и (4.11) биты s1, s2, s3 будут равны нулю, что и свидетельствует об отсутствии ошибок. Трехбитовая последовательность (s1, s2s3 ) называется синдромом, структура
которого зависит от конфигурации ошибок в принимаемом сигнале. Всего имеется восемь значений синдрома – один для случая отсутствия и по одному для каждой из семи возможных одиночных ошибок, при этом каждая из ошибок имеет только свой единственный синдром. Рассмотрим синдромы для четырехбитового слова данных рисунок 4.5.
113
На рисунке 4.5 темным цветом выделены ошибочно принятые биты. Из рисунка 4.5 видно, что при наличии ошибки в одном из информационных (i1,i2 ,i3,i4 ) бит синдром имеет в своем составе две единицы. Если же ошибки
происходят в проверочных битах (r1,r2 ,r3 ) , то синдром имеет в своем составе
одну единицу.
На основе вычисленного в декодере Хэмминга синдрома рисунок 4.4 корректирующая логика вырабатывает сигнал (e1,e2 ,e3,e4 ) для исправления
ошибок в информационных битах (i1,i2 ,i3,i4 ) . Очевидно, что ошибки в проверочных битах (r1,r2 ,r3 ) исправлять не нужно.
i1 |
i2 |
i3 |
i4 |
|
|
|
|
|
|
|
Передаваемое четырехбитовое слово |
0 |
1 |
1 |
0 |
|
|
|
|
|
|
|
данных |
|
|
|
|
|
|
|
|
||||
i1 |
i2 |
i3 |
i4 |
r1 |
r2 |
r3 |
|
|
|
|
Семибитовое слово на выходе кодера |
|
|
|
|
|
|
|
|
|
|
|
|
0 |
1 |
1 |
0 |
0 |
0 |
1 |
|
|
|
|
Хэмминга |
i1 |
i2 |
i3 |
i4 |
r1 |
r2 |
r3 |
|
s1 |
s2 |
s3 |
Принятая кодовая комбинация и значение |
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
0 |
1 |
1 |
0 |
0 |
0 |
1 |
|
0 |
0 |
0 |
синдрома при отсутствии ошибок |
i1 |
i2 |
i3 |
i4 |
r1 |
r2 |
r3 |
|
s1 |
s2 |
s3 |
Принятая кодовая комбинация и значение |
|
|
|
|
|
|
|
|
|
|
|
|
0 |
1 |
1 |
1 |
0 |
0 |
1 |
|
0 |
1 |
1 |
синдрома при ошибке в i4 |
|
|
|
|
|
|
|
|
|
|
|
|
i1 |
i2 |
i3 |
i4 |
r1 |
r2 |
r3 |
|
s1 |
s2 |
s3 |
Принятая кодовая комбинация и значение |
|
|
|
|
|
|
|
|
|
|
|
|
0 |
1 |
0 |
0 |
0 |
0 |
1 |
|
1 |
1 |
0 |
синдрома при при ошибке в i3 |
|
|
|
|
|
|
|
|
|
|
|
|
i1 |
i2 |
i3 |
i4 |
r1 |
r2 |
r3 |
|
s1 |
s2 |
s3 |
Принятая кодовая комбинация и значение |
|
|
|
|
|
|
|
|
|
|
|
|
0 |
0 |
1 |
0 |
0 |
0 |
1 |
|
1 |
1 |
1 |
синдрома при при ошибке в i2 |
|
|
|
|
|
|
|
|
|
|
|
|
i1 |
i2 |
i3 |
i4 |
r1 |
r2 |
r3 |
|
s1 |
s2 |
s3 |
Принятая кодовая комбинация и значение |
|
|
|
|
|
|
|
|
|
|
|
|
1 |
1 |
1 |
0 |
0 |
0 |
1 |
|
1 |
0 |
1 |
синдрома при при ошибке в i1 |
|
|
|
|
|
|
|
|
|
|
|
|
i1 |
i2 |
i3 |
i4 |
r1 |
r2 |
r3 |
|
s1 |
s2 |
s3 |
Принятая кодовая комбинация и значение |
|
|
|
|
|
|
|
|
|
|
|
|
0 |
1 |
1 |
0 |
1 |
0 |
1 |
|
1 |
0 |
0 |
синдрома при при ошибке в r1 |
|
|
|
|
|
|
|
|
|
|
|
|
i1 |
i2 |
i3 |
i4 |
r1 |
r2 |
r3 |
|
s1 |
s2 |
s3 |
Принятая кодовая комбинация и значение |
|
|
|
|
|
|
|
|
|
|
|
|
0 |
1 |
1 |
0 |
0 |
1 |
1 |
|
0 |
1 |
0 |
синдрома при ошибке в r2 |
|
|
|
|
|
|
|
|
|
|
|
|
i1 |
i2 |
i3 |
i4 |
r1 |
r2 |
r3 |
|
s1 |
s2 |
s3 |
Принятая кодовая комбинация и значение |
|
|
|
|
|
|
|
|
|
|
|
|
0 |
1 |
1 |
0 |
0 |
0 |
0 |
|
0 |
0 |
1 |
синдрома при ошибке в r1 |
|
|
|
|
|
|
|
|
|
|
|
|
Рис. 4.5 Пояснения к работе декодера Хэмминга при наличии ошибок в принятой кодовой комбинации
Рассмотрим работу корректирующей логики. Очевидно, что для исправления ошибки в информационном бите необходимо с выхода корректирующей логики подать «1» на сумматор по модулю 2 в ветвь соответствующего символа. По этому принципу построена корректирующая логика, схема которой представлена на рисунке 4.6.
114
На вход корректирующей логики поступают символы синдрома ошибок (s1, s2s3 ) , которые подаются на каждый из трех входов четырех схем совпадения
(трехвходовые схемы И). Вход со значком означает инверсию входного символа синдрома ошибки. При наличии ошибки в первом информационном символе i1 символ «1» (импульс) появится на выходе первой схемы совпадения, так как при этом значение синдрома в соответствии с рисунком 4.4 (s1, s2s3 ) =
101, а после инверсии второго символа синдрома s2 1 получим на трех входах первой схемы совпадения (s1, s2 , s3 ) 111, что даст на выходе этой схемы e1 1.
При подаче этой «1» на сумматор по модулю 2 в цепи первого информационного символа получим
( i1 |
i2 |
i3 |
i4 ) = ( 0 |
1 |
1 |
0 ) |
||
( i'1 |
i2 |
i3 |
i4 ) = ( 1 |
1 |
1 |
0 ) |
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
e1 = 1 |
|
( i1 i2 i3 i4 ) = ( 0 |
1 1 0 ) |
Принятая кодовая комбинация при отсутствии ошибок
Принятая кодовая комбинация при ошибке в i1
Сигнал на выходе первой схемы совпадения корректирующей логики
Кодовая комбинация после исправления ошибки в i1
e4 |
|
e3 |
|
e2 |
|
e1 |
|
|
|
||||
|
|
|
|
|
|
|
4 |
3 |
2 |
1 |
s1 |
s2 |
s3 |
|
|
|
Рис. 4.6 Структурная схема корректирующей логики декодера (7,4) – кода Хэмминга
В кодах Хэмминга с увеличением длины кодовой комбинации n растет сложность декодирования. Коды Хэмминга в силу этой причины используются для исправления одиночных ошибок при небольшом числе информационных символов.
115