
Національний авіаційний університет
Лекція № 4.7
Теорія інформації та кодування
Узагальнені завадостійкі коди
2013
Вступ
Лекція № 4.7 − “Узагальнені завадостійкі коди”. В лекції будуть розглянуті наступні учбові питання:
1 Узагальнені завадостійкі коди 3
2 Контрольне додавання 4
3 Лишково - Хеммінгові і лишково-матричні коди 7
4 Загальні відомості щодо теорії лишкових класів 11
1Узагальнені завадостійкі коди
Під узагальненими розумітимемо коди, призначені для виявлення (виявлення і виправлення) пакетних спотворень з кратністю b, в яких використовуються алгоритми кодування і декодування, аналогічні відповідним алгоритмам двійкових кодів, але по відношенню до узагальненого b − розрядного символу.
Для побудови цих кодів початкова кодова послідовність І1 І2 …ІM розбивається на m = M/b груп з розрядністю b, усередині яких групуються помилки:
І1………. Іb, Іb+1………І2b ........ Іm-b+1 ……ІM
1 – й пакет 2 – й пакет n – й пакет
Двійкові символи, що входять в один пакет, розглядаються як b значний символ, який може приймати будь-яке із s значень від 0 до 2b – 1, де
s = 2b.
Як буде показано нижче операція над узагальненими символами виконуються до деякому модулю, тобто шукається лишок або найменший залишок від розподілу результату операції на деякий модуль. Це дало можливість для відмінності відповідних узагальнених кодів від двійкових ввести в їх назву слово “лишок”, тобто говорити про лишково Хеммінгових (ЛХ), лишково матричні (ЛМ), лишково рекурентні (ЛР) коди. Слід зазначити, що лишкові – циклічні коди відомі під назвою кодів Ріда-Соломона – на ім’я авторів цих кодів.
2Контрольне додавання
Контрольне додавання є одним з найпоширеніших методів контролю цілісності інформаційних об’єктів (виявлення спотворень в цих об’єктах).
При кодуванні початкові базові кодові слова розбиваються на s b – розрядних узагальнених символів і записуються у вигляді α1, α2,... αs, де αi ≤ 2b – 1 а m = bs. Потім здійснюється додавання цих символів за певними правилами, наприклад, додавання по модулю (найчастіше використовується їх порозрядне додавання по модулю 2). Символи (у загальному випадку k) ознаки цілісності (контрольні ознаки) дописуються до початкового коду, за рахунок чого утворюється n − символьне БКС (n = m + k).
При декодуванні також здійснюється додавання m символів за тими ж правилами і знов обчислюються символи ознаки цілісності (контрольної ознаки) для прийнятого (зчитаного) інформаційного об’єкту. Знов розрахована ознака цілісності порівнюється з прийнятою (зчитаною) ознакою цілісності. У разі їх збігу робіться висновок про відсутність спотворень, інакше — про їх наявність.
Приклад. Нехай кодуванню підлягає послідовність А = 100111001010, в якій слід забезпечити виявлення (виявлення і виправлення) пакетних спотворень з кратністю b = 4, s = 24 =16. Тоді така послідовність може бути представленою у вигляді:
І1………. І4, І5……І8 І9 ……І12
1 – й пакет 2 – й пакет 3 – й пакет
чи у вигляді: А = 1011.1100.1010, де крапками для наочності відокремлені чотирірозрядні пакети. Тоді процес кодування може бути представленим у вигляді:
порозрядне
додавання по
mod2 додавання
по mod16
1011 11
1100
→
12
1010 10
1101→
{11+12+10}16=
0001
Тоді в канал буде переданою послідовність А = 101111001010.1101 при виконанні операції порозрядного додавання по модулю 2, чи 101111001010.0001 при виконанні операції додавання по модулю s = 16, де крапками для наочності відокремлені чотирірозрядні надлишкові пакети.
Нехай на приймальному
боці одержана послідовність, яка має
спотворення
= 011111001010.1101 (подвійне спотворення у
першому пакеті). Тоді, при
декодуванні
(за тим же алгоритмом, що і при кодуванні)
одержимо:
0
111
7
1100 →12
1010 10
0001 → {7+12+10}16= 1101
1101 → 0001
1100 ≠ 0 (mod2) 1110 ≠ 0 (mod16)
Порівняння одержаних контрольних символів із переданими 1101→0001 при виконанні операції порозрядного додавання по модулю 2, чи 0001→1101 при виконанні операції додавання по модулю s = 16, показує їх відмінність, що свідчить про наявність у прийнятій послідовності спотворення.
Приклад розрахунку контрольної суми в протоколах ТСР/ІР
Перед розрахунком контрольної суми в протоколах ТСР/ІР повідомлення доповнюється в кінці нульовими бітами до довжини, кратної 16 бітам (додаткові нульові біти не відправляються разом з повідомленням). Початкове значення контрольної суми у час розрахунку контрольної суми повідомлення, що відправляється, приймається за нуль.
Для розрахунку контрольної суми уся інформація, для якої розраховується контрольна сума, розбивається на слова (1 слово = 2 байти (2 октети) = 16 біт). Потім розраховується порозрядне доповнення до одиниці суми всіх слів з порозрядним доповненням. Результат записується у відповідне поле заголовку.
У тому випадку, якщо контрольна сума вийшла рівною нулю, поле заповнюють одиницями. Якщо контрольну суму не потрібно розраховувати, значення поля залишають нульовим.
Для прикладу розрахуємо контрольну суму декількох 16-бітових слів: 0x398А, 0xF802, 0x14B2, 0xC281. Нагадаємо, що тут, як і в деяких мовах програмування позначка “0х” є префіксом, ознакою того, що далі записане число в шістьнадцатьковій системі числення. Знаходимо їх суму з переносом старшої (п’ятої) тетради (в разі її наявності) до молодшої та доповненням останнього біта молодшої тетради:
0x 3 9 8 A + 0x F 8 0 2 = 0011 1001 1000 1010 + 1111 1000 0000 0010 =
0011 1001 1000 1010
1111
1000 0000 0010
0001
0011
0001 1000 1100→
= 0001 0011 0001 1000 1100 → 0x 3 1 8 С → 0011 0001 1000 1101 = 0x 3 1 8 D
0x318D + 0x14B2 = 0011 0001 1000 1101 + 0001 0100 1011 0010 =
0011 0001 1000 1101
0001 0100 1011 0010
0000 0100 0110 0011 1111→
= 0000 0100 0110 0011 1111 = 0x0463F → 0x463F
0x463F + 0xC281 = 0100 0110 0011 1111 + 1100 0010 1000 0001 =
0100 0110 0011 1111
1100 0010 1000 0001
0001 0000 1000 1100 0000→
= 0001 0000 1000 1100 0000 → 0000 1000 1100 0001 →0x08C1
Тепер знаходимо порозрядне доповнення до одиниці отриманого результату:
0x08C1 = 0000 1000 1100 0001 → 1111 0111 0011 1110 = 0xF73E або, інакше - 0xFFFF - 0x08C1 = 0xF73E. Це і є шукана контрольна сума
При отриманні повідомлення одержувач рахує контрольну суму заново (уже з урахуванням контрольної суми), і, якщо в результаті вийде двійкове число з шістнадцяти одиниць (тобто 0xffff), то контрольна сума вважається такою, що збіглася, і повідомлення приймається.
Таблиця переводу чисел
0hex |
= |
0dec |
= |
0oct |
0 |
0 |
0 |
0 |
|
8hex |
= |
8dec |
= |
10oct |
1 |
0 |
0 |
0 |
1hex |
= |
1dec |
= |
1oct |
0 |
0 |
0 |
1 |
|
9hex |
= |
9dec |
= |
11oct |
1 |
0 |
0 |
1 |
2hex |
= |
2dec |
= |
2oct |
0 |
0 |
1 |
0 |
|
Ahex |
= |
10dec |
= |
12oct |
1 |
0 |
1 |
0 |
3hex |
= |
3dec |
= |
3oct |
0 |
0 |
1 |
1 |
|
Bhex |
= |
11dec |
= |
13oct |
1 |
0 |
1 |
1 |
4hex |
= |
4dec |
= |
4oct |
0 |
1 |
0 |
0 |
|
Chex |
= |
12dec |
= |
14oct |
1 |
1 |
0 |
0 |
5hex |
= |
5dec |
= |
5oct |
0 |
1 |
0 |
1 |
|
Dhex |
= |
13dec |
= |
15oct |
1 |
1 |
0 |
1 |
6hex |
= |
6dec |
= |
6oct |
0 |
1 |
1 |
0 |
|
Ehex |
= |
14dec |
= |
16oct |
1 |
1 |
1 |
0 |
7hex |
= |
7dec |
= |
7oct |
0 |
1 |
1 |
1 |
|
Fhex |
= |
15dec |
= |
17oct |
1 |
1 |
1 |
1 |