Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТЭС_УП.doc
Скачиваний:
542
Добавлен:
13.02.2015
Размер:
8.32 Mб
Скачать

16.2.1. Код Хэмминга

Код Хэмминга, являющийся групповым (n,m) кодом, с минимальным расстоянием d=3 позволяет обнаруживать и исправлять однократные ошибки. Построение кодов Хемминга базируется на принципе проверки на чётность веса W (числа единичных символов) в информационной группе кодового блока.

Для каждого числа проверочных символов k = 3,4,5… существует классический код Хемминга с маркировкой (n,m) = (2k -1, 2k -1 - k), т.е. – (7,4), (15,11), (31,26) …

Для примера рассмотрим классический код Хемминга (7,4). В простейшем варианте при заданных четырёх (m = 4) информационных символах (i1, i2, i3, i4) будем полагать, что они сгруппированы в начале кодового слова, хотя это и не обязательно. Дополним эти информационные символы тремя проверочными символами (k = 3), задавая их следующими равенствами проверки на чётность, которые определяются соответствующими алгоритмами:

k1 = i1 i2 i3;

k2 = i2 i3 i4;

k3 = i1 i2 i4, где знак означает сложение по модулю 2.

В соответствии с этим алгоритмом определения значений проверочных символов ki возможны 16 кодовых слов (7,4) – кода Хемминга.

m = 4

k = 3

i1

i2

i3

i4

k1

k2

k3

0

0

0

0

0

0

0

0

0

0

1

0

1

1

0

0

1

0

1

1

0

0

0

1

1

1

0

1

0

1

0

0

1

1

1

0

1

0

1

1

0

0

0

1

1

0

0

0

1

0

1

1

1

0

1

0

1

0

0

0

1

0

1

1

0

0

1

1

1

0

1

0

1

0

0

1

1

1

0

1

1

0

0

0

1

1

0

0

0

1

0

1

1

0

1

0

0

1

1

1

1

0

1

0

0

1

1

1

1

1

1

1

На вход декодера поступает кодовое слово V = (i1', i2', i3', i4', k1', k2', k3'), апостроф означает, что любой символ слова может быть искажён помехой в канале передачи.

В декодере в режиме исправления ошибок строится последовательность:

s1 = k1' i1' i2' i3';

s2 = k2' i2' i3' i4';

s3 = k3' i1' i2' i4'.

Трёхсимвольная последовательность (s1, s2, s3) называется синдромом S.

Синдром S = (s1, s2, s3) представляет собой сочетание результатов проверки на чётность соответствующих символов кодовой группы и характеризует определённую конфигурацию ошибок (шумовой вектор).

Число возможных синдромов определяется выражением: S = 2k.

Рис. 16.1. Кодер простого (7, 4) – кода Хемминга

Рис. 16.2. Декодер простого (7, 4) – кода Хемминга

При числе проверочных символов k = 3 имеется восемь возможных синдромов (23 = 8). Нулевой синдром (000) указывает на то, что ошибки при приёме отсутствуют или не обнаружены. Всякому ненулевому синдрому соответствует определённая конфигурация ошибок, которая и исправляется. Классические коды Хемминга имеют число синдромов, точно равное их необходимому числу, позволяют исправить все однократные ошибки в любом информативном и проверочном символах и включают один нулевой синдром. Такие коды называются плотноупакованными.

Усечённые коды являются неплотноупакованными, так как число синдромов у них превышает необходимое. Так, в коде (9,5) при четырёх проверочных символах число синдромов будет равно 24 =16, в то время как необходимо всего 10. Лишние 6 синдромов свидетельствуют о неполной упаковке кода (9,5). Для рассматриваемого кода (7,4) в таблице 16.1 представлены ненулевые синдромы и соответствующие конфигурации ошибок.

Таблица 16.1

Синдром

001

010

011

100

101

110

111

Конфигурация ошибок

0000001

0000010

0001000

0000100

1000000

0010000

0100000

Ошибка в символе

k3

k2

i4

k1

i1

i3

i2

Таким образом, код (7,4) позволяет исправить все одиночные ошибки. Простая проверка показывает, что каждая из ошибок имеет свой единственный синдром. При этом возможно создание такого цифрового корректора ошибок (дешифратора синдрома), который по соответствующему синдрому исправляет соответствующий символ в принятой кодовой группе.