
- •Національний університет біоресурсів і природокористування Кафедра автоматизації сільськогосподарського виробництва
- •Методичні вказівки до виконання
- •Лабораторна робота № 1 Системи числення і цифрова техніка
- •Теоретичні відомості
- •Основою позиційної системи числення є число десять. Загальновживана форма запису числа є насправді не що інше, як скорочена форма запису розкладу за степенями основи системи числення, наприклад:
- •Алгоритми переведення чисел з однієї позиційної системи числення в іншу
- •Представлення від'ємних і дробових чисел у пам'яті комп'ютера
- •Контрольні запитання
- •Лабораторна робота № 2 Представлення даних у пам'яті електронно-обчислювальної машини (еом)
- •Теоретичні відомості
- •1. Системи числення
- •2. Кодіровка ascii
- •3. Кодіровка ascii
- •4. Альтернативна кодова таблиця
- •Завдання на лабораторну роботу
- •Контрольні запитання
- •Лабораторна робота № 3 Ентропія та її властивості. Безумовна, умовна ентропія та ентропія двох джерел
- •Теоретичні відомості
- •Основні властивості ентропії
- •Основні властивості безумовної ентропії дискретних повідомлень:
- •Умовна ентропія
- •Властивості умовної ентропії
- •Завдання на лабораторну роботу
- •Контрольні запитання
- •Лабораторна робота № 4
- •Кодування та стиснення інформації методом хаффмена та Шенона-Фано
- •Мета роботи: Вивчення принципів кодування потоків символів з різною частотою появи символів у потоці, використовуючи метод кодування Хаффмена та Шенона-Фано.
- •Теоретичні відомості
- •Порядок виконання роботи
- •Контрольні запитання
- •Лабораторна робота № 5
- •Дослідження завадозахищених кодів
- •Теоретичні відомості
- •Порядок виконання роботи
- •Контрольні запитання
- •Порядок виконання роботи
- •Дані для кодування
- •Елементи схеми пофарбовані в зелені кольори дозволяють одержати готові шаблони схем зв'язку, з яких можна створити необхідні схеми.
- •Подвійне нажимання миші в полі елемента викликає набір інструментів для цього елемента з необхідним набором параметрів.
- •Підключення до лінії з'єднання двох елементів здійснюється з використанням правої кнопки миші.
- •Порядок виконання роботи
- •Контрольні запитання
- •Лабораторна робота № 8 Способи стиснення даних методом архівації
- •Теоретичні відомості
- •Порядок виконання роботи
- •Контрольні запитання
- •Список літератури
Порядок виконання роботи
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
Контрольні запитання
Яка мінімальна кодова відстань кодів Хеммінга?
Які особливості побудови коду Хеммінга?
Які особливості побудови коду з перевіркою на парність?
Назвіть відмінність коду Хеммінга від коду з перевіркою на парність.
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 байт з них.