Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теор-информ.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2.58 Mб
Скачать

Порядок виконання роботи

1. Побудувати код Хеммінга по заданих даних (число інформаційних розрядів к).

2. Скласти систему рівнянь кодування для визначення перевірочних розрядів для коду Хеммінга по пункту 2.

3. Провести контроль виконання 1 і 2 пунктів зміною результату кодовання.

4. Завантажити програму HEMMING.

5. Ознайомитись з панеллю програми.

6. Ввести текст для кодування.

7. Виконати кодування методом Хеммінга.

8. Завантажити програму Sourse (IPK).

9. Ознайомитись з панеллю програми.

10. Ввести текст для кодування.

11. Виконати кодування методами контролем парності та Хеммінга.

12. Проаналізувати результат результати кодування обома методами.

Дані для кодування

Варіант

Одиночний символ

Блок символів

1

Е

1 4 9 С 3 5 B 0

2

1

1 F A 2 D E 5 8

3

5

7 8 0 1 A C F 0

4

А

4 2 9 E A 6 8 2

5

С

1 1 3 F A 2 8 4

6

3

A B 0 9 2 6 9 C

7

6

6 B 0 0 5 8 3 A

8

7

A D C 1 F 6 E 0

9

9

C 2 4 3 4 9 7 D

10

2

D 1 0 2 8 3 4 F

11

В

F 6 8 1 0 F E C

12

8

1 5 8 4 7 E A D

13

F

D F 5 8 3 7 9 0

14

4

0 2 8 D C E A F

15

A

3 7 6 D C 9 8 1

16

7

D E 5 4 A 3 C 9

17

9

8 D E 8 4 9 7 3

18

1

9 0 1 F E D A C

19

5

6 8 3 A 9 D 0 E

20

F

5 A E 6 8 D 2 C

21

D

0 1 5 9 6 A F E

22

C

0 1 0 E C 8 9 6

23

E

A C 6 1 2 7 9 3

24

F

F D 5 8 1 0 E A

25

6

A A A F E C 2 8

Контрольні запитання

  1. Яка мінімальна кодова відстань кодів Хеммінга?

  2. Які особливості побудови коду Хеммінга?

  3. Які особливості побудови коду з перевіркою на парність?

  4. Назвіть відмінність коду Хеммінга від коду з перевіркою на парність.

5. Чому при передачі інформації перевага віддається рівномірному коду?

6. Що таке інформаційні та перевірочні символи?

7. Що таке кодова відстань, як воно визначається між двома комбінаціями двійкового коду?

8. Чому виявляється невигідною передача довгих кодових ланцюжків з одним перевірочним бітом?

9. На яких позиціях перевірочні символи в коді Хеммінга?

10. Яким співвідношенням пов'язані інформаційні та перевірочні символи?

11. Чи буде встановлено факт помилки передачі, якщо ця помилка міститься в самому контрольному бите? Обгрунтуйте.

12. Яку мінімальну кількість контрольних біт має передаватися разом з 16-ма інформаційними для забезпечення восстановимости інформації? Яка надмірність повідомлення?

13. Отримано машинне слово, закодоване з використанням коду Хеммінга: 100010111100010110011. Усуньте помилку передачі.

14. У яких ситуаціях код Хеммінга не дозволить локалізувати і виправити помилку передачі.

15. Якими графічними та геометричними способами можна представити коди? Наведіть приклад.

Лабораторна робота № 6

Дослідження коригувальної здатності циклічних кодів

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

Класифікація коригувальних кодів

З деякими коригуючими кодами студенти вже знайомі за матеріалами, наведеними в лабораторній роботі №5. Наведемо основні положення, що стосуються саме циклічних кодів.

Всі коригувальні коди можна розділити на два класи: блокові і безперервні.

Блокові коди - коди, в яких кожному повідомленню (або елементу) ставиться у відповідність блок з n символів (кодовий вектор довжиною n). Операції кодування та декодування в кожному блоці робляться окремо.

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

Як блокові, так і безперервні коди діляться на роздільні та нероздільні.

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

Нероздільні коди не передбачають такої можливості і до них відносяться, наприклад, коди з постійним вагою (КПВ).

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

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

Крім того, в систематичних кодах інформаційні символи, як правило, не змінюються при кодуванні і займають певні наперед задані місця. Перевірочні символи обчислюються як лінійна комбінація інформаційних, звідки і виникла інше найменування цих кодів - лінійні. Для систематичних кодів приймається позначення [n, k] - код, де k - число інформаційних символів в кодової комбінації, n - загальне число символів в коді.

Несистематичні коди не володіють зазначеними вище властивостями і застосовуються значно рідше, ніж систематичні, зокрема, в несиметричних каналах зв'язку.

Циклічні коди складають велику групу найбільш використовуваних на практиці лінійних, систематичних кодів. Їх основна властивість, що дало їм назву, полягає в тому, що кожен вектор, одержуваний з вихідного кодового вектора шляхом циклічної перестановки його символів, також є дозволеним кодовим вектором. Прийнято описувати циклічні коди (ЦК) за допомогою породжують полиномов G (Х) ступеня r = n - k, де r - число перевірочних символів в кодовому слові.

У зв'язку з цим циклічні коди відносяться до різновиду поліноміальних кодів.

Циклічні коди широко застосовуються при побудові пристроїв обчислювальної техніки та обчислювальних мереж.

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

CRC (Cyclic redundancy check) - код циклічного контролю. Термін використовується тільки для завадостійких циклічних кодів, що виявляють помилки. Літерами CRC також вказуються розряди (байти), що відводяться під контрольні (надлишкові) символи, що формуються при передачі (записи). При прийомі (читанні) за допомогою цих символів визначається відсутність або наявність помилки.

EDC (Error Diagnostic Codes) - завадостійкі коди, що виявляють помилки. Термін використовується для всіх завадостійких кодів, що виявляють помилки. Літерами EDC також вказуються розряди (байти), що відводяться у форматі під контрольні символи, що формуються при передачі (запису) інформації. При прийомі (читанні) за допомогою цих символів визначається наявність або відсутність помилки.

ECC (Error Correction Codes) - завадостійкі коди, що виправляють помилки. Літерами ECC вказуються також розряди (байти), що відводяться для контрольних символів, формованих при передачі (запису). При прийомі (читанні) за допомогою цих символів визначається наявність помилки і проводиться виправлення.

При використанні циклічних кодів всі контрольні символи прийнято розміщувати в кінці кодової комбінації після інформаційних символів.

Наведемо деякі приклади застосування циклічних кодів.

У накопичувачах на гнучких магнітних дисках всі операції запису даних супроводжуються формуванням і записом в кінці поля після 512 інформаційних байт (сектор) 2 байт CRC.

У накопичувачах на жорстких магнітних дисках (НЖМД) використовуються циклічні коди, що виправляють помилки (ECC). Фірми-виробники НЖДМ включають схеми формування ECC і виправлення помилок у контролери жорстких дисків. Оскільки в даний час використовуються НЖДМ з вбудованими контролерами, то користувачеві і не повідомляється про конкретний використовуваному коді. Наприклад, у ряді контролерів для сектора довжиною 512 байт формується ECC довжиною 7 байт.

У CD-ROM для забезпечення високої надійності в формат файлової системи за стандартом ISO 9660 (High Sierra) введені поля EDC довжиною 4 байта і ECC довжиною 276 байт для інформаційного поля довжиною 2048 байт. Використовується код Ріда-Соломона з перемеженіем- CIRS-Cross Interleave Reed Solomon. Цей же код використовується в ряді пристроїв архівного зберігання інформації на магнітній стрічці (стримерах).

В універсальній послідовній шині USB-Universal Serial Bus - для виявлення помилок передачі кожен пакет має поля CRC, що дозволяють виявляти всі одноразові і дворазовий бітові помилки.

Операції кодування та декодування ЦК зводяться до відомих процедур множення і ділення поліномів. Для двійкових кодів ці операції легко реалізуються технічно за допомогою лінійних переключательних схем (ЛПС), при цьому виходять відносно прості схеми кодеків, в чому полягає одна з практичних достоїнств ЦК.

Циклічний код передбачає послідовну обробку розрядів кодового слова, що зручно для передачі даних по одній лінії зв'язку. Він легко реалізується технічно за допомогою регістрів зсуву зі зворотними зв'язками й широко застосовується як у системах передачі даних, так і при контролі інформації на внутрішньому запам’ятовуючому пристрої (ВЗП). У циклічному коді для виявлення помилок використовується властивість всіх його кодових слів: при поданні їх у вигляді поліномів ділиться націло на утворюючий поліном, від властивостей якого й залежать характеристики коду. Так, для коду 7,4 можуть застосовуватися утворені поліноми виду х3 + х + 1 або х3 + х2 + 1, при цьому Dmin = 3. Як надлишкові розряди й ознаки помилки використовується залишок від розподілу кодового полінома на утворюючий. У системах передачі даних найчастіше застосовуються утворюючі поліноми виду х16 + х12 + х5 + 1, яким відповідають 16 надлишкових розрядів.

Математичний апарат розподілу багаточленів легко реалізується за рахунок використання регістрів зрушення зі зворотними зв'язками. Простота апаратної реалізації і висока коригувальна здатність коду (наприклад, код з перевірочним багаточленом забезпечує виявлення 99,999% помилок) визначили надзвичайно високе поширення циклічного коду: він використовується, наприклад, у мережах передачі даних, при записі на магнітні й оптичні диски.

Серед циклічних кодів особливе місце займає клас кодів, запропонованих Боузом і Чоудхурі і незалежно від них Хоквінгемом. Коди Боуза-Чоудхурі-Хоквінгема отримали скорочене найменування БЧХ-коди. БЧХ-коди є узагальненням кодів Хеммінга на випадок виправлення декількох незалежних помилок. Окремими випадками БЧХ-кодів є коди Файра, призначені для виявлення та виправлення серійних помилок ("пачок" помилок), код Голея - код, що виправляє одиночні, подвійні і потрійні помилки (Dmin = 7), коди Ріда-Соломона.

Коди Боуза-Чоудхурі-Хоквінгема (БЧХ) - клас циклічних кодів, що виправляють кратні помилки, тобто дві і більше (d0  5).

Теоретично коди БЧХ можуть виправляти довільну кількість помилок, але при цьому істотно збільшується тривалість кодової комбінації, що призводить до зменшення швидкості передачі даних і ускладнення приймально-передавальної апаратури (схем кодерів і декодерів).

Математичний апарат розподілу багаточленів легко реалізується за рахунок использование регістрів зрушення зі зворотнього зв'язку. Простота апаратної реализации и висока коригувальна здатність коду (наприклад, код з перевірочнім багаточленом забезпечує виявлення 99,999% помилок) визначили надзвичайно високе поширення ціклічного кодом: Він вікорістовується, наприклад, у мережа передачі даних, при запісі на магнітні й оптичні диски.

Коди Ріда-Соломона - недвійкові систематичні лінійні блокові коди, які відносяться до класу циклічних кодів, і які є підмножиною кодів Боуза-Чоудхурі-Хоквінгема. Коригувальні здатності кодів Ріда-Соломона. безпосередньо залежать від кількості контрольних байт.

Додавання r контрольних байт дозволяє виявляти r довільним чином перекручених байт, гарантовано відновлюючи r / 2 байт з них.