Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
кодирования.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
12.08 Mб
Скачать

1.4. Корректирующие коды Хемминга

Построение кодов Хемминга базируется на принципе проверки на четность веса W (числа единичных символов) в информационной груп- пе кодового блока.

Поясним идею проверки на четность на примере простейшего кор- ректирующего кода, который так и называется кодом с проверкой на четность или кодом с проверкой по паритету (равенству).

В таком коде к кодовым комбинациям безызбыточного первичного двоичного k-разрядного кода добавляется один дополнительный разряд (символ проверки на четность, называемый проверочным, или конт- рольным). Если число символов 1 исходной кодовой комбинации чет- ное, то в дополнительном разряде формируют контрольный символ 0, а если число символов 1 нечетное, то в дополнительном разряде форми- руют символ 1. В результате общее число символов 1 в любой переда- ваемой кодовой комбинации всегда будет четным.

Таким образом, правило формирования проверочного символа сво- дится к следующему:

r1 = i1 i2 ... ik ,

где i – соответствующий информационный символ (0 или 1); k – общее их число а под операцией "" здесь и далее понимается сложение по mod 2. Очевидно, что добавление дополнительного разряда увеличива- ет общее число возможных комбинаций вдвое по сравнению с числом комбинаций исходного первичного кода, а условие четности разделяет все комбинации на разрешенные и неразрешенные. Код с проверкой на четность позволяет обнаруживать одиночную ошибку при приеме кодо- вой комбинации, так как такая ошибка нарушает условие четности, пе- реводя разрешенную комбинацию в запрещенную.

Критерием правильности принятой комбинации является равенство нулю результата S суммирования по mod 2 всех n символов кода, вклю-

чая проверочный символ r1. При наличии одиночной ошибки S прини- мает значение 1:

S = r1 i1 i2 ... ik = 0 – ошибки нет,

, ,

n

= 1 – однократная ошибка.

Этот код является (k +1, k)-кодом, или (n, n–1)-кодом. Минимальное расстояние кода равно двум (dmin = 2), и, следовательно, никакие ошиб- ки не могут быть исправлены. Простой код с проверкой на четность

может использоваться только для обнаружения (но не исправления) од- нократных ошибок.

Увеличивая число дополнительных проверочных разрядов и форми- руя по определенным правилам проверочные символы r, равные 0 или

1, можно усилить корректирующие свойства кода так, чтобы он позво- лял не только обнаруживать, но и исправлять ошибки. На этом и осно- вано построение кодов Хемминга.

Коды Хемминга позволяют исправлять одиночную ошибку, с помощью непосредственного описания. Для каждого числа проверочных символов r = 3, 4, 5… существует классический код Хемминга с маркировкой

(n, k) = (2r–1, 2r–1 – r) , (3.20)

т. е. (7,4), (15,11), (31,26) …

При других значениях числа информационных символов k полу- чаются так называемые усеченные (укороченные) коды Хемминга. Так, для Международного телеграфного кода МТК-2 , имеющего

5 информационных символов, потребуется использование коррек- тирующего кода (9,5), являющегося усеченным от классического кода Хемминга (15,11), так как число символов в этом коде уменьшается (укорачивается) на 6. Для примера рассмотрим классический код Хемминга (7,4), который можно сформировать и описать с помо- щью кодера, представленного на рис. 3.2. В простейшем варианте при заданных четырех (k = 4) информационных символах (i1, i2, i3,

i4) будем полагать, что они сгруппированы в начале кодового сло-

ва, хотя это и не обязательно. Дополним эти информационные сим-

волы тремя проверочными символами (r = 3), задавая их следую- щими равенствами проверки на четно сть, которые определяются соответствующими алгоритмами [3,5]:

r1 = i1  i2  i3; i2 = i2  i3  i4; r3 = i1  i2  i4,

где знак  означает сложение по модулю 2.

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

Таблица 3.1

Кодовые слова (7 ,4) – кода Хемминга

На рис. 3.3 приведена схема декодера для (7,4) – кода Хем-

минга, на вход которого посту-

i1

i2

i3

i4

r1

r2

r3

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

0

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

к = 4

r = 3

пает кодовое слово

V i1, i2 , i3 , i4 , r1, r2, r3 .

Апостроф означает, что лю- бой символ слова может быть искажен помехой в канале пе- редачи.

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

s1 r1 i1 i2 i3 ; s2 r2 i2 i3 i4 ; s3 r3 i1 i2 i4 .

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

используется и в медицине, где он обозначает сочетание призна-

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

ет определенную конфигурацию ошибок (шумовой вектор).

Число возможных синдромов определяется выражением

S = 2r. (3.21)

4-символьное информационное слово

7-символьное кодовое слово

i

1

От ИС i

2

i

1

i

2 К моду-

i3 i

3

4

i i

4

лятору

Сумматор по модулю 2

Сумматор по модулю 2

r

i i , i

1

1 + 2 + 3 r

2

r

3

2 + 3 +

i i , i4

Сумматор по модулю 2

i + i , + i

1 2 4

Рис. 3.2

7-символьное кодовое слово

4-символьное информационное слово

+

i

1

i2 +

i

1

i2 К ПС

i

3

От демо- i

дулятора 4

r

1

r

Сумматор по модулю 2

Ошибка в i , i , i ,

+ i3

+ i4

Цифровой корректор

Сумматор по модулю 2

1

2 1 2 3

ошибок

r

3

Сумматор по модулю 2

или r

2

Ошибка в i2, i3, i4, r

Сумматор по модулю 2

Ошибка в i1, i2, i4, или r3

Рис. 3.3

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

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

Для рассматриваемого кода (7,4) в табл. 3.2 представлены ненулевые синдромы и соответствующие конфигурации ошибок.

Таблица 3.2

Синдром

001

010

011

100

101

110

111

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

0000001

0000010

0001000

0000100

1000000

0010000

0100000

Ошибка

в символе

r3

r2

i4

r1

i1

i3

i2

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

можно на выход декодера (рис. 3.3) не выводить. Две или более ошибок

превышают возможности корректирующего кода Хемминга, и декодер будет ошибаться. Это означает, что он будет вносить неправильные ис- правления и выдавать искаженные информационные символы.

Идея построения подобного корректирующего кода, естественно, не меняется при перестановке позиций символов в кодовых словах. Все такие варианты также называются (7,4)-кодами Хемминга.

2. ПОРЯДОК ВЫПОЛНЕНИЯ ЛАБОРАТОРНОЙ РАБОТЫ

В лабораторной работе исследуется усеченный код Хемминга (9,5). Длина кодового слова n = 9 разрядов, информационная часть содержит k = 5 разрядов, количество проверочных разрядов r = 4. Соответствую- щие алгоритмы проверки на четность рассматриваемого кода имеют вид

r1 = i2

r2 = i1

r3 = i2

i,3

i3

i4

 ,i4

i5

(3.22)

r4 = i1

i i,2 5

а алгоритм вычисления символов синдрома:

s1 = i2

s2 = i1

i3

i3

, r1

i4

, r2

s3 = i2

i4

i5

r3

(3.23)

s4 = i1

i2

i5 . r4

Данный код имеет минимальное кодовое расстояние dmin= 3, следо- вательно, теоретически он исправляет все однократные ошибки. Все одно- и двухкратные ошибки обнаруживаются.

Для выполнения лабораторной работы необходимо выбрать соответ- ствующую позицию в основном меню и нажать клавишу < ENTER >, которую в дальнейшем необходимо нажимать при переходе от пункта к пункту.

1. Начинать выполнение лабораторной работы следует при появле- нии в нижней строке экрана указания:

< Введите кодируемые символы >

2. В ответ на это указание необходимо ввести от одного до пяти алфавитно – цифровых символов, допустимых для кода МТК-2. Число введенных символов должно быть равно числу членов бригады. Они автоматически закодируются безызбыточным кодом МТК-2, кодовые сло- ва которого печатаются на экране. Нажатие клавиши < ESC > означает отказ от выполнения работы.

3. Кодовые слова безызбыточного кода МТК-2 необходимо закодиро- вать корректирующим кодом (9,5), руководствуясь алгоритмом (3.22).

Информационный вектор i, очевидно, представляет собой кодовое сло- во кода МТК-2. Полученные векторы x кода (9,5) (кодовые слова) не- обходимо ввести, набрав их на клавиатуре.

4. В кодовые слова x кода (9,5) автоматически вносятся однократ- ные ошибки, в результате чего формируются некоторые векторы y, не совпадающие с соответствующими векторами x.

Необходимо, пользуясь алгоритмом (3.23), определить синдром S и ввести его символы с клавиатуры. В соответствии с вычисленным век- тором S в таблице декодирования автоматически отыскиваются шумо- вые векторы z и отображаются на экране. Необходимо проанализиро- вать их и убедиться в том, что ненулевая позиция в этих векторах соот- ветствует искаженным разрядам в векторах y, т. е. соотношение x = z  y справедливо.

5. Далее, в кодовые слова x кода (9,5) автоматически вносятся двух- кратные ошибки, т. е. вновь формируются векторы y, не равные соот- ветствующим векторам x. Необходимо повторить действия предыдуще- го пункта. При анализе шумовых векторов z необходимо учитывать, что таблица декодирования исследуемого в лабораторной работе кода со- держит только синдромы, соответствующие однократным ошибкам zi.

Поэтому возможны две ситуации:

вычисленному синдрому Si в таблице не соответствует никакой шу- мовой вектор zi. В этом случае на экране будут напечатаны символы (*******).

вычисленному синдрому Si в таблице соответствует некоторый век- тор zi. В этом случае необходимо убедиться в том, что он неправильно отображает реальную конфигурацию ошибок.

Рассмотрим пример, поясняющий ход выполняемых операций. Пусть выбран и введен Ф, ему соответствует кодовое слово кода МТК-

2: i = 10110. Таким образом, на экране отобразится следующая ин- формация:

Символ Код МТК-2

Ф 10110

В результате применения алгоритмов (3.22) получим вектор x кор- ректирующего кода (9,5), который и необходимо ввести.

Таким образом, получим вектор x = (101101111), и изображение на экране примет вид

Символ

Код МТК-2

Код (9,5)

Ф

10110

01101111

Далее, в вектор x вносится однократная ошибка, т. е. получается вектор y, не совпадающий с x, например: y = (101001111), и на экране будет следующее изображение:

Символ

Код МТК-2

Код (9,5)

Искажения

Ф

10110

101101111

101001111

Декодируем вектор y, пользуясь алгоритмом (3.23), т. е. определя- ем синдром S, который необходимо ввести. Вычисленный синдром S

= 0110.

Полученный синдром вводится в приведенную выше таблицу, кото- рая примет вид

имвол

Код МТК-2

Код (9,5)

Искажения

Синдром

Ф

10110

101101111

101001111

С

Вычисленному синдрому соответ ствует шумовой вектор Z = (000100000), т. е. ошибка произошла в шестом разряде (при счете разрядов справа – налево) исходного вектора x. На экране появится следующее изображение:

Шумовой

имвол

Код МТК-2

Код (9,5)

Искажение

Синдром

вектор

Ф

10110

101101111

101001111

0110

000100000

С

Далее, в вектор x вносится двухкратная ошибка, т. е. опять получа- ется вектор y, не совпадающий с x, например: y = (100001111). На экра- не будет предъявлена следующая таблица:

Символ

Код МТК-2

Код (9,5)

Искажение

Ф

10110

101101111

10001111

Вновь декодируем вектор y, пользуясь алгоритмом (3.23), т. е. опре- деляем синдром S, который необходимо ввести.

Полученный синдром:

имвол

Код МТК-2

Код (9,5)

Искажение

Синдром

Ф

10110

101101111

100001111

1010

С

Таким образом, в результате декодирования получен ненулевой син- дром. Однако в таблице декодирования ему может не соответствовать никакой шумовой вектор, поэтому изображение на экране примет вид

Шумовой

имвол

Код МТК-2

Код (9,5)

Искажение

Синдром

вектор

Ф

10110

101101111

100001111

1010

********

С

Код (9,5) с dmin = 3 не справляется с исправлением двукратной ошибки. На этом выполнение лабораторной работы заканчивается. Представ- ление отчета не требуется. Факт выполнения бригадой лабораторной

работы, включая количество попыток по пунктам фиксируется в спе- циальном файле на диске.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]