1. Вступ
Темою моєї курсової роботи є контроль засобів обчислювальної техніки із використанням кодів парності. Я повинен був створити систему перевірки правильності 32-розрядних даних за допомогою кодів парності.
Як відомо, система контролю вирішує завдання виявлення факту несправності роботи вузлів і пристроїв електронно-обчислювальної машини і виправлення помилок, що виникають в процесі передачі і перетворення інформації. Контроль роботи ЕОМ може бути програмним і апаратним. Програмний контроль дозволяє визначити правильність роботи ЕОМ шляхом вирішення тестових задач. Апаратний контроль базується на співставленні інформації основної апаратури і контрольної, функціонуючої одночасно із основною.
В залежності від рівня представлення ЕОМ існують різні методи контролю. Є чотири рівні класифікації методів контролю :
логічні
функціональні
системні
на рівні користувача

Рис. 1 – Логічний рівень контролю
Я використовую найпростіший спосіб цифрового контролю по модулю – контроль по модулю 2, який використовується при перевірці правильності передачі і збереження двійкової інформації у запам’ятовуючих пристроях. Контроль по модулю 2 також називається контролем по парності або непарності. Мета контролю по модулю 2 – це виявлення одиничних помилок.


Вик.
Бабічок А.


5.091504 КР 4.11 1.1 ПЗ
Арк.


Пер.
Баран Р.В.



5


Арк.
№ докум.
Підпис
Дата




2. Характеристика коду
2.1. Опис коду
Цей спосiб заснований на припущеннi, що в двiйковому числi найчастiше виникають одиничнi помилки - втрата або поява зайвої одиницi. У обох випадках число одиниць змiниться на одну. Якщо двiйкове число мало непарне число одиниць, то пiсля одиничної помилки воно виявиться парним і навпаки.
На практицi контроль парностi здiйснюється таким чином. Для пiдвищення ефективностi контролю двiйкове слово розбивається на частини, як правило, байти. До кожного байта додається додатковий контрольний розряд. Вмiст контрольного розряду залежить вiд вибраного способу контролю (за парнiстю або непарнiстю). При контролi за парнiстю значення контрольного розряду вибирається таким, щоб загальне число одиниць у байтi й контрольному бiтi було парним. У цьому випадку значення контрольного (паритетного) бiта визначається додаванням за модулем два значень розрядiв байта.
Внаслiдок операцiї додавання за модулем два значень розрядiв байта з парним числом одиниць одержуємо значення контрольного байта FK.П = 0. При додаваннi за модулем два значень розрядiв байта з непарним числом одиниць значення контрольного байта FK.П = 1.

Рис. 2 - Контроль байта: а - за парнiстю; б - за непарнiстю
Операція контролю парності двійкових чисел дозволяє підвищити надійність передачі і опрацювання інформації. Мінімальна відстань коду dmin = 1, тому код із перевіркою парності виявляє всі одиничні помилки, а крім того, всі випадки непарного числа помилок (3, 5 і т. д.). При одночасній появі двох або будь-якого іншого парного числа помилок код із перевіркою парності не виявляє помилок. При контролi за непарнiстю значення контрольного бiта вибирається з умови, що кiлькiсть одиниць у байтi з урахуванням вмiсту контрольного розряду була непарною.
На практицi контроль непарностi використовується частiше, оскiльки фiксує повне пропадання iнформацiї. Контроль парностi передбачає формування значень контрольних розрядiв до виконання операцiї та перевiрку байта пiсля виконання операцiї з урахуванням контрольних розрядiв. Наприклад, при записуваннi байта в пам'ять комп'ютера одночасно автоматично формується значення його контрольного розряду. При зчитуваннi байта, що зберiгається, здiйснюється додавання за модулем два значень його розрядiв спiльно з контрольним бiтом згiдно з визначеним способом контролю парностi або непарностi. Таким чином, контроль за паритетом вимагає використання додаткових розрядiв. Схеми, що забезпечують отримання значення контрольного розряду i перевiрку двійкового числа за ознакою парності чи непарності називаються схемами контролю парності.


Вик.
Бабічок А.


5.091504 КР 4.11 1.1 ПЗ
Арк.


Пер.
Баран Р.В.



6


Арк.
№ докум.
Підпис
Дата





Їх часто називають схемами згортки, схемами контролю за модулем два, схемами контролю за паритетом. Операція згортання – це операція отримання остачі від ділення числа або суми його цифр на модуль контролю. Операція згортання по модулю 2 виконується сумуванням цифр розрядів двійкового числа по модулю 2.
Цей код широко використовується в обчислювальних машинах при передачі інформації між регістрами і при контролі інформації при читанні з памяті.
Функціональні вузли, що виконують операцію згортання по модулю 2 називаються вузлами згортання по парності або вузлами контролю по непарності і використовуються на передаючій стороні для формування значення контрольного розряду, а на приймаючій стороні для перевірки результату операції. Функція називається функцією парності, а функція - функцією непарності, де - знак суми по модулю 2, - p-й розряд слова даних, - кількість розрядів слова.
Функції парності і непарності рівні 1 при парному і непарному числі одиниць у розрядах слова відповідно. Значення контрольного розряду при контролі по непарності рівне і формується на передаючій стороні лінії зв’язку. Після передачі або зчитування із пам’яті кодове слово знову згортається по модулю 2. Якщо функція непарності , то це значення згортання є виявом помилки. Якщо , то передача слова правильна.
2.2 Основні характеристики та параметри коду
Так як приблизно 90% усіх нерегулярних помилок виникають саме із одиничним розрядом, перевірки парності буває достатньо для більшості ситуацій. Нажаль необхідність у додаткових обрахунках паритетного біту вимагає деяких затрат процесорного часу, що зменшує швидкість роботи всієї системи.
Перевагами контролю на парність є мінімальне значення коефіцієнта надлишковості (для п’ятиелементного коду він дорівнює 0.17) і простота його технічної реалізації, а недоліком є те, що виявляються помилки які мають непарну кратність.
Однак така методика перевірки не може виявити помилки у випадку подвійного перекидування (наприклад, дві одиниці перекинулись у нуль), що може призвести до високого рівня помилок у деяких передачах. Багаторівнева модуляція (коли перевірка сигналу виконується по двох або трьох бітах) вимагає складнішої техніки. Перевірка на парність/непарність по одному біту також є неприйнятною і для багатьох аналогових ліній через групування помилок, яке зазвичай виконується у лініях зв’язку такого типу. Подвійна перевірка на парність/непарність є вдоскона-


Вик.
Бабічок А.


5.091504 КР 4.11 1.1 ПЗ
Арк.


Пер.
Баран Р.В.



7


Арк.
№ докум.
Підпис
Дата




ленням одиничної перевірки. В цьому методі замість біта парності у кожному символі визначається парність або непарність цілого блоку символів. Перевірка блоку дозволяє виявляти помилки як всередині символу так і між символами. Ця перевірка також називається двохвимірним кодом перевірки на парність. Вона має значну перевагу у порівнянні із одиничною. За допомогою такої перехресної перевірки можна суттєво покращити надійність роботи звичайної телефонної лінії. Але як одинична так і подвійна перевірка на парність означають збільшення витрат і відносне зменшення виходу інформації для користувача.
Така операція особливо актуальна для запам’ятовуючих пристроїв з невисокою надійностю (дискові накопичувачі). Сучасні технологічні досягнення в області напівпровідникової пам’яті позволяють в ряді випадків обходитись без контролю парності. Деякі материнські плати хоч і допускають використання пам’яті із контролем парності, але саму перевірку можуть не підтримувати. Контроль по методу парності/непарності широко використовується в ЕОМ для контролю запису, зчитування інформації у запам’ятовуючих пристроях на магнітних носіях.
Структура схеми перевірки парності є багатоступеневою, тобто слово ділиться на декілька груп розрядів, в кожному з яких перевірка парності виконується прямим способом (перша ступінь), дальше виконується перевірка для груп другого ступеня, створених із груп першого ступеня, парності яких в цьому випадку розглядаються як звичайні двійкові розряди, і так далі до кінцевої перевірки парності суми 1 всього слова. В останній ступені парність байта порівнюється із значенням контрольного розряду КР.
2.3. Порядок використання коду при виявленні несправностей
Принципи завадостійкого кодування широко використовуються виробниками комп’ютерних комплектуючих для підвищення надійності своїх виробів. Особливо це стосується дискових пристроїв (жорсткі диски, приводи CDROM тощо). Вони передбачають зберігання контрольних бітів (контрольних сум) для кожного блоку даних (кластера). Ці біти обчислюються як доповнення до парності. Усі ці біти можуть зберігатись у спеціальній мікросхемі ПЗП, яка входить до складу друкованої плати накопичувача. Таким чином, якщо один із бітів кластера неможливо зчитати, то його значення можна визначити за допомогою корегуючого біта.
Коди парності часто зустрічаються при використанні RАID-масивів.
RАID-3. Дані розбивають на смуги завдовжки в 1 біт і розподіляють по дисках масиву таким чином, що повне машинне слово представляється поясом, тобто число дисків рівне довжині машинного слова в бітах, а один з дисків масиву відводиться для зберігання інформації про парність. У разі відмови одного з дисків, відновлення інформації, що зберігалася на ньому, можливе шляхом виконання операції виключного АБО за інформацією на працездатних дисках. Кожен запис,



Вик.
Бабічок А.


5.091504 КР 4.11 1.1 ПЗ
Арк.


Пер.
Баран Р.В.



8


Арк.
№ докум.
Підпис
Дата





зазвичай, розподілений по всіх дисках, і тому цей тип масиву дисків є ефективним для роботи в додатках з інтенсивним обміном із дисковою підсистемою. Оскільки кожна операція введення-виведення звертається до всіх дисків масиву, RАID-3 не може одночасно виконувати декілька операцій. Тому RАID-3 хороший для однозадачного оточення з довгими записами. Для роботи з короткими записами потрібна синхронізація обертання дисків, оскільки інакше зменшується швидкість обміну.
RАID-4. Ідентичний RАID-3 за винятком того, що тут розмір поясів є набагато більшим одного сектора. В цьому випадку зчитування можна здійснювати з одного диска (не рахуючи диска, що зберігає інформацію про парність), тому можливе одночасне виконання декількох операцій зчитування. Проте, оскільки кожна операція запису повинна відновити вміст диска парності, одночасне виконання декількох операцій запису неможливе.
RАID-5. Тут немає окремого диску для зберігання бітів парності. Тому тут немає недоліку, властивого RАID-4, який заключається у неможливості одночасного виконання декількох операцій запису. У цьому масиві, як і в RАID-4, використовуються пояси великого розміру, але, на відміну від RАID-4, інформація про парність зберігається не на одному диску, а на всіх дисках по черзі. Операції запису звертаються до одного диска з даними і до іншого диска з інформацією про парність. Оскільки біти парності для різних поясів зберігаються на різних дисках, виконання декількох одночасних операцій запису є неможливим, тільки в тих окремих випадках, коли або пояси з даними, або пояси з бітами парності знаходяться на тому ж диску. Чим більше дисків у масиві, тим рідше співпадає місцеположення поясу і біта парності. Область застосування цього типу дискових масивів - надійне зберігання масивів даних великого об'єму.
RАID-6. Як і RАID-5 в RАID-6 дані розбиваються на смуги розміром в один блок і розподіляються по всіх дисках. Доступ до смуг незалежний та асинхронний. Різниця в тому, що на кожному диску зберігається не одна, а дві смуги паритету. Перша з них, як і в RАID-5, містить контрольну інформацію для смуг, розміщених на горизонтальному зрізі масиву (за виключенням диска, де смуга паритету зберігається). В додаток формується і записується друга смуга паритету, контролююча всі смуги якогось одного диску масиву, (вертикальний зріз масиву), але не того, де зберігається смуга паритету. Така схема масиву дозволяє відновити інформацію при відмові відразу двох дисків. З іншої сторони, збільшується час на обчислення і запис розрядів парності та вимагається додатковий дисковий простір. Крім того, реалізація даної схеми пов'язана з ускладненням контролера дискового масиву. Тому, даний тип RАID зустрічається рідко.
RАID-7. Не входить до складу основних типів дискових масивів. До складу масиву дисків RАID-7, крім самого масиву асинхронно працюючих дисків, входять кеш-пам'ять та контролер, які керуються вбудованою в контролер операційною системою реального часу. Дані розбиті на смуги розміром у блок і розділені по дисках масиву. Смуги бітів парності зберігаються на спеціально виділених для даної цілі одному або кількох дисках. Даний тип RАID при роботі з великими файлами не поступається за продуктивністю RАID-3.


Вик.
Бабічок А.


5.091504 КР 4.11 1.1 ПЗ
Арк.


Пер.
Баран Р.В.



9


Арк.
№ докум.
Підпис
Дата




3. Утворення коду
3.1. Апаратні методи утворення коду

Функціонування двох- і трьох вхідного логічних елементів додавання по модулю 2 визначається таблицею 1 і логічними виразами:








0
0
0
0
1

0
0
1
1
0

0
1
0
1
0

0
1
1
0
1

1
0
0
1
0

1
0
1
0
1

1
1
0
0
1

1
1
1
1
0


таб. 1 - Функціонування двох- і трьох вхідного логічних елементів додавання по модулю 2
В таблиці пунктиром виділена частина, що пояснює роботу двохвхідного елемента додавання по модулю 2. Функції і можуть бути реалізовані логічними елементами І-АБО-НЕ із інверторами (рис. 3):
Рис. 3 – Реалізація функцій і за допомогою логічних елементів І-АБО-НЕ


Вик.
Бабічок А.


5.091504 КР 4.11 1.1 ПЗ
Арк.


Пер.
Баран Р.В.



10


Арк.
№ докум.
Підпис
Дата





Функції і не піддаються мінімізації і реалізуються за допомогою елементів додавання по модулю 2 із двома, рідше із трьома або чотирма входами. Базові елементи додавання по модулю 2 з’єднюють по пірамідальній схемі, так як пірамідальна структура має мінімальну затримку.
Пірамідальна схема згортання байта інформації приведена на рис. 4,а. і містить 7 двовхідних елементів додавання по модулю 2, що утворюють каскади.
В загальному випадку для згортання n-розрядного слова потрібно n-1 двовхідних елементів, а число каскадів схеми рівне , якщо n рівне цілій степені двійки. Затримка розповсюдження схеми рівна: , де - середня затримка розповсюдження елемента додавання по модулю 2.
Використання трьовхідних елементів додавання по модулю 2 дозволяє зменшити число каскадів вузла згортання і, відповідно, зменшити загальний час затримки розповсюдження (рис. 4,б.).
Всі входи вузла контролю по парності логічно рівнозначні. Один із входів зазвичай використовується для нарощування розрядності вузла контролю, для керування парністю/непарністю шляхом подачі на цей вхід сигналу дозволу ОЕ або як окремий вхід вузла згортання по модулю 2.
а.) б.)
Рис. 4 - Пірамідальна схема згортання байта інформації
На рис. 4 вхід ОЕ і вихідний елемент додавання по модулю 2 показані пунктиром. Функція виходу РО рівна .
Якщо ОЕ=0, то РО – функція непарності, якщо ОЕ=1, то РО – функція парності.
Розглянемо деякі мікросхеми вузлів контролю серії ІМС загального призначення.
ІМС К555ІП5, КР1533ІП5, SN74LS280 ТТЛШ, КР1554ІП5, 74AC280 (фірма National, USA) КМОП–логіки – дев’ятирозрядна схема контролю парності, що має


Вик.
Бабічок А.


5.091504 КР 4.11 1.1 ПЗ
Арк.


Пер.
Баран Р.В.



11


Арк.
№ докум.
Підпис
Дата





виходи функцій непарності РО і парності РЕ (непарний і парний паритет). При парній кількості одиниць у вхідному слові на виходах маємо РЕ=1, РО=0, при непарній кількості одиниць – РЕ=0, РО=1.
Вузол контролю формує функції парності і непарності:
Якщо ОЕ=0, то РО – функція непарності, а РЕ – функція парності. Якщо ОЕ=1, то РО – функція парності, а РЕ – функція непарності, тобто виконується інвертування функції паритету. Умовне графічне позначення мікросхеми приведено на рис. 4 (ODD – непарність, EVEN – парність). ІМС побудована на трьохвхідних логічних елементах додавання по модулю 2 і інверторах.


Рис. 5 - ІМС К555ІП5
На рис. 6 показана схема контролю по непарності передачі байта інформації по лінії зв’язку на основі ІМС К555ІП5. На передаючій стороні ІМС DD1 є формувачем контрольного байту, який виробляється на виході при (індекс 1 відноситься до ІМС DD1): . В лінію зв’язку поступають інформаційні сигнали і контрольний біт . На приймаючій стороні сигнал подається на вхід ОЕ ІМС DD2, а інформаційні сигнали D0-D7 поступають на її входи , тоді . При відсутності помилок в лінії зв’язку для всіх р і . Тоді матимемо:



Вик.
Бабічок А.


5.091504 КР 4.11 1.1 ПЗ
Арк.


Пер.
Баран Р.В.



12


Арк.
№ докум.
Підпис
Дата





Значення сигналів і змінюються на інверсні при виникненні помилок в непарному числі розрядів лінії зв’язку. ІМС DD2 виконує контроль передачі даних по непарності. Парне число помилок у розрядах, що виникли знову при передачі по лінії зв’язку, не виявляються. Тому схема контролю по парності використовується для виявлення одиничних помилок.

Рис. 6 - Схема контролю по непарності передачі байта інформації по лінії зв’язку на основі ІМС К555ІП5
3.2. Програмні методи утворення коду
Для перевірки правильності 32-розрядних даних можна створити спеціальну програму. Задача, яка поставлена перед мною не вимагає використання чітко визначеного програмного забезпечення. Отже, я мав вільний вибір щодо методів створення даної програми. По своїй суті реалізація даної програми є нескладною. Тому я міг використовувати найрізноманітніші мови програмування: Fortran, Cobol, Basic, Pascal, C++, Delphi та інші. Для мене найзручніше програмувати на Delphi. Я зробив такий вибір через зручність застосовування, зрозумілий інтерфейс і нескладність програмування на даній мові програмування.
Коротко про інструменти середовища Delphi. Основними інструментами є:
- головне меню – містить усі команди які можна виконати;

Рис. 7 – Головне меню


Вик.
Бабічок А.


5.091504 КР 4.11 1.1 ПЗ
Арк.


Пер.
Баран Р.В.



13


Арк.
№ докум.
Підпис
Дата





- панелі інструментів – містять піктографічне відображення для швидкої реалізації команд;

Рис. 8 – Панелі інструментів
- вікно форми – вікно Windows, яке утворюється в одному з можливих для вікон стилів. Увесь внутрішній простір є робочою областю, яка має сітку вирівнювання для зручного розташування компонентів на формі;

Рис. 9 – Вікно форми
- палітра компонентів (Component Palette) – розташована у головному вікні і має вигляд багато сторінкового блокнота. Кожній сторінці відповідає свій набір компонент які можна розміщувати у вікні форми;

Рис. 10 – Палітра компонентів
- інспектор об’єктів (Object Inspector) – з його допомогою можна задавати початкові значення властивостей об’єкта та їхню реакцію на стандартні події;


Вик.
Бабічок А.


5.091504 КР 4.11 1.1 ПЗ
Арк.


Пер.
Баран Р.В.



14


Арк.
№ докум.
Підпис
Дата






Рис. 11 – Інспектор об'єктів
- редактор коду програми (Code Editor) – організоване як багатосторінковий блокнот відкритих у даний момент файлів;

Рис. 12 – Редактор коду
Для будь-якої програми буде завжди доречним скласти блок-схему. Оскільки я створив дві програми, то і блок-схем довелось зробити також дві. Перша є максимально простою бо є лінійною і не містить ніяких розгалужень (рис. 13). У ній я описав введення вхідних даних, формування потрібних результатів і описав їх запис у файл. Друга описує перевірку і декодування даних. Вона має виявити помилку (якщо така є) і декодувати число до первісного вигляду. Блок-схема показує, що йде перевірка на помилку, а потім визначається в якому саме блоці вона виникла (рис. 14).


Вик.
Бабічок А.


5.091504 КР 4.11 1.1 ПЗ
Арк.


Пер.
Баран Р.В.



15


Арк.
№ докум.
Підпис
Дата






Рис. 13 – Блок-схема першої програми


Вик.
Бабічок А.


5.091504 КР 4.11 1.1 ПЗ
Арк.


Пер.
Баран Р.В.



16


Арк.
№ докум.
Підпис
Дата






Рис. 14 – Блок-схема другої програми


Вик.
Бабічок А.


5.091504 КР 4.11 1.1 ПЗ
Арк.


Пер.
Баран Р.В.



17


Арк.
№ докум.
Підпис
Дата





4. Ознаки достовірності коду, виявлення та корекція помилок в кодах.
4.1.Ознаки за якими визначається наявність в коді помилок. 4.2.Виявлення помилок та корекція інформації.
Припустимо, що виконується контроль по парності повідомлення
11100000111011000101011011011111. Розіб’ємо це число на 4 блоки по 8 біт.
Контрольному розряду надається значення при якому сума цифр кодового слова парна.

1+1+1+0+0+0+0+0=3
1+1+1+0+1+1+0+0=5
0+1+0+1+0+1+1+0=4
1+1+0+1+1+1+1+1=7
Звідси: КР1=1
КР2=1
КР3=0
КР4=1
Таким чином, кодова комбінація буде мати вигляд:
111100000111101100001010110111011111.
На приймальній стороні лінії зв’язку або після зчитування із пам’яті кодове слово знову перевіряється на парність суми цифр. Якщо сума цифр кодового слова парна, то помилки нема, а якщо сума цифр непарна, то це означає, що при передачі або збереженні в кодовому слові виникла помилка.
Нехай після передачі даних по каналі зв’язку виникла помилка у дев’ятому розряді. Тоді на вході приймача ми отримаємо код:
111100001 111101100 001010110 111011111
Тепер враховуючи контрольні розряди знову перевіряємо на парність:

1+1+1+1+0+0+0+0+1=5
1+1+1+1+0+1+1+0+0=6
0+0+1+0+1+0+1+1+0=4
1+1+1+0+1+1+1+1+1=8
Звідси: П1=1
П2=0
П3=0
П4=0
Ми можемо бачити, що у першому блоці виникла помилка.
Якщо б помилки не було, то для декодування повідомлення ми б викинули контролюючі символи.


Вик.
Бабічок А.


5.091504 КР 4.11 1.1 ПЗ
Арк.


Пер.
Баран Р.В.



18


Арк.
№ докум.
Підпис
Дата





5. Індивідуально-пошукова робота
Програма 1
Перша програма призначена для введення 32-розрядного двійкового числа і його подальшого кодування, що виявляється у знаходженні контрольних символів, які будуть додані до даного числа. Графічний інтерфейс програми зображено на рис. 15. Для введення числа у програмі передбачено спеціальне поле Edit1 (1). Туди користувач може вводити будь-які двійкові дані. У разі якщо туди буде введено недозволений символ або кількість символів буде меншою 32, то на екрані з’явиться повідомлення про помилку (рис. 16). Також у програмі реалізована можливість перегляду закодованого числа, що виводиться у поле Edit2 (2). Для початку кодування користувачу досить натиснути кнопку “Закодувати” (3) створену елементом Button1. Для зручності контрольні розряди також виводитимуться з допомогою елементів типу Label (5). Після кодування, при потребі, закодоване число можна записати у текстовий файл використавши кнопку “У файл” (4) створену елементом Button2. При її використанні відривається вікно показане на рис. 17, у якому потрібно ввести ім’я файлу у якому буде зберігатися число та шлях до самого файлу.

Рис. 15 – Вікно Програми 1


Вик.
Бабічок А.


5.091504 КР 4.11 1.1 ПЗ
Арк.


Пер.
Баран Р.В.



19


Арк.
№ докум.
Підпис
Дата






Рис. 16 – Вікно повідомлення про помилку при введені

Рис. 17 – Вікно збереження закодованого числа
Текст програми:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, jpeg, ExtCtrls;



Вик.
Бабічок А.


5.091504 КР 4.11 1.1 ПЗ
Арк.


Пер.
Баран Р.В.



20


Арк.
№ докум.
Підпис
Дата





type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
Edit3: TEdit;
Image1: TImage;
Label1: TLabel;
Label11: TLabel;
Label12: TLabel;
Label13: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label5: TLabel;
Label14: TLabel;
SaveDialog1: TSaveDialog;
Button2: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Edit1Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
vhid_mas: array [1..32] of boolean;
vyhid_mas: array [1..36] of boolean;
vyvid_mas: array [1..36] of char;
vvid_mas:string[32];


Вик.
Бабічок А.


5.091504 КР 4.11 1.1 ПЗ
Арк.


Пер.
Баран Р.В.



21


Арк.
№ докум.
Підпис
Дата





k1,k2,k3,k4:boolean;
i:integer;
begin
Label14.Visible:=False;
vvid_mas:=Edit1.Text;
for i:=1 to 32 do
begin
Edit3.Text:='';
if vvid_mas[i]='1' then vhid_mas[i]:=true
else
if vvid_mas[i]='0' then vhid_mas[i]:=false
else
Application.MessageBox('Некоректний символ. Вводьте 0 або 1', 'Помилка',MB_OK );
if vvid_mas[i]='1' then vhid_mas[i]:=true
else
if vvid_mas[i]='0' then vhid_mas[i]:=false
else Label14.Visible:=True;
end;
k1:=(vhid_mas[1] xor vhid_mas[2] xor vhid_mas[3] xor vhid_mas[4]
xor vhid_mas[5] xor vhid_mas[6] xor vhid_mas[7] xor vhid_mas[8])
xor false;
k2:=(vhid_mas[9] xor vhid_mas[10] xor vhid_mas[11] xor vhid_mas[12]
xor vhid_mas[13] xor vhid_mas[14] xor vhid_mas[15] xor vhid_mas[16])
xor false;
k3:=(vhid_mas[17] xor vhid_mas[18] xor vhid_mas[19] xor vhid_mas[20]
xor vhid_mas[21] xor vhid_mas[22] xor vhid_mas[23] xor vhid_mas[24])
xor false;
k4:=(vhid_mas[25] xor vhid_mas[26] xor vhid_mas[27] xor vhid_mas[28]
xor vhid_mas[29] xor vhid_mas[30] xor vhid_mas[31] xor vhid_mas[32])
xor false;
if k1=false then label2.Caption:='0'
else label2.Caption:='1';
if k2=false then label3.Caption:='0'
else label3.Caption:='1';
if k3=false then label4.Caption:='0'
else label4.Caption:='1';
if k4=false then label5.Caption:='0'
else label5.Caption:='1';
vyhid_mas[1]:=k1;
vyhid_mas[2]:=vhid_mas[1];
vyhid_mas[3]:=vhid_mas[2];
vyhid_mas[4]:=vhid_mas[3];
vyhid_mas[5]:=vhid_mas[4];
vyhid_mas[6]:=vhid_mas[5];



Вик.
Бабічок А.


5.091504 КР 4.11 1.1 ПЗ
Арк.


Пер.
Баран Р.В.



22


Арк.
№ докум.
Підпис
Дата




vyhid_mas[7]:=vhid_mas[6];
vyhid_mas[8]:=vhid_mas[7];
vyhid_mas[9]:=vhid_mas[8];
vyhid_mas[10]:=k2;
vyhid_mas[11]:=vhid_mas[9];
vyhid_mas[12]:=vhid_mas[10];
vyhid_mas[13]:=vhid_mas[11];
vyhid_mas[14]:=vhid_mas[12];
vyhid_mas[15]:=vhid_mas[13];
vyhid_mas[16]:=vhid_mas[14];
vyhid_mas[17]:=vhid_mas[15];
vyhid_mas[18]:=vhid_mas[16];
vyhid_mas[19]:=k3;
vyhid_mas[20]:=vhid_mas[17];
vyhid_mas[21]:=vhid_mas[18];
vyhid_mas[22]:=vhid_mas[19];
vyhid_mas[23]:=vhid_mas[20];
vyhid_mas[24]:=vhid_mas[21];
vyhid_mas[25]:=vhid_mas[22];
vyhid_mas[26]:=vhid_mas[23];
vyhid_mas[27]:=vhid_mas[24];
vyhid_mas[28]:=k4;
vyhid_mas[29]:=vhid_mas[25];
vyhid_mas[30]:=vhid_mas[26];
vyhid_mas[31]:=vhid_mas[27];
vyhid_mas[32]:=vhid_mas[28];
vyhid_mas[33]:=vhid_mas[29];
vyhid_mas[34]:=vhid_mas[30];
vyhid_mas[35]:=vhid_mas[31];
vyhid_mas[36]:=vhid_mas[32];
for i:=1 to 36 do
begin
if vyhid_mas[i]=true then vyvid_mas[i]:='1'
else vyvid_mas[i]:='0';
Edit3.Text:=Edit3.Text+vyvid_mas[i];
end;
Label6.Visible:=True;
Label7.Visible:=True;
Label8.Visible:=True;
Label9.Visible:=True;
Label13.Visible:=True;
Label11.caption:= 'Дані закодовано';
end;




Вик.
Бабічок А.


5.091504 КР 4.11 1.1 ПЗ
Арк.


Пер.
Баран Р.В.



23


Арк.
№ докум.
Підпис
Дата





procedure TForm1.FormCreate(Sender: TObject);
begin
Label6.Visible:=False;
Label7.Visible:=False;
Label8.Visible:=False;
Label9.Visible:=False;
Label13.Visible:=False;
Label14.Visible:=False;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if SaveDialog1.Execute then
begin
Memo1.Lines.Add(Edit3.Text);
Memo1.Lines.SaveToFile(SaveDialog1.FileName+'.txt');
end;
end;
procedure TForm1.Edit1Change(Sender: TObject);
begin
Label11.Caption:='';
end;
end.
Програма 2
Програма 2 призначена для перевірки закодованого Програмою 1 числа на появу у ньому помилок та виведення декодованого, тобто початкового, числа. Графічний інтерфейс Програми 2 зображено на рис. 18. Для зчитування числа із файлу, користувач має натиснути кнопку “Із файлу” (1) створеного елементом Button2, знайти потрібний файл за допомогою такого ж вікна як на рис. 17 і відкрити його. Після цього число копіюється у поле Edit1 (2). За допомогою кнопки “Перевірка” (4) створеного елементом Button1, можна декодувати повідомлення і вивести його у поле Edit4 (7). Контрольні символи у ньому будуть замінені знаком “%”. Для того щоб ми могли ввести помилки у програмі передбачено кілька полів Edit (5). Ввівши туди номер розряду в діапазоні від 1 до 36 ми зможемо показати дії програми при виявленні помилки. В такому випадку нам буде виведено повідомлення про помилку (рис. 19). Також при виявленні помилки ми зможемо виявити блок у якому вона виникла. Ця інформація відображатиметься завдяки елемента Label (7).


Вик.
Бабічок А.


5.091504 КР 4.11 1.1 ПЗ
Арк.


Пер.
Баран Р.В.



24


Арк.
№ докум.
Підпис
Дата






Рис. 18 – Вікно Програми 2

Рис. 19 – Вікно повідомлення про помилку
Текст програми:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, jpeg, ExtCtrls;


Вик.
Бабічок А.


5.091504 КР 4.11 1.1 ПЗ
Арк.


Пер.
Баран Р.В.



25


Арк.
№ докум.
Підпис
Дата




type
TForm1 = class(TForm)
Button1: TButton;
Edit2: TEdit;
Edit3: TEdit;
Memo1: TMemo;
Button2: TButton;
OpenDialog1: TOpenDialog;
Edit1: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
Edit7: TEdit;
Image1: TImage;
Label9: TLabel;
Label8: TLabel;
Label7: TLabel;
Label6: TLabel;
Label5: TLabel;
Label4: TLabel;
Label3: TLabel;
Label2: TLabel;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
oznaka,p1,p2,p3,p4:boolean;
pos,pos2,pos3,pos4,i:integer;
vyhid_mas:array[1..36] of boolean;


Вик.
Бабічок А.


5.091504 КР 4.11 1.1 ПЗ
Арк.


Пер.
Баран Р.В.



26


Арк.
№ докум.
Підпис
Дата





vyvid_mas:string[36];
begin
Edit4.Text:='';
Edit2.Text:='';
vyvid_mas:=Edit1.Text;
for i:=1 to 36 do
begin
if vyvid_mas[i]='1' then vyhid_mas[i]:=true
else vyhid_mas[i]:=false;
end;
oznaka:=false;
while oznaka=false do
begin
if (Edit3.Text<>'0') or (Edit5.Text<>'0') or (Edit6.Text<>'0') or (Edit7.Text<>'0') then
Application.MessageBox('При передачі виникла помилка', 'Помилка',MB_OK );
pos:=StrToInt(Edit3.Text);
if (pos>0) and (pos<37) then
if vyhid_mas[pos]=true then vyhid_mas[pos]:=false
else vyhid_mas[pos]:=true;
if (pos>0) and (pos<37) then oznaka:=true;
if pos=0 then oznaka:=true;
pos2:=StrToInt(Edit5.Text);
if (pos2>0) and (pos2<37) then
if vyhid_mas[pos2]=true then vyhid_mas[pos2]:=false
else vyhid_mas[pos2]:=true;
if (pos2>0) and (pos2<37) then oznaka:=true;
if pos2=0 then oznaka:=true;
pos3:=StrToInt(Edit6.Text);
if (pos3>0) and (pos3<37) then
if vyhid_mas[pos3]=true then vyhid_mas[pos3]:=false
else vyhid_mas[pos3]:=true;
if (pos3>0) and (pos3<37) then oznaka:=true;
if pos3=0 then oznaka:=true;
pos4:=StrToInt(Edit7.Text);
if (pos4>0) and (pos4<37) then
if vyhid_mas[pos4]=true then vyhid_mas[pos4]:=false
else vyhid_mas[pos4]:=true;
if (pos4>0) and (pos4<37) then oznaka:=true;
if pos4=0 then oznaka:=true;
end;
for i:=1 to 36 do
begin
if vyhid_mas[i]=true then vyvid_mas[i]:='1'


Вик.
Бабічок А.


5.091504 КР 4.11 1.1 ПЗ
Арк.


Пер.
Баран Р.В.



27


Арк.
№ докум.
Підпис
Дата




else vyvid_mas[i]:='0';
Edit2.Text:=Edit2.Text+vyvid_mas[i];
end;
p1:=(vyhid_mas[1] xor vyhid_mas[2] xor vyhid_mas[3] xor vyhid_mas[4]
xor vyhid_mas[5] xor vyhid_mas[6] xor vyhid_mas[7] xor vyhid_mas[8]
xor vyhid_mas[9]) xor false;
p2:=(vyhid_mas[10] xor vyhid_mas[11] xor vyhid_mas[12] xor vyhid_mas[13]
xor vyhid_mas[14] xor vyhid_mas[15] xor vyhid_mas[16] xor vyhid_mas[17]
xor vyhid_mas[18]) xor false;
p3:=(vyhid_mas[19] xor vyhid_mas[20] xor vyhid_mas[21] xor vyhid_mas[22]
xor vyhid_mas[23] xor vyhid_mas[24] xor vyhid_mas[25] xor vyhid_mas[26]
xor vyhid_mas[27]) xor false;
p4:=(vyhid_mas[28] xor vyhid_mas[29] xor vyhid_mas[30] xor vyhid_mas[31]
xor vyhid_mas[32] xor vyhid_mas[33] xor vyhid_mas[34] xor vyhid_mas[35]
xor vyhid_mas[36]) xor false;
if p1=false then label5.Caption:='0'
else label5.Caption:='1';
if p2=false then label6.Caption:='0'
else label6.Caption:='1';
if p3=false then label7.Caption:='0'
else label7.Caption:='1';
if p4=false then label8.Caption:='0'
else label8.Caption:='1';
Label5.Visible:=True;
Label6.Visible:=True;
Label7.Visible:=True;
Label8.Visible:=True;
vyvid_mas[1]:='%';
vyvid_mas[10]:='%';
vyvid_mas[19]:='%';
vyvid_mas[28]:='%';
for i:=1 to 36 do
begin
Edit4.Text:=Edit4.Text+vyvid_mas[i];
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if OpenDialog1.Execute then
begin
Memo1.Lines.LoadFromFile(OpenDialog1.FileName);
end;
Edit1.Text:=Memo1.Lines[0];
end;



Вик.
Бабічок А.


5.091504 КР 4.11 1.1 ПЗ
Арк.


Пер.
Баран Р.В.



28


Арк.
№ докум.
Підпис
Дата




procedure TForm1.FormCreate(Sender: TObject);
begin
Label5.Visible:=False;
Label6.Visible:=False;
Label7.Visible:=False;
Label8.Visible:=False;
Edit3.Text:='0';
Edit5.Text:='0';
Edit6.Text:='0';
Edit7.Text:='0';
end;
end.



Вик.
Бабічок А.


5.091504 КР 4.11 1.1 ПЗ
Арк.


Пер.
Баран Р.В.



29


Арк.
№ докум.
Підпис
Дата




6. Висновки
Вивчивши усі характеристики та параметри кодів парності я можу зробити висновок, що їх використання є доцільним як у вигляді апаратної реалізації, так і у вигляді певних програмних засобів. Перше є можливим бо пристрої, що використовують метод кодів парності мають невелику надлишковість (0,17), а друге через те, що їх досить легко реалізувати з допомогою практично будь-яких мов програмування. Також я можу зробити висновок, що коди парності ще довго утримуватимуть свої позиції і займатимуть важливе місце у комп’ютерних технологіях бо з їх допомогою можна перевірити усі види даних, оскільки будь-то текстова інформація, певні таблиці чи ще щось, ми завжди можемо виразити їх у вигляді послідовності нулів та одиниць, тобто у двійковому коді.
Коди парності мають як недоліки так і переваги.
Преваги:
Простота програмної та апаратної реалізації;
Невелика надлишковість (0,17);
Можливість використання для будь-яких типів даних;
Висока швидкодія;
Недоліки:
Неможливо визначити в якому розряді виникла помилка. Удосконалення, яке знівелює цей недолік призведе до високої надлишковості;
Виявляє лише одиничні помилки, а вдосконалення так само призведе до зростання надлишковості;
Перевірка на парність/непарність по одному біту також є неприйнятною і для багатьох аналогових ліній через групування помилок, яке зазвичай виконується у лініях зв’язку такого типу.


Вик.
Бабічок А.


5.091504 КР 4.11 1.1 ПЗ
Арк.


Пер.
Баран Р.В.



30


Арк.
№ докум.
Підпис
Дата




7. Література
Гук М. “Аппаратные средства IBM PC”, Санкт-Петербург, изд. “Питер”, 1996 – 244с.
Емельянов Г. А. “Передача дискретной информации” - М: Радио и связь, 1982
Періодичні видання (журнали “Мир связи”, “CHIP”, “Компьютеры + программы”, “HiTech” та ін.).
Кутузов М., Преображенський А. “Выбор и модернизация компьютера. Анотомия ПК” – СПб.: Питер. 2003. – 298с.
www.echip/ua/test lab
Кузьмин И. В., Кедрус В. А. “Основы теории информации и кодирования” – К.: Вища школа., 1986. – 329с.
Жаров А. “Железо IBM 99” – М.: МнкроАРТ, 1999. – 352с.
Мюллер Скот. “Модернизация и ремонт ПК.” – К.: М.: СПб.: Изд. Дом “Вильямс”. 2005. – 1407С.
Привалов А. “Абгреид компьютера.” – СПб.: Питер. 2003. – 298с.


Вик.
Бабічок А.


5.091504 КР 4.11 1.1 ПЗ
Арк.


Пер.
Баран Р.В.



31


Арк.
№ докум.
Підпис
Дата