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

Код Хеммінга

Подальшим розвитком паритетних кодів став код Хеммінга, призначений для корегування одиночних помилок. Найсуттєвішою перевагою методики Хеммінга є те, що, у випадку виникнення помилки в закодованому повідомленні, отримана в процесі декодування контрольна кодова комбінація безпосередньо вказує номер позиції помилкового розряду (незалежно від того, інформаційний це розряд чи доданий контрольний). Цей фактор в сукупності з простотою реалізації засобів кодування та декодування коду Хеммінга дозволяє розглядати запропоновану Хеммінгом методику як визначне досягнення в області перешкодостійкого кодування двійкових повідомлень.

Як і при кодуванні за парністю, значення контрольних розрядів для коду Хеммінга визначається таким чином, щоб сума одиниць в інформаційних розрядах та доданому контрольному розряді була парною, але при цьому код Хеммінга має ряд суттєвих відмінностей, а саме:

  • кількість контрольних розрядів коду Хеммінга залежить від розрядності інформаційного повідомлення, що кодується;

  • контрольні розряди коду Хеммінга розташовуються на фіксованих позиціях серед інформаційних розрядів;

  • при визначенні значення певного контрольного розряду аналізуються на парність не всі інформаційні розряди, а лише окремі розряди, які займають визначені позиції в кодовому слові.

Першим питанням, яке постає при формуванні коду Хеммінга, є питання визначення необхідної кількості контрольних розрядів та їх позицій в повідомленні, що кодується. Для визначення необхідної кількості контрольних розрядів можна скористатися формулами (5.5)-(5.8), але їх кількість може бути також визначена за наведеною нижче методикою, яка враховує особливості побудови коду Хеммінга і дозволяє сумістити процеси визначення кількості контрольних розрядів та їх позицій. Розглянемо зазначену методику.

Номера позицій, які призначаються для розміщення контрольних розрядів коду Хеммінга, визначаються значеннями 2n, де n – цілі невід’ємні числа. Таким чином ми отримуємо, що під контрольні розряди згідно з методикою Хеммінга відводяться позиції 20=1, 21=2, 22=4, 23=8 і т.д. У визначених таким чином позиціях коду Хеммінга інформаційні розряди знаходитись не можуть. Ті інформаційні розряди, що знаходились в зазначених позиціях до кодування, зсуваються в сторону старших розрядів (разом з старшими розрядами) на кількість позицій, необхідну для звільнення місця під контрольні розряди.

Кількість контрольних розрядів вважається достатньою в тому випадку, коли всі розряди на позиціях з номерами 2n (n=0,1,2,3...) є контрольними.

Приклад 7.1. Визначити позиції контрольних розрядів та їх кількість в коді Хеммінга, якщо повідомлення, що кодується, складається з трьох інформаційних розрядів.

Розв’язок.

Для наочності домовимось позначати інформаційні розряди літерою І, контрольні – літерою К, а номер позиції, яку займає певний розряд, зазначати у нижньому індексі літер. Представлене таким чином вихідне повідомлення буде мати вигляд:

І3 І2 І1

Згідно з методикою Хеммінга номери позицій контрольних розрядів визначаються як 2n (n=0,1,2,3...) і дорівнюють 1, 2, 4, 8,... Як видно, у вихідному повідомленні із зазначених позицій зайняті інформаційними розрядами позиції 1 та 2. Для їх звільнення необхідно зсунути всі інформаційні розряди повідомлення на дві позиції вліво. В результаті виконання операції зсуву отримуємо:

І5 І4 І3 К2 К1

Аналіз отриманого формату повідомлення дозволяє побачити, що в ньому інформаційним розрядом зайнята позиція 4 (22). Це означає, що розряди І4 та І5 необхідно зсунути вліво на одну позицію. Отримуємо:

І6 І5 К4 І3 К2 К1

Як видно, наведений формат повідомлення відповідає умові знаходження контрольних розрядів на позиціях 2n (n=0,1,2,3,...). Робимо висновок, що для кодування кодом Хеммінга повідомлення з трьох інформаційних розрядів до нього необхідно додати три контрольних розряди, при цьому контрольні розряди повинні розташовуватись на позиціях 1, 2, 4.

Наступним постає питання визначення позицій інформаційних розрядів, які аналізуються при розрахунку (методом доповнення до парності) значень кожного з контрольних розрядів.

Інформаційний розряд на позиції J враховується при розрахунку значення контрольного розряду на позиції L, якщо в двійковому коді значення J на позиції L стоїть 1.

Приклад 7.2. Закодувати кодом Хеммінга повідомлення 1001.

Розв’язок.

За аналогією з прикладом 7.1 визначаємо формат повідомлення:

І7 І6 І5 К4 І3 К2 К1

де І7=1, І6=0, І5=0, І3=1 (І7І6І5І3=1001).

Переведемо номери позицій в двійкову систему. Отримуємо:

710=1112 610=1102 510=1012 410=1002

310=0112 210=0102 110=0012

В позиції 1 значення розряду дорівнює 1 в комбінаціях 111, 101, 011, 001 (001 – позиція контрольного розряду, що розраховується). Тобто, значення контрольного розряду на позиції 1 обчислюється в нашому прикладі таким чином, щоб кількість одиниць на позиціях 1, 3, 5 та 7 була парною. Цю умову можна записати виразом:

І7  І5  І3  К1 = 0

Звідси отримуємо:

К1 = І7  І5  І3 = 1  0  1 = 0

В позиції 2 значення розряду дорівнює 1 в комбінаціях 111, 110, 011, 010 (010 – позиція контрольного розряду), тому для другого контрольного розряду отримуємо:

К2 = І7  І6  І3 = 1  0  1 = 0

Аналогічно для третього розряду:

К3 = І7  І6  І5 = 1  0  0 = 1

Таким чином, закодоване повідомлення буде мати вигляд: 1001100 (контрольні розряди підкреслено).

Перевірка повідомлень на наявність помилки та визначення місця її виникнення виконується повторним розрахунком значень контрольних розрядів, за результатами порівняння яких з отриманими фактично формується слово коду помилки. Розрядність слова коду помилки визначається кількістю контрольних розрядів в закодованому повідомлені, а значення розрядів цього слова повинні доповнювати відповідні інформаційні розряди та кодовий розряд отриманого повідомлення до парності (молодший розряд слова формується перевіркою молодшого контрольного розряду і т.д.)

Приклад 7.3. Повідомлення 1001100 отримане в результаті кодування кодом Хеммінга (див. приклад 7.2). Перевірити, чи відповідає слово коду помилки номеру позиції викривленого розряду для розрядів на позиціях 6 (інформаційний розряд) та 4 (контрольний розряд).

Розв’язок.

Перед тим, як перейти до перевірки повідомлень визначимо позиції контрольних розрядів в повідомленні. Номери позицій контрольних розрядів визначаються як 2n (n=0,1,2,3...) і дорівнюють 1, 2, 4, 8,... У нашому випадку в повідомлені присутні розряди на позиціях 1, 2 та 4, які і є контрольними.

З наведеного аналізу можна зробити висновок, що слово коду помилки повинне складатися з трьох розрядів, при чому перший розряд цього слова (позначимо його Е1) визначається відповідно до контрольного розряду на позиції 1; другий (Е2) – до контрольного розряду на позиції 2; третій (Е3) – до контрольного розряду на позиції 4.

Значення контрольного розряду (див. приклад 7.2) на позиції 4 визначається згідно з правилом контролю на парність інформаційних розрядів І7, І5, І3 та, відповідно, самого контрольного розряду К1:

І7  І5  І3  К1 = 0

Оскільки розряд слова коду помилки Е1 повинен доповнювати значення перелічених розрядів до парності, його значення можна розрахувати за формулою:

Е1 = І7  І5  І3  К1

Аналогічним чином для розрядів Е2 та Е3 отримуємо:

Е2 = І7  І6  І3  К2

Е3 = І7  І6  І5  К4

У випадку викривлення розряду на позиції 6 повідомлення 1001100 прийме вигляд 1101100. За отриманими формулами розрахуємо значення розрядів слова коду помилки:

Е1 = 1  0  1  0 = 0

Е2 = 1  1  1  0 = 1

Е3 = 1  1  0  1 = 1

Упорядкувавши розряди слова коду помилки (у вигляді Е3Е2Е1), отримуємо значення 110, що дорівнює 6 – номеру викривленого розряду.

У випадку викривлення розряду на позиції 4 повідомлення 1001100 прийме вигляд 1000100. Розраховуємо значення розрядів слова коду помилки:

Е1 = 1  0  1  0 = 0

Е2 = 1  0  1  0 = 0

Е3 = 1  0  0  0 = 1

Отримуємо код помилки 100, що дорівнює номеру викривленого розряду.

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