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

4.3 Код Хеммінга

Завадостійкий код, відомий як код Хеммінга, було створено, виходячи із таких передумов:

  • повинні виправлятися одиночні помилки, що мають характер «білого шуму»;

  • перевірки на парність, кількість яких позначимо m, мають бути незалежними, тобто жодна сума одних перевірок не повинна співпадати з якоюсь іншою перевіркою;

  • Для прикладу розглянемо довільний код 100101011, в якому позиції пронумеровані з одиниці зліва направо, а також такі три перевірки цього коду на парність: перша - для позицій 1, 2, 5, 7 (результат 1), друга - для позицій 5, 7, 8, 9 (результат 0) і третя - для позицій 1, 2, 8, 9 (результат 1). Такі перевірки є залежними між собою, оскільки, незалежно від коду, будь-які дві перевірки з цих трьох однозначно визначають результат третьої. Отже, одна з цих перевірок є зайвою.

  • синдром довжиною m повинен розрізняти n+1 ситуацію, в тому числі, відсутність помилки, а також положення помилки в одній із будь-яких n позицій коду;

  • Ця умова приводить до нерівності 2m ≥ n + 1, з якої можна визначити мінімально допустиме значення m при відомій кількості розрядів двійкового повідомлення k, а саме: n = m + k, звідки 2m ≥ m + k + 1. Наприклад, якщо кількість розрядів повідомлення k = 4, то 2m ≥ m + 5, звідки найменше допустиме m=3. При k = 3 маємо 2m ≥ m + 4 і теж саме m = 3. При k = 5 маємо 2m ≥ m + 6 і m = 4.

  • позиції двійкового коду вважають пронумерованими від 1 до n зліва направо і серед них номери позицій для розміщення перевірок на парність вибирають послідовно із ряду 1, 2, 4, 8, 16 і т.д.; в принципі ці номери можуть бути вибрані довільними, але такий ряд вибрано із міркувань зручності обчислень перевірочних позицій; решта позицій є інформаційними;

Наприклад, якщо m=2, то перевірочними будуть 1 і 2 позиції. При m=3 перевірочними позиціями будуть 1, 2 і 4. При m=4 перевірочними позиціями будуть 1, 2, 4 і 8. Чисельне значення синдрому повинно співпадати з номером позиції, в якій виникла помилка, а нульове значення синдрому повинно означати відсутність помилки.

Для забезпечення такої властивості синдрому використовують двійкові подання номерів позицій

Номер позиції

Двійкове подання

Номер позиції

Двійкове подання

Номер позиції

Двійкове подання

1

0001

6

0110

11

1011

2

0010

7

0111

12

1100

3

0011

8

1000

13

1101

4

0100

9

1001

14

1110

5

0101

10

1010

15

1111

Першою перевіркою на парність будемо утворювати перше перевірочне значення і наймолодший розряд синдрому. Для цього в першу перевірку слід включити позиції, номери яких мають 1 теж в наймолодших розрядах. Таким чином, в першу перевірку на парність входять позиції 1, 3, 5, 7, 9, 11, 13, 15.

Другою перевіркою на парність будемо утворювати друге перевірочне значення і наступний за наймолодшим розряд синдрому. Для цього в другу перевірку слід включити позиції, номери яких мають 1 теж в наступних за наймолодшими розрядах. Отже, в другу перевірку на парність мають входити позиції 2, 3, 6, 7, 10, 11, 14, 15.

Аналогічно, в третю перевірку на парність мають входити позиції 4, 5, 6, 7, 12, 13, 14, 15, в четверту - позиції 8, 9, 10, 11, 12, 13, 14, 15 і т.д.

Приклад 1. Побудуємо код Хеммінга для 4-розрядного двійкового повідомлення 1011. При цьому n=7, m=3, перевірочні позиції 1, 2, 4.

Позиції

1 2 3 4 5 6 7

Повідомлення

_ _ 1 _ 0 1 1

Перша позиція коду (1, 3, 5, 7)

0 _ 1 _ 0 1 1

Друга позиція коду (2, 3, 6, 7)

0 1 1 _ 0 1 1

Четверта позиція коду (4, 5, 6, 7)

0 1 1 0 0 1 1

Приклад 2. Код повідомлення з помилкою має вигляд 0100011. Застосуємо перевірки на парність за методикою Хеммінга для виправлення помилки.

Позиції

1 2 3 4 5 6 7

Код повідомлення

0 1 0 0 0 1 1

Синдром

_ _ _

Перша перевірка (1, 3, 5, 7)

_ _ 1

Друга перевірка (2, 3, 6, 7)

_ 1 1

Третя перевірка (4, 5, 6, 7)

0 1 1

Утворений синдром відповідає номеру позиції 3. Тому треба значення третьої позиції коду повідомлення змінити на протилежне. Код повідомлення після виправлення помилки має вигляд 0110011. Відкидаючи перевірочні позиції, отримуємо правильне повідомлення 1011.

Відмітимо, що разом з інформаційними позиціями захищеними виявляються також і перевірочні позиції.

Приклад 3. Код повідомлення з помилкою має вигляд 0111011. Застосуємо перевірки на парність за методикою Хеммінга для виправлення помилки.

Позиції

1 2 3 4 5 6 7

Код повідомлення

0 1 1 1 0 1 1

Синдром

_ _ _

Перша перевірка (1, 3, 5, 7)

_ _ 0

Друга перевірка (2, 3, 6, 7)

_ 0 0

Третя перевірка (4, 5, 6, 7)

1 0 0

Утворений синдром відповідає номеру позиції 4, яка є перевірочною. У виправленні помилки потреби немає. Правильне повідомлення 1011.

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