
- •Національний авіаційний університет
- •Теорія інформації та кодування – 2 Завадостійке кодування. Двійкові та узагальнені завадостійкі коди
- •Лекція № 3 − “Завадостійке кодування. Двійкові та узагальнені завадостійкі коди”. В лекції будуть розглянуті наступні учбові питання:
- •Код Хеммінга
- •Циклічні коди. Класичне визначення
- •Модифіковані циклічні коди
- •Узагальнені завадостійкі коди. Контрольне додавання
- •Узагальнені завадостійкі коди. Лишково - матричні коди
Національний авіаційний університет
Лекція № 3
Теорія інформації та кодування – 2 Завадостійке кодування. Двійкові та узагальнені завадостійкі коди
2014
Вступ
Лекція № 3 − “Завадостійке кодування. Двійкові та узагальнені завадостійкі коди”. В лекції будуть розглянуті наступні учбові питання:
1. Код Хеммінга 3
1. Код Хеммінга 3
2. Циклічні коди. Класичне визначення 9
2. Циклічні коди. Класичне визначення 9
3. Модифіковані циклічні коди 16
3. Модифіковані циклічні коди 16
4. Узагальнені завадостійкі коди. Контрольне додавання 20
4. Узагальнені завадостійкі коди. Контрольне додавання 20
5. Узагальнені завадостійкі коди. Лишково - матричні коди 22
5. Узагальнені завадостійкі коди. Лишково - матричні коди 22
Код Хеммінга
Найвідоміші з кодів, що самоконтролюються і самокоректуються, – коди Хеммінга. Побудовані вони стосовно двійкової системи числення.
Для побудови коду, що виявляє спотворення, достатньо мати один контрольний розряд (код з перевіркою на парність). Але при цьому ми не одержуємо ніяких вказівок про те, в якому саме розряді відбулася помилка, і, отже, не маємо нагоди виправити її. Залишаються непоміченими спотворення, що виникли в парному числі розрядів.
Коди Хеммінга призначені для виправлення одиночних спотворень і мають, зрозуміло, більшу надмірність, ніж коди з перевіркою на парність. У такому коді n-значне число має m інформаційних і k контрольних розрядів. При кодуванні формуються k контрольних розрядів, кожний з яких є ознакою парності для певної групи інформаційних знаків базового кодового слова.
Код Хеммінга представляє собою блочний код, який дозволяє виявити і виправити помилково переданий біт в межах переданого блоку. Звичайно код Хеммінга характеризується двома цілими числами (n, m), наприклад, (11, 7). Такий запис говорить, що при передачі 7-бітного коду використовується 4 контрольних біта (k = 11 – 7 = 4).
При цьому приймається наступна нумерація біт (знаків коду): всі біти кодової комбінації одержують номери, починаючи з 1, справа наліво (варто нагадати, що в двійковій системі числення біти нумеруються з 0 справа наліво); контрольними (перевірочними) є біти з номерами 1, 2, 4, 8 і т.д. – всі інші є інформаційними. При цьому при формуванні коду Хеммінга для наочності при кодуванні чи декодуванні інформаційні та контрольні розряди зручно представляти записаними в деякий шаблон чи таблицю. Наприклад, для семизначної двійкової послідовності 1110011:
-
Таблица 1
Позиция бита
11
10
9
8
7
6
5
4
3
2
1
Значение бита
1
1
1
*
0
0
1
*
1
*
*
Код номера
позиції
1
1
1
1
0
0
0
0
0
0
0
0
0
0
0
1
1
1
1
0
0
0
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
0
1
0
1
В цій таблиці невизначені спочатку при кодуванні значення контрольних символів помічені зірочкою (*). Нагадаємо, що при використанні коду Хеммінга для передачі семирозрядних повідомлень потрібно 4 надлишкових символи (k log2 (n + 1), k 4), тобто слід використовувати код (11, 7).
Розглянемо історично перший, алгоритм із використанням k послідовних кроків (перевірок), кожна із яких забезпечує обчислення суми по модулю 2 груп символів, номери яких вибираються за певними правилами.
Щоб число в синдромі спотворень указувало номер позиції помилкового розряду, групи для перевірки вибираються за правилом:
-
I гр.:
:
всі непарні позиції, включаючи і позиції контрольного розряду, тобто позиції, в першому молодшому розряді яких стоїть 1.
II гр.:
:
всі позиції, номери яких в двійковому представленні мають 1 в другому розряді справа (наприклад, 2, 3, 6, 7, 10) і т.д.
III гр.
:
розряди, що мають "1" в третьому розряді справа, і т.д.
Примітка 1: У кожний з контрольних розрядів при побудові коду Хеммінга заноситься таке значення, щоб загальне число одиниць в його контрольній сумі із урахуванням контрольного було парним. Тобто, для (n, m) − коду Хеммінга перевірочні символи визначаються із перевірочних рівнянь:
де
− перевірочні символи.
При перевірці наявності спотворень за тими ж правилами, що розглянуті вище, розраховуються так звані елементи синдрому спотворень Si. Але при розрахунку елементів синдрому спотворень використовуються і сформовані раніше перевірочні елементи. Тобто, елементи синдрому визначаються з виразів (синдромних рівнянь):
Перевірочні рівняння використовуються для побудови кодера, а синдромні − декодера коду Хеммінга.
Приклад 1. Хай передається семизначна двійкова послідовність 1110011. Як уже визначено вище, кількість перевірочних символів k = 4 та, відповідно, загальна довжина коду n = 11 (див. табл. 1). Тоді позиції контрольних біт та позиції, що перевіряються, у відповідних перевірках надано в (табл. 2).
-
Таблица 1
Позиція біт
11
10
9
8
7
6
5
4
3
2
1
Значення біт
1
1
1
*
0
0
1
*
1
*
*
Таблиця 2. Формування контрольних груп
-
Номер
перевірки
Позиція
контрольного
біту
Позиції, що перевіряються
1
1
1, 3, 5, 7, 9, 11
2
2
2, 3, 6, 7, 10, 11
3
4
4, 5, 6, 7
4
8
8, 9, 10, 11
Отже, значення контрольних біт визначимо із системи перевірочних рівнянь:
Отже контрольна сума та значення відповідних контрольних символів дорівнюють 1110, а таблиця 1 набуде вигляду (табл. 3):
-
Таблица 3
Позиція біт
11
10
9
8
7
6
5
4
3
2
1
Значення біт
1
1
1
1
0
0
1
1
1
1
0
Нехай при передаванні спотворень символів не відбулося. Тоді система синдромних рівнянь набуде вигляду:
Отже контрольна сума та значення відповідних символів синдрому дорівнюють 0000, що свідчить про відсутність спотворень.
Тепер розглянемо два випадки спотворень в одному з біт посилки, наприклад в біті 7 (1 замість 0) і в біті 5 (0 замість 1). Здійснимо декодування для обох випадків (таблиці 4).
-
Таблица 4
Позиція біт
11
10
9
8
7
6
5
4
3
2
1
Значення біт (1)
1
1
1
1
1
0
1
1
1
1
0
Значення біт (2)
1
1
1
1
0
0
0
1
1
1
0
Тоді система синдромних рівнянь для першого випадку набуде вигляду:
Отже контрольна сума та значення відповідних символів синдрому дорівнюють 0111, що свідчить про наявність спотворення у біті із номером 7.
Система синдромних рівнянь для другого випадку набуде вигляду:
Отже контрольна сума та значення відповідних символів синдрому дорівнюють 0101, що свідчить про наявність спотворення у біті із номером 5.
Таким чином, застосування коду Хеммінга дозволило виявити як наявність так і місце спотворення.
Оскільки у двійковому коді символи можуть мати значення 0 чи 1, то у другому алгоритмі операція кодування (а в подальшому і декодування) перетворюється на додавання кодів позицій ненульових біт. Контрольне додавання здійснюється шляхом виконання операції порозрядного додавання по модулю 2 над кодами номерів ненульових бітів. У випадку послідовності за таблицею 1 – це коди біт із номерами: 11, 10, 9, 5 і 3.
Обчислимо контрольну суму (табл. 5):
-
Таблица 5
Номери ненульових біт
Коди їх номерів
11
1011
10
1010
09
1001
05
0101
03
0011
Контр. Σ
1110
Таким чином, приймач одержить код (табл. 6):
-
Таблица 6
Позиція біт
11
10
9
8
7
6
5
4
3
2
1
Значення біт
1
1
1
1
0
0
1
1
1
1
0
Значення біт за табл. 3
1
1
1
1
0
0
1
1
1
1
0
Порівнюючи значення біт, одержаних за цим алгоритмом та обрахованих раніше за табл. 3, упевнюємося в їх ідентичності.
Для перевірки правильності формування контрольних символів здійснимо декодування, для чого, згідно із уже визначеним алгоритмом, знову знайдемо суму кодів номерів ненульових бітів, включаючи контрольні (табл. 7), и одержимо нуль, що свідчить про відсутність спотворень:
-
Таблица 7
Номери ненульових біт
Коди їх номерів
11
1011
10
1010
09
1001
08
1000
05
0101
04
0100
03
0011
02
0010
Контр. Σ
0000
Ну а тепер знову розглянемо два випадки спотворень в одному з біт посилки, наприклад в біті 7 (1 замість 0) і в біті 5 (0 замість 1). Здійснимо декодування для обох випадків (таблиця 8).
Звернемо увагу, що в обох випадках при декодуванні контрольна сума дорівнює позиції біта, переданого зі спотворенням. Тепер для його виправлення досить інвертувати біт, номер якого вказаний у контрольній сумі.
-
Таблица 8
Спотворено біт № 7
11
1011
10
1010
09
1001
08
1000
07
0111
05
0101
04
0100
03
0011
02
0010
Σ
0111
Спотворено біт № 5
11
1011
10
1010
09
1001
08
1000
04
0100
03
0011
02
0010
Σ
0101
Зрозуміло, що якщо при передачі буде спотворено більш ніж один біт, код Хеммінга при даній надмірності виявиться даремним.