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

23

Національний авіаційний університет

Лекція № 3

Теорія інформації та кодування – 2 Завадостійке кодування. Двійкові та узагальнені завадостійкі коди

2014

Вступ

Лекція № 3 − “Завадостійке кодування. Двійкові та узагальнені завадостійкі коди”. В лекції будуть розглянуті наступні учбові питання:

1. Код Хеммінга 3

1. Код Хеммінга 3

2. Циклічні коди. Класичне визначення 9

2. Циклічні коди. Класичне визначення 9

3. Модифіковані циклічні коди 16

3. Модифіковані циклічні коди 16

4. Узагальнені завадостійкі коди. Контрольне додавання 20

4. Узагальнені завадостійкі коди. Контрольне додавання 20

5. Узагальнені завадостійкі коди. Лишково - матричні коди 22

5. Узагальнені завадостійкі коди. Лишково - матричні коди 22

  1. Код Хеммінга

Найвідоміші з кодів, що самоконтролюються і самокоректуються, – коди Хеммінга. Побудовані вони стосовно двійкової системи числення.

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

Коди Хеммінга призначені для виправлення одиночних спотворень і мають, зрозуміло, більшу надмірність, ніж коди з перевіркою на парність. У такому коді 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

Зрозуміло, що якщо при передачі буде спотворено більш ніж один біт, код Хеммінга при даній надмірності виявиться даремним.