Кодирующее пристрій для коду Файера
Анотація — | |Запровадження — | |1. Теоретичне запровадження — | — 1.1. Постановка завдання. — | — 1.2. Поняття двійкових циклічних кодів. — | — 1.2.1. Загальні поняття та визначенням. — | — 1.2.2. Методи побудови циклічних кодів. — | |1.3.Технические кошти кодування для двійкових — | |циклічних кодів. — | |1.4. Коди Файра. — | — 2. Розробка схеми що кодує устрою. — | |2.1. Побудова коду Файра… Читати ще >
Кодирующее пристрій для коду Файера (реферат, курсова, диплом, контрольна)
Міністерство загального користування та професійної освіти РФ.
Московський енергетичний институт.
(Технічний Университет).
Філія у місті Смоленске.
Кафедра Обчислювальною Техники.
Расчётно-пояснительная записка до курсової роботу з дисциплине:
" Передача інформації «.
Тема: «Кодуючий пристрій для коду Файра » .
Викладач: Каевченко М. А.
Група: ВМ-1−97.
Студент: Іванов А. Е.
До защите:
Смоленськ 2000 г.
Аннотация.
Курсова робота за курсом «Передача інформації «. Викладач: Каевченко Михайло Антонович.
Автор роботи: Іванов Олексій Євгенович. Назва роботи: «Кодуючий пристрій для коду Файра «Кількість сторінок: Кількість ілюстрацій: Мета курсової роботи: Побудувати математичну модель заданого коригувального коду, знайти творчу матрицю коду, технічно реалізувати кошти на його кодирования/декодирования (лише на рівні принципової схемы).
В главі 1 расчетно-пояснительной записки виконано огляд теоретичних аспектів, що з циклічними кодами. У розділі 2 расчетно-пояснительной записки виконано розробка принципової схеми що кодує устрою. У розділі 3 расчетно-пояснительной записки виконано аналіз технічного завдання. Глава 4 расчетно-пояснительной записки містить опис роботи що кодує устрою. Глава 5 расчетно-пояснительной записки обгрунтовується вибір елементів і вузлів в принципової схемою. Глава 6 расчетно-пояснительной записки містить специфікації на розроблювану систему (модульна структура, опис користувальницького інтерфейсу, специфікація на програмні модулі). У розділі 7 расчетно-пояснительной записки обраний метод тестування, наведено результатів тестування. Глава 8 расчетно-пояснительной записки містить інструкцію користувача по роботі у системи та обмеження на розроблену программу.
Два наукових напрями покликані зіграти особливу роль научно-техническом прогресі. Цетеорія систем і теорія інформації. Особливість зазначених наукових напрямів полягає у їх загальності. Справді, теорія систем і теорія інформації мають прямий стосунок решти наук, явищ будь-якого фізичного природи й до всіх видів діяльності людини. Досить назвати таке категоричне твердження у цій приводу: «Інформація є загальне властивість матерію та міра організація систем». У результаті науково-технічної революції наука про інформацію розвивалася, як дисципліна, що має низку напрямів. Діяльність людей пов’язані з переробкою й використанням матеріалів, енергії та інформації. Відповідно розвивалися наукові технічні дисципліни, відбивають питання технології, енергетики, і інформатики. Інформаційна техніка є порівняно нової галуззю, яке здобуло найбільше розвиток на етапі розвитку та застосування електронних обчислювальних машин (ЕОМ) і автоматизованих системам управління (АСУ). Серед нових дисциплін (дослідження операцій, системотехніка, адміністративне управління) інформаційні наука і є одним з підставових положень. До інформаційної техніці ставляться кошти, службовці до, підготовки, передачі, переробки, збереження і уявлення будь-якої інформації, одержуваної від чоловіка, природи, машини, загалом від будь-якого об'єкта спостереження та управління. Комплексне застосування цих коштів приводить до створення більших коштів та складних інформаційних систем. Із передачею і обробкою інформації пов’язані дії будь-якого автоматичного устрою, поведінка живої істоти, творча діяльність людини, розвиток науки і техніки, економічні та соціальні перетворення на світі початку й сама життя. Якщо матеріал (речовина) і енергія порівняно повно вивчені, то закони отримання, перетворення та збільшення використання інформації ще не є відомої областю, таящей багато несподіваних проявлений.
Сучасні системи телемеханіки краще захищені від перешкод з допомогою досконаліших кодів, а стиснення даних дозволяє обсяг переданої інформації з тим самим каналам связи.
У цьому роботі розглядатимуть помехозащищенный (чи коригувальний) код — код Файра. Це циклічний код, який виявляє і реформуючий пакети помилок. Особливості цього коду розглядатимуться дальше.
1. Теоретичне введение.
1.1. Постановка задачи.
Побудувати математичну модель заданого коригувального коду, знайти творчу матрицю коду, технічно реалізувати кошти на його кодирования/декодирования (лише на рівні принципової схемы).
Тип коду: Файра.
Кількість переданих повідомлень: 63.
Кодирующая здатність коду: bs=3 br=4.
1.2. Поняття двійкових циклічних кодов.
1.2.1. Загальні поняття і определения.
Будь-який груповий (n, k) — код то, можливо записаний у вигляді матриці, що включає k линейно-независящих рядків по n символів, і, навпаки, будь-яка сукупність k линейно-независящих n-разрядных кодових комбінацій може розглядатися як утворює матриця деякого групового коду. Серед усього розмаїття таких кодів можна назвати коди, які мають рядки їхнім виокремленням матриць пов’язані додатковим умовою цикличности.
Усі рядки котра утворює матриці такого коду можна отримати циклічним зрушенням однієї комбінації, званої котра утворює для даного коду. Коди, задовольняють цій умові, дістали назву циклических.
Циклічні коди ставляться до блокових систематичних кодів, в яких кожна комбінація кодується самостійно (як блоку) таким чином, що інформаційні k і контрольні m символи завжди перебувають у певних местах.
Можливість виявлення й виправлення практично будь-яких помилок при відносно малій надмірності проти іншими кодами, і навіть простота схемної реалізації апаратури кодування і декодування зробили ці коди широко распространенными.
Теорія циклічних кодів виходить з теорії груп, і алгебрі багаточленів над полем Галуа.
Багаточлен (поліном), що можна у вигляді твори багаточленів нижчих ступенів, називають процитованими (у цьому полі), в іншому разі не процитованими. Неприводимые багаточлени грають роль, подібну з простими числами теоретично чисел. Неприводимые багаточлени P (X) можна записати як десяткових чи двійкових чисел, або у формі алгебраического многочлена.
Багаточлен на полі двійкових чисел називається неприводимым, коли він ділиться на всі сто лише з себе" чи на единицу.
У основу циклічного кодування належить використання неприводимого багаточлена P (X), який стосовно циклічним кодам називається що створює, генератором чи виробляють многочленом (полиномом) .
1.2.2. Методи побудови циклічних кодов.
Як інформаційних символів k для побудови циклічних кодів беруть комбінацію двоичного коду попри всі поєднання. У випадку, якщо задану кодову комбінацію G (X) помножити на утворюючий багаточлен P (X), вийде циклічний код, у якого тими чи інші корректирующими властивостями залежно від вибору P (X). Але цього коді контрольні символи m розташовуватимуться в різноманітних місцях кодовою комбінації. Такий код перестав бути систематичним, що перешкоджає його схемную реалізацію. Ситуацію можна значно спростити, якщо контрольні символи приписати наприкінці коду, т. е. після інформаційних символов.
З цією метою зручно скористатися наступним методом. 1. Множимо кодову комбінацію G (X), що її хочемо закодувати, на одночлен Xm, має той самий рівень, як і утворює багаточлен P (X). 2. Ділимо твір G (X)Xm на утворюючий багаточлен P (X).
G (X)Xm / P (x)=Q (X)+R (X)/P (X),.
(1.1).
де Q (X) — приватне від розподілу; R (X) — остаток.
Примножуючи вираз (1) на P (X) і переносячи R (X) до іншої частина рівності, згідно з правилами алгебри двоичного поля, т. е. без зміни знака на зворотний, получаем.
F (X)=G (X)P (x)= G (X)Xm+R (X).
(1.2).
Таким чином, відповідно до (2), циклічний код, тобто. закодоване повідомлення F (X), можна утворити двома способами:
1) множенням одній з комбінацій двоичного коду попри всі сочетания.
[комбінація Q)(X) до тієї ж групі тієї самої коду, як і задана комбінація G (X)] на утворює багаточлен P (X).
2) множенням заданої кодовою комбінації G (X) на одночлен Xm, має той самий рівень, як і утворює багаточлен P (X), з додаванням до цього твору залишку R (X), отриманого після розподілу твори G (X)Xm на утворюючий багаточлен P (X).
Свойства утворить багаточлена: 1. Усі дозволені комбінації циклічного коду діляться на утворює багаточлен без остака. 2. На утворюючий багаточлен ділиться на всі сто двочлен Xn+1.
1.3. Технічні кошти кодування для двійкових циклічних кодов.
Основу які кодують і декодирующих пристроїв двійкових циклічних кодів становлять регістри зсуву з зворотними зв’язками, дозволяють здійснювати як множення, і розподіл багаточленів з приведенням коефіцієнтів по модулю 2.
Усі відомі які кодують устрою для будь-яких типів циклічних кодів, виконані на регістрах зсуву, можна до двох типам схем відповідно до методам кодування розглянутим выше.
З допомогою схем першого типу обчислюються значення перевірочних символів шляхом безпосереднього розподілу багаточлена G (X)Xm на утворює багаточлен P (X). Це з допомогою регістру зсуву, що містить n-k розрядів (рис. 1.1). У цій схемі коефіцієнти кодованого багаточлена беруть участь у зворотний зв’язок не через n-k зрушень, а відразу з першого такту. Це дозволяє усунути розрив інформаційними і перевірочними символами.
Рис. 1.1. Кодуючий пристрій для циклічного коду з урахуванням (n-k).
— разрядного регістру сдвига.
У вихідному стані ключ К1 перебуває у становищі 1, а ключ К2 замкнутий. Інформаційні символи одночасно надходять як і лінію зв’язку, і у регістр зсуву, де за k тактів утворюється залишок. Потім ключ К2 розмикається, ключ К1 перетворюється на становище 2 і залишок вступає у лінію связи.
З допомогою схем другого типу обчислюють значення перевірочних символів як лінійну комбінацію інформаційних символів, т. е. побудовано з урахуванням систематичних кодів. Кодуючий пристрій будується з урахуванням kразрядного регістру зсуву. Виходи осередків пам’яті підключаються до сумматору в ланцюга зворотний зв’язок відповідно до виглядом генераторного багаточлена 1.4. Коди Файра.
Під пакетом помилок довгою b розуміють такий її різновид комбінації перешкоди, у якому між крайніми розрядами, ураженими перешкодами, міститься b-2 разряда.
Коди Файра можуть виправляти пакет помилок довгою bs і виявляти пакет помилок довгою br (в кодах Файра поняття кодового відстані d не используются).
Утворюючий багаточлен коду Файра P (X)ф визначається з выражения.
P (X)ф= P (X)(Xc-1), (1.3) Де P (X) — неприводимый багаточлен ступеня [pic]L. З принципу побудови коду слід, что.
L? bs, (1.4) з? bs+ br-1 (1.5) У цьому з на повинен ділиться нацело на число e, де e=2L -1 (1.6).
Неприводимый багаточлен P (X) обирають з таблиці, відповідно до рівнянню (4), але те щоб задовольнялося умова (6). Довга слова n дорівнює найменшій загальному кратному чисел з і e, бо тільки у разі багаточлен Xn+1 ділиться на P (X)ф на всі сто: n=НОК (e, c) (1.7) Кількість контрольних символів m=c+L (1.8).
ВЫВОДЫ. У цьому главі було розглянуто теоретичні аспекти побудови двійкових циклічних кодів. Також вибрали кодуючий пристрій на основі n-k разрядного регістру. З’ясували, що спочатку необхідно знайти утворюючий багаточлен (по відповідним формулам), і потім з урахуванням цього багаточлена будувати кодуючий пристрій. У наступних розділах буде приведено реалізація кодуючий пристрій коду Файра на ЕОМ і приведено принципова схема кодера.
2. Розробка схеми що кодує устройства.
2.1. Побудова коду Файра.
Відповідно до технічному завданням і згідно з цими, отриманими на курсову роботу утворюючий багаточлен Файра P (X)ф. За формулою (1.4) знаходимо L? 3, звідки можна взяти L=3. З відповідних таблиць вибираємо неприводимый багаточлен P (X)=x3+x+1= 1011.
Відповідно до формулою (1.5): з? 3+4−1? 6, звідки можна взяти с=6. За формулою (1.6) отримуємо е=23−1=7. Бачимо, що з на е нацело не ділиться. Кількість перевірочних розрядів, підставляючи в формулу (1.8) значення L і З, одержимо m=6+3=9. Тоді довга коду відповідно до (1.7) дорівнює n = НОК (6,7) = 42 Тоді код Файра має вигляд (42,33). Утворює багаточлен Файра P (X)ф равен.
P (X)ф=(x3+x+1)(x6+1)=x9+x7+x6+x3+x+1=1 011 001 011 (2.1).
2.2. Структурна схема що кодує устройства.
Відповідно до многочленом (2.1) схему одержання перевірочних символів матиме 9 балів розрядний регістр з цими двома ключами.
Структурна схема кодера представлена на рис. 2.1.
Рис 2.1. Структурна схема кодера.
ВЫВОДЫ. У цьому главі отримано утворюючий багаточлен Файра, і навіть кількість інформаційних символів і перевірочних. По виду утворить багаточлена визначається розташування сумматоров в кодирующем устрої, а також кількість розрядів в регістрі зсуву. Далі розглядатиметься робота принципової схеми і реалізованої программы.
3. Аналіз технічного задания.
Відповідно до технічному завданням на курсову роботу необхідно побудувати математичну модель заданого коригувального коду, знайти творчу матрицю коду, технічно реалізувати кошти на його кодирования/декодирования (лише на рівні принципової схеми), розробити многомодульную програму реалізуючу кодуючий пристрій на ЭВМ.
Програма повинен мати стандартний інтерфейс, задовольняє прийнятим нормам, працювати правильно усім допустимих персональних ЕОМ, текст програми може бути удобно-читаемый і зрозумілий пользователю.
З метою спрощення процесу розбору тексту програми, програма складається з кількох модулів, кожен із яких виконує певні функции.
Можна виділити п’ять основних модуля: V Основна программа.
У ньому відбувається обробка результатів виконання інших модулів програми. Як-от: інтерфейс, модуль введення даних, модуль виведення даних, модуль обробки помилок. Відбувається виконання алгоритму. V Модуль ввода.
У ньому відбувається діалог користувача з програмою. Зокрема відбувається введення інформаційних символів. V Модуль вывода.
Тут реалізований висновок результатів виконання програми в зручною для читання формі. Результати представлені у вигляді таблиці. Також тут реалізований висновок котра утворює матриці. V Модуль обробки ошибок.
У ньому обробляються помилки при введення і реалізована захист програми від збоїв. V Интерфейс.
У цьому вся блоці реалізований інтерфейс програми взаємодії користувача з ЭВМ.
Інтерфейс складається з горизонтального меню і рядки статусу. Основні пункти меню: V Про программе.
У пункті подана коротка інформацію про програмі. V Задание.
Викладено повна завдання. V Работа.
Тут реалізований введення даних, і виконання основного алгоритму, отримання результатів та виведення їх у екран в зручною для читання форме.
Программа повинна коректно закінчувати своєї роботи, без хибних ситуаций.
ВЫВОДЫ. У цьому главі розглянуті умови реалізацію програми та поставлені конкретну мету. Тут було нагадування про модульної структурі програми, у наступному главі модульна структура розглядатиметься докладніше. Також розглядатимуться аспекти, пов’язані у реалізації користувальницького интерфейса.
Робота устройства.
Принципова схема що кодує устрою приведено в приложении.
Дані на вхід що кодує устрою надходять починаючи з старшого розряду. Інформація надходить на DD12.1 акумулятор по модулю 2, виконаний на ІМС К555ИП5. Щойно включили харчування на схему, то через ланцюжок R4, C3, DD17.2, DD17.3 відбувається початковий скидання лічильників DD10, DD11. Це виходить оскільки у початковий час, при різкому підключенні харчування конденсатор С3 не встигає зарядится. Нею виходить логічний нуль. Цей нуль через інвертори DD14.2, DD14.3, виконані на К155ЛИ1, перетворюється на одиницю і робить на входи лічильників РЄ, лічильник перетворюється на режим записи, результаті чого відбувається запис в лічильники даних із входів D1-D4. Та оскільки ці входи заземлені, то, на виходи лічильника запишуться нулі. Сталося початкова обнуління. Після закінчення короткого проміжку часу конденсатор С3 заряджається рівня логічного одиниці, і лічильники переходить до режим рахунки імпульсів. Оскільки лічильники обнулялись то, на тригер DD15.2 на інверсний вхід R надходить нуль і тригер встановиться в нуль. Цей нуль не вдома инвертора DD14.1становится одиницею і робить на інверсний вхід R триггера DD15.1. Тригер зберігає своє попереднє нульовий значення, оскільки вхід K заземлен, але в J надходить нуль зі лічильника. Тоді на елемент DD13.3 надходитиме нульової рівень. Але DD13.3 є важливим елементом «І», на його виході завжди буде нуль. З іншого боку з інверсного виходу триггера на «І» надходить логічна одиниця і вихідний сигнал залежатиме від вхідного. І ця одиниця надходить на DD13.5. Елементи DD13.3, DD13.4, DD13.5 виконують роль ключів. Коли не вдома триггера DD15.1 логічний нуль, то замкнутий ключі К1, а К2 перебуває у становищі 1 [див. Теоретичне запровадження], сигнал зі входу безпосередньо надходить для виходу, а регістрах формується залишок. Коли виході триггера DD15.1 логічна одиниця, то ключі К1 розімкнений, а К2 перебуває у становищі 2 .
Вхідний сигнал через ключ DD13.4 надходить для виходу, а ще через ключ DD13.5 на вхід регістру DD1. Запис в регістр відбувається послідовно зі зсувом вліво, відповідно до тактируемыми імпульсами. У схемою дев’ять регістрів (Ступінь утворить багаточлена). Кожен регістр виконує затримку однією такт. Поки тригер DD15.1 перебуває у нулі в регістрах за K-тактов обчислюються перевірочні символы.
Тригер DD15.2 управляє роботою лічильників і тригером DD15.1. Щойно лічильники досчитали до k, тобто. минуло k символів то DD15.1 перекидається в одиницю, ключі DD13.5, DD13.4 відкриваються, а DD13.3 закривається і з регістрів на вхід надходять перевірочні символи за n-k тактів. Коли лічильник дорахує до n тригер DD15.2 перекинеться в одиницю і буде обнуління регістрів, лічильників і триггера DD15.1, т. е. схема готовий приймати нову комбинацию.
Тимчасові діаграми роботи кодера наведені у додатку .
ВЫВОДЫ. У цьому главі була докладна описана робота принципової схеми. Далі розглянуть окремі елементи принципової схеми та його описание.
5.Выбор вузлів принципової схемы.
5.1. Розрахунок генератора тактових импульсов.
Генератор тактових імпульсів на ІМС DD1 К555АГ3. Принципова схема генератора приведено на рис. 5.1. Період коливань імпульсів одержуваних з автогенератора Т = 1 мс.
Тривалість імпульсу: tи = 0.5Т = 0.5 мс.
Тривалість паузи: tп = 0.5Т = 0.5 мс.
Розрахуємо параметри RC елементів генератора:
[pic];
[pic];
Переймаючись С1 = С2 = 0.1 мкФ, имеем:
R1 = 5 кОм; R2 = 5 кОм.
5.2. Лічильник К555 ИЕ10.
Для підрахунку числа імпульсів використовуємо два лічильника К555 ИЕ10.
Мікросхема К555 ИЕ10 — це синхронний, четырехразрядный, реверсивний, двоично-десятичный лічильник з попереднім записом і виходом перенесення. Умовне позначення і цоколевка дано на рис. 5.2.
Особливістю даного лічильника є його побудова з синхронного принципу, т. е. все тригери переключаються одночасно від однієї тактового імпульсу. Лічильник запускається позитивним перепадом тактового імпульсу, подаваним на вхід синхронізації З. Скидання всіх тригерів в нульовий стан асинхронний за загальним входу скидання R, т. е. здійснюється напругою низького рівня, незалежно від сигналів діючих на входах З, РЄ, СЕР, СЕТ.
Лічильник встановлюється в попереднє стан за наявності на вході паралельної завантаження РЄ напруги низького рівня. І тут дозволена подача сигналів на тригер через входи паралельної установки.
D0 — D3 в останній момент приходу позитивного перепаду на вхід С.
Для синхронного каскадирования мікросхема має дві входу дозволу СЕР і СЕТ, і навіть вихід МС (закінчення рахунки). Лічильник вважає тактовые імпульси якби входах СЕТ і СЕР напруги високого уровня.
Вхід СЕТ наступного лічильника сполучається з виходом МС попереднього. На виході МС з’явиться напруга високого рівня, якщо вихідний код лічильника 1111=15, але в вході СЕТ присутній напруга високого рівня. Стану лічильника наведені у таблиці 1.
Таблиця 1.
|Режим роботи |Входи |Виходи | | |R |З |CЕР |СЕТ |РЄ |Dn |Qn |МС | |Скидання |0 |Х |Х |Х |Х |Х |0 |0 | |Паралельна |1 |(|Х |Х |0 |0 |0 |0 | |завантаження | | | | | | | | | | |1 |(|Х |Х |0 |1 |1 |1 | |Рахунок |1 |(|1 |1 |1 |Х |Рахунок |1 | |Збереження |1 |Х |Х |0 |1 |Х |Qn |1 | | |1 |Х |0 |Х |1 |Х |Qn |1 |.
5.3. Тригер К555 ТВ6.
Микросхема К555 ТВ6 містить два J-K триггера із загальним входом харчування і зображено на Рис .5.3. Вхід синхронізації З в усіх тригерів інверсний динамічний, тому б дані з входів J і K переносяться для виходу Q по негативному перепаду імпульсу З. Коли імпульс переходить від високого рівня до низькому сигнали на входах J і K нічого не винні змінюватися. Стану для триггера наведені у таблиці 2 .
Таблиця 2. Стану триггера К555 ТВ6.
|Режим роботи |Входи |Виходи | | | R | J |K |З |[pic] |[pic] | |Асинхронний скидання |0 |Х |Х |Х |0 |1 | |Перемикання |1 |1 |1 | |[pic]=1|[pic]=0| |Збереження |1 |0 |0 | |1 |0 | |Завантаження 1 |1 |1 |0 | |1 |0 | |Завантаження 0 |1 |0 |1 | |0 |1 |.
5.4. Регістр К155ИР13.
Микросхема К155ИР13 універсальний восьмиразрядным регістром зсуву з більшими на функціональними можливостями. Регістр може працювати у наступних режимах: послідовного введення інформації з про зрушенням вправо;
последовательного введення інформації з про зрушенням вліво; паралельного введення; зберігання; установка нулів (очищення, сброс).
Мікросхема має такі висновки (рис. 5.4): інформаційні входи послідовного введення інформації - DR при зсуві вправо і DL при зсуві вліво; вісім входів D0-D7 для паралельного введення; тактовий вхід З; управляючі входи S0 і S1 для вибору режиму; вхід R для установки тригерів в нульовий стан і вісім виходів від розрядів Q0-Q7.
Рис. 5.4. Регістр К155ИР13.
Робота регістру як послідовного введення зі зсувом вправо відбувається за S1=0 і S0=1. Інформація в послідовному коді подається на вхід, починаючи з молодших розрядів. Введення і зрушення всього числа однією розряд приміром із кожним перепадом 0,1 тактових импульсов.
Послідовний введення зі зсувом вліво здійснюється за S1=1 і S0=0. Вхідні інформація повинна надходити на вхід DL зі старших разрядов.
Для паралельного введення зі входів D0-D7 обох управляючих входах має бути S1=S0=1. Інформація зі входів D0-D7 буде записана в тригери і вийде в виходах Q0-Q7 по перепаду 0,1 тактового импульса.
Щоб уникнути збоїв, зміна станів управляючих входів S1 і S0 повинна відбуватися при С=1. Коли обох управляючих входах S1= S0=0, тригери не переключаються, т. е. має місце режим зберігання. Установка нулів (очищення регістру) здійснюється імпульсом U0 на вході R. Очищення регістру відбувається незалежно стану інших входів. Під час дії імпульсу R=0 регістр бездіяльний. За виконання решти операцій необхідно підтримувати R=1. Робота регістру приведено в таблиці 3.
Таблиця 3.
|Входы |Виходи |Режим роботи | |R|C |S0 |S1 |DR |DL |Di |Q0 |Q1-Q6 |Q7 | | |1|(|1 |1 |1 |X |Dni |Dn0 |Dn1… |Dn7 |Паралельний | | | | | | | | | |Dn6 | |введення. | | | | | | | | | | | |Збереження | |1|(|0 |0 |X |X |X |Qn0 |Qn1… |Qn7 | | | | | | | | | | |Qn6 | | | |1|(|1 |0 |X |0 |X |Qn1 |Qn2… |0 |Зрушення вліво | | | | | | | | | |Qn7 | | | |1|(|1 |0 |X |1 |X |Qn1 |Qn2… |1 | | | | | | | | | | |Qn7 | | | |1|(|0 |1 |0 |X |X |0 |Qn0… |Qn6 |Зрушення вправо | | | | | | | | | |Qn5 | | | |1|(|0 |1 |1 |X |X |1 |Qn0… |Qn6 | | | | | | | | | | |Qn5 | | | |0|x |x |x |X |x |X |0 |0 … 0 |0 |Скидання |.
ВИСНОВКИ. У цьому главі були описані основні елементи, застосовувані при реалізації принципової схеми кодера. Було також дана їх коротка характеристика і знаходять способи включення елементів. Всі використовувані елементиТТЛ. У наступних розділах розглядатиметься програмна реалізація що кодує устрою (його математична модель).
6. Опис розробки системы.
6.1. Модульна структура системы.
Як мовилося раніше у другому розділі програма складається з п’ятьох модулей:
— Основна программа.
— Модуль ввода.
— Модуль вывода.
— Интерфейс.
— Модуль обробки помилок. Модульна структура програми представлена малюнку 6.1.
Рис 6.1 Модульна структура программы.
Користувач веде діалог із програмою через інтерфейс. Від інтерфейсу управління передається в Основну програму, де аналізуються команди користувача і виконується передача управління відповідним модулями. Якщо користувач вибрав пункт меню і пункт підменю, то управління Основний програми передається в Модуль введення і далі користувач веде діалог із цим модулем. Щойно натиснута клавіша, то управління бере Модуль обробки помилок. Цей модуль перевіряє виконання обмежень виявляє помилки при введення. Якщо помилок немає, то управління передається в Основну програму і далі в Модуль виведення. Бо інакше користувачеві надається шанс вкотре запровадити данные.
6.2. Опис користувальницького интерфейса.
6.2.1. Меню системы.
Інтерфейс системи виконаний у графічному режимі з усіх встановлених ГОСТІВ. Екран розбитий втричі частини: верхня частина — горизонтальне меню з які лише вікнами; нижня частина — рядок стану; середня частина — вікно диалога.
Горизонтальне меню складається з трьох пунктов:
V Работа.
У пункті передбачено котре випадає меню для полегшення пошуку відповідного пункту. У підменю перебувають такі пункты:
V Ввод.
V Вывод.
V Выход.
V Про программе.
V Помощь.
Рух по меню здійснюється з допомогою клавіш управління курсором. Кожен пункт меню активізується при натисканні клавіші. Обробку пунктів меню здійснює Основна програма. До неї передається управління економіки й відповідні координати пунктів на выполнение.
У пункті меню, в підпункті здійснюється введення даних, необхідні роботи програми. Причому у Модулі введення передбачено редагування який вводимо результату. У підпункті відбувається виконання алгоритму та виведення котра утворює матриці на екран в зручному для візуалізації виде.
У підпункті відбувається попередження користувача про вихід із програми з відповідними запросами.
У пункті дана коротка анотація программы.
У пункті представлена допомогу з обробці пунктів меню і з відповідним клавишам.
6.2.2. Обробка хибних ситуаций.
У конкурсній програмі передбачена захист від введення нестандартних даних, а також захист від натискання різних клавіш. Для обробки цих ситуацій передбачено Модуль обробки помилок. Користувач може запроваджувати лише 0 чи 1.
Якщо користувач ввів помилково неправильні дані, те в нього є можливість виправитися на стадії введення. Для цього у програмі передбачено повторний введення з данными.
6.3. Специфікація на програмні модули.
Процедура initgrf.
Вхідні параметры: Нет.
Вихідні параметры: Нет.
Що Їх функции: Инициализация графики.
Особенностей:Нет.
Функція Sum (F, P: Byte): Byte;
Вхідні параметри: F, P: Byte.
Вихідні параметри: Sum.
Що Їх функції: Підсумовування по модулю 2.
Особенностей:Нет.
Процедура Dopoln (Var F: Mass1);
Вхідні параметри: F: Mass1.
Вихідні параметри: F: Mass1.
Що Їх функції: Множення на старшу ступінь утворить багаточлена .
Особливостей: НЕМАЄ .
Процедура Delenye (F: Mass1;P: Mass2);
Вхідні параметри: F: Mass1;P: Mass2.
Вихідні параметри: нет.
Що Їх функції: Розподіл багаточлен на многочлен.
Особенностей:Имеет свої особенности.
Процедура Ed_Matrix (Var A: Two_Matrix);
Вхідні парамеры: Var A: Two_Matrix.
Вихідні параметри: Var A: Two_Matrix.
Що Їх функції: Упорядкування одиничної матрицы.
Особливості: нет.
Процедура Obr_Matrix (Var A: Two_Matrix);
Вхідні параметри A: Two_Matrix.
Вихідні параметри: A: Two_Matrix.
Що Їх функції: Одержання котра утворює матрицы.
Особливостей: нет.
Процедура Visual (Var sa: mass);
Вхідні параметри: Var sa: mass.
Вихідні параметри: Var sa: mass.
Що Їх функції: Введення інформаційних символов.
Особливостей: нет.
Процедура OutPutObr_Matrix (x, y: Integer;Obr_Matr :
Two_Matrix);
Вхідні параметри: x, y: Integer;Obr_Matr :
Two_Matrix);
Вихідні параметры: Нет.
Що Їх функції: Висновок котра утворює матрицы.
Особенностей:Является универсальной.
Процедура OutPut (x, y: Integer;F, A: Mass1);
Вхідні параметри: x, y: Integer;F, A: Mass1.
Вихідні параметры: Нет.
Що Їх функції: Висновок отриманої кодовою комбинации.
Особливостей: нет.
Функція _Exit (Fon, Color: Integer;Col_Simv: Byte): integer;
Вхідні параметри Fon, Color: Integer;Col_Simv: Byte.
Вихідні параметри: _Exit: integer.
Що Їх функції: вихід із программы.
Особливостей: нет.
Основна программа.
Вхідні параметры: нет.
Вихідні параметры: Нет.
Що Їх функции: Обьединяет у собі все процедури і управляє работой.
Особенностей:Нет.
ВЫВОДЫ. У цьому главі були описані принципи розробки програми і інтерфейсу. Дана модульна структура програми розвитку й межмодульные зв’язку. Описано принцип роботи програми розвитку й дана специфікація на програмні модулі. Якщо це все об'єднати, неважко буде дати раду окремих деталях програми. Далі буде розглянуто одна з головних заходів при програмуванні - тестирование.
7. Тестирование.
7.1. Вибір методики тестирования.
Без тестування програм неможливо було створити правильно працюючу програму, бо ми завжди існують якісь граничні умови, за межами яких програма дає помилки. У цьому годі було плутати налагодження програм, тож тестирование.
Налагодження програм — використовується при неправильної роботі программы.
Тестування — шукає помилки. Є багато методів тестирования:
1) Статична тестування є найбільш формалізованим і автоматизируемым методом перевірки програм. Як еталонів застосовуються правила структурного побудови програмних модулів і методи обробки даних. Перевірка ступеня цих правил проводиться без використання об'єктного коду програми шляхом формального аналізу тексту програми мовою програмування. Оператори і операнды тексту програм у своїй аналізується в символьному вигляді, тому такий метод називають символьним тестированием.
2) Детерминированное тестування є найбільш трудоёмким і детализирующим. При детерминированном тестуванні контролируестся кожна комбінація вихідних еталонних даних, і відповідна їй комбінація результатів функціонування програми. Це дозволяє виявляти відхилення результатів від еталон і що реалізують даних, у яких це відхилення произошло.
3) Стохастическое тестування застосовується у тому випадку, коли неможливо у непростих завданнях перебрати все комбінації вихідних даних, і проконтролювати результати функціонування програми кожному їх. У цьому вихідні тестові дані задаються безліччю випадкових величин з відповідними распределениями й у порівняння отриманих результатів використовуються також розподілу випадкових величин. Стохастическое тестування застосовується у основному задля виявлення ошибок.
4) Тестування у реальному масштабі часу. У процесі такого тестування перевіряється виконання програм, тож обробка вихідних даних із урахуванням часу на їхнє надходження, тривалості і пріоритетності обробки, динаміка використання пам’яті і т.д.
5) При висхідному тестуванні передусім перевіряються модулі нижніх ієрархічних рівнів, яких поступово підключаються викликають їх модулі. У цьому забезпечується працездатність що викликаються компонент і функції групи програм перевіряються у природній виконанні. Основні труднощі перебувають у необхідності повного відродження тестових наборів при підключенні кожної нової програми вищого уровня.
6) При низхідному тестуванні перевірки розпочинаються з програм управління та молодіжні організації обчислювального процесу. Спочатку тестується котра управляє ядро комплексу програм, тож програми рішення функціональних завдань, розміщених на вищих ієрархічних уровнях.
До них поступово підключаються для тестування програми наступних нижчих ієрархічних рівнів. Перевагою такого методу є можливість та розвитку наборів тестових даних із мері підключення програм нижніх уровней.
На практиці зазвичай використовуються три стратегії тестирования:
1) Тестування програм як «Чорного ящика ». Має мета з’ясування обставин, у яких поведінка програм відповідає специфікації. Тестові дані складаються й закони використовують не враховуючи знання внутрішньої структурі программы.
2) Тестування програм як «Білого ящика ». Тестові набори даних проектуються з урахуванням внутрішню логіку програми. Мета тестирования.
— перевірити кожну гілка, кожен шлях збереження та кожен оператор. Специфікація програми у своїй не используется.
3) Реальна стратегія зазвичай поєднує обидва методу. З допомогою метода.
" чорного ящика «делается:
V Перевірка в нормальних условиях.
V Аналіз граничних значений.
V Перевірка у виняткових ситуациях.
V Припущення про ошибке.
З допомогою методу «Білого ящика «робиться: V Покриття операторів. V Покриття рішень. V Покриття условий.
7.2. Результати тестирования.
При тестуванні програми, був використаний висхідний метод тестування. З допомогою цього спочатку були протестовані окремі модулі програми, та був і весь програма. Результати тестування показані малюнку Додатка. Тестування системи включало у собі: — тестування введення різних набору даних; - отримання комбінацій для коду із кожним що створює многочленом;
Тестування введення різних наборів кодових комбінацій не показало ні однієї яка виключає ситуации.
ВИСНОВКИ. У цьому главі був обраний метод тестування системи. У результаті тестування знайшли помилки, котрі були усунуті. Через війну тестування отримали, що ваша програма є працездатною. Програма правильно знаходить творчу матрицю і будує код Файра.
8. Обмеження на разработку.
На виконання програми необхідно дотримуватися деякі вимоги, а саме: 1) Програма може працювати на персональні комп’ютери з процесором не нижче 80 486. 2) Задля реалізації інтерфейсу необхідно мати кольорової монітор з адаптером не нижче VGA. 3) RAM не нижче 8MB. 4) Windows 95/98/NT.
8.1. Інструкція пользователю.
У конкурсній програмі розроблений інтерфейс, підходящий за стандартами. Інтерфейс реалізований у графічному режимі. Меню горизонтальне, з які лише вікнами. Головне вікно програми зображено на рис. Додатка 2. Головне меню програми містить такі пункти: 1. Про торішню програму — дана коротка анотація виконаною програми. 2. Робота — містить підміню з пунктами:
1. Введення — дозволяє користувачеві введення відповідних данных.
Тут передбачена захист від некоректного введення. У пункті можна запровадити будь-яку інформаційну комбинацию.
2. Висновок — виконується алгоритм побудови котра утворює матриці, з наступному висновком в экран.
3. Вихід — забезпечує вихід із програми. Використовується захист від випадкового выхода.
Пункти меню активізуються натисканням клавіші. При появи кожного вікна в рядку статусу з’являється повідомлення про можливих действиях.
Рух по меню здійснюється клавішами переміщення курсору на клавіатурі. Також використовується «гаряча клавіша «Esc. При натисканні неї відбувається автоматичний вихід із программы.
Заключение
.
У цьому роботі розглянуто одне із безлічі методів кодування. Гідність цього методу у цьому, що може знаходити виправляти пачки помилок. Також все циклічні коди легко піддаються схемної реализации.
Усі елементи принципової схеми мають серії К155 чи К55. Це одні з найпоширеніших і досить не дорогих вітчизняних мікросхем, легко доступна кожному пользователю.
Програма реалізована мовою Turbo Pascal 7.0. Це найбільш поширений нині мову програмування. Тож у програмі розібратися труднощів не будет.
Кодування інформації найактуальніша в наші дні у зв’язки Польщі з розвитком комп’ютерних мереж. Необхідно передавати інформацію швидко і точную.
Програма тестувалися висхідним методом. З допомогою цього спочатку були протестовані окремі модулі програми, та був і весь программа.
Проведено тестування програми необхідне перевірки працездатності програми, яке засвідчило, що ваша програма стійко дбає про все режимах праці та виконує поставлену задачу.
Програма є універсальною і то, можливо вдосконалена будь-яким користувачем, разбирающимся у мові програмування Pascal 7.0 .
Дана загальна модульна структура програма, яка може допомогти ползователю дати раду в загальній структурі програми розвитку й вдосконалити программу.
1. Тёмников Ф. Е.
Теоретичні основи інформаційної техники:
Учеб.пособие для вузов-2-е вид., перераб. і доп.-М.:Энергия, 1979.;
512 з., ил.
2. Липаев В.В.
Тестування програм.- М.: Радіо і связь, 1986. — 296 з.: ил.
3. Тутевич У. Н.
Телемеханика:
Учеб.пособие для студентів вузів спец. «Автоматика і телемеханика"-2-е вид., перераб. і доп.-М.: Высш. Шк., 1985. 423 з., ил.
4. Зельдін Є. А.
Цифрові інтегральні мікросхеми в информационн-измерительной.
апаратурі. -Л.: Энергоатомиздат. Ленингр. отд-ние, 1986. 280 з.: ил.
Приложения.
Додаток 1. Перелік элементов.
| | | | | |Поз. |Найменування |Кол|Примечания | |Обозн. | | | | | |Конденсатори | | | |С3 |К10−60 — 10 мКф + 10% |1 | | | С1, С2 |К10−17а — 0.1 мКф + 0.1% |2 | | | |Мікросхеми. | | | | |К555АГ3 |1 | | | |К155ИР13 |9 | | | |К555ТВ6 |1 | | | |К555ИЕ10 |2 | | | |К155ЛН1 | | | | |К155ЛИ1 | | | | |Резисторы | | | |R1-R2 |С2−29 В 5Ком±0.1% |2 | | |R4 |МЛТ-0.125 — 30 Клубок + 10% |1 | | |R5 |МЛТ-0.125 — 1.5Koм + 10% |1 | |.
Приложение 2. Блок-схема алгоритма.
Приложение 3. Текст програмных модулей.
Uses Crt, Graph, AlexUnit; Const _N = 33; _M = 10;
Type Delim_Mas = array[1. 100] of byte; Mass1 = array[1. _N+_M-1] of byte; Mass2 = array[1. _M] of byte; Mass3 = array[1. _M-1] of byte; Mas_Exit=array[1.2] of String; Two_Matrix=array[1. _N, 1. _N+_M-1] of byte;
Const P: Mass2 = (1,0,1,1,0,0,1,0,1,1); Y_No: Mas_Exit = («Так », «Ні «);
Var.
F, Cicle_Kod: Mass1; R: Mass1;
Delimoe: Delim_Mas;
Obraz_Matrix: Two_Matrix;
Mas: Mass; grDriver, grMode, ErrCode: Integer; flag: boolean;
_t, c, n, m, i, schot, N0, Code: integer;
Function Sum (F, P: Byte): Byte; {Підсумовування по модулю 2} Var і: Byte; Begin.
If ((F=1) and (P=1)) or ((F=0) and (P=0)) Then Sum:=0.
Else Sum:=1; End;
{———————————————-} Procedure Dopoln (Var F: Mass1); {Множення на старшу ступінь утворить багаточлена} Var і: Byte; Begin for i:=_N+1 to _N+_M-1 do F[i]: =0; End;
{————————————————} Procedure Delenye (F: Mass1;P: Mass2); {Розподіл багаточлен на багаточлен} Var i, j, t: Byte; K: Mass1; Begin.
For i:=1 to _N do.
Begin.
IF F[i]=1 Then Begin t:=1;
For j:=i to i+_M-1 do.
Begin.
K[j]: =Sum (F[j], P[t]);
F[j]: =K[j]; t:=t+1;
End;
End;
End; t:=1;
For i:=_N+1 to _N+_M-1 do.
Begin.
R[t]: =F[i]; t:=t+1;
End; End;
{————————————————————} Procedure Ed_Matrix (Var A: Two_Matrix); {Упорядкування еденичной матриці} Var і: Integer; Begin.
For i:=1 to _N do.
Begin.
A[i,_N+1-i]: =1.
End; End; {————————————————————}.
Procedure Obr_Matrix (Var A: Two_Matrix); {Одержання котра утворює матриці} Var i, j, t, Schot, l, m: Byte; K: Mass1; Begin.
Delimoe[1]: =1;
Schot:=1;
For i:=1 to _N do.
Begin.
IF Delimoe[i]=1 Then Begin t:=1;
For j:=i to i+_M-1 do.
Begin.
K[j]: =Sum (Delimoe[j], P[t]);
Delimoe[j]: =K[j];
t:=t+1;
End;
l:=1;
For m:=i+1 to i+_M-1 do.
Begin.
A[Schot,_N+l]: =Delimoe[m]; l:=l+1;
End;
End.
Else Begin l:=1;
For m:=i+1 to i+_M-1 do.
Begin.
A[Schot,_N+l]: =Delimoe[m]; l:=l+1;
End;
End;
Schot:=Schot+1;
End;
End;
Procedure InitGrf; {Ініціалізація графіки} Begin grDriver := Detect; InitGraph (grDriver, grMode, «c:subbpbgi »); if GraphResult grOk then Begin.
Halt (1); End; End;
Procedure Visual (Var sa: mass); {Введення інформаційних символів} Var i, x, y, k, Fon, Color, a: Integer;
Code: Integer; ch, chi: Char;
Stop:Boolean;
Elm: String;
Begin moveto (20,465); SetTextJustify (0,1); SetColor (0); outtext («Натисніть Enter »); x:=30; y:=225; k:=17; Fon:=1; Color:=14; Window_(30,150,610,260,1, «Введення нформационных символів »); SetTextStyle (1,0,4); SetColor (Fon); For i:=1 to _N Do.
Begin.
MoveTo (x+i*k, y);
Str (Sa[i], Elm);
OutText (Elm);
End; SetTextStyle (0,0,1); MoveTo (x+17,y-20); Str (_N, Elm); OutText (Elm); MoveTo (x+_N*17,y-20); Str (0,Elm); OutText (Elm);
SetTextStyle (1,0,4); i:=1;
MoveTo (x+i*k, y);
Setcolor (Color);
Str (Sa[i], Elm);
OutText (Elm);
Stop:=False;
Repeat.
Begin ch:=ReadKey;
Case ch Of.
#75:Begin.
Setcolor (Fon);
MoveTo (x+i*k, y);
Str (Sa[i], Elm);
OutText (Elm); i:=i-1; if (i_N)then i:=1;
SetColor (Color);
MoveTo (x+i*k, y);
Str (Sa[i], Elm);
OutText (Elm);
Stop:=False;
End;{вправо}.
" 1 " :Begin.
SetColor (7);
MoveTo (x+i*k, y);
Str (Sa[i], Elm);
OutText (Elm);
SetColor (Color);
MoveTo (x+i*k, y); sa[i]: =1;
F[i]: =Sa[i];
Str (Sa[i], Elm);
OutText (Elm);
Stop:=False;
End;
" 2 " :Begin.
SetColor (7);
MoveTo (x+i*k, y);
Str (Sa[i], Elm);
OutText (Elm);
SetColor (Color);
MoveTo (x+i*k, y); sa[i]: =0;
F[i]: =Sa[i];
Str (Sa[i], Elm);
OutText (Elm);
Stop:=False;
End;
#13:Begin Stop:=True; End;
End;
End;
Until (Stop);
SetTextStyle (0,0,1); End;
{———————————————————-} {Висновок котра утворює матриці} Procedure OutPutObr_Matrix (x, y: Integer;Obr_Matr: Two_Matrix); Var k, i, j: Integer;
Elm: String; Begin k:=12;
For i:=1 to _N Do.
Begin.
For j:=1 to _N Do.
Begin.
MoveTo (x+j*k, i*10+y);
Str (Obr_Matr[i, j], Elm);
OutText (Elm);
End;
End;
SetColor (4);
For i:=1 to _N Do.
Begin.
For j:=_N+1 to _N+_M-1 Do.
Begin.
MoveTo (x+j*k, i*10+y);
Str (Obr_Matr[i, j], Elm);
OutText (Elm);
End;
End; End;
{—————————————————} {Висновок отриманої кодовою комбінації} Procedure OutPut (x, y: Integer;F, A: Mass1); Var k, s: Integer;
Elm: String; Begin.
MoveTo (x+10,y-20);
Str (_N+_M-1,Elm);
OutText (Elm);
MoveTo (x+(_N+_M)*12−3,y-20);
Str (0,Elm);
OutText (Elm); k:=12;
For i:=1 to _N Do Cicle_Kod[i]: =F[i];
s:=1;
For i:=_N+1 To _N+_M-1 Do.
Begin.
Cicle_Kod[i]: =A[s]; s:=s+1;
End;
For i:=1 to _N Do.
Begin.
MoveTo (x+i*k, y);
Str (Cicle_Kod[i], Elm);
OutText (Elm);
End;
SetColor (4);
For i:=_N+1 to _N+_M-1 Do.
Begin.
MoveTo (10+x+i*k, y);
Str (Cicle_Kod[i], Elm);
OutText (Elm);
End;
End;
{————————————————-} {вихід із программы}.
Function _Exit (Fon, Color: Integer;Col_Simv: Byte): integer;
Var x, y, k: Integer;
Stop: Boolean;
Ch: Char; Begin Window_(250,200,450,300,1, «Вихід »); x:=225; y:=260; k:=80; SetTextStyle (0,0,1); SetColor (Col_Simv); For i:=1 to 2 do.
Begin.
MoveTo (x+i*k, y);
OutText (Y_No[i]);
End;
i:=1;
SetFillStyle (1,Fon); Bar (x+i*k-30,y-15,x+i*k+30,y+15);
MoveTo (x+i*k, y); Setcolor (Color); OutText (Y_No[i]); Stop:=False; Repeat ch:=ReadKey;
Case ch Of.
#75:Begin.
SetFillStyle (1,7);
Bar (x+i*k-30,y-15,x+i*k+30,y+15);
Setcolor (Col_Simv);
MoveTo (x+i*k, y);
OutText (Y_No[i]); i:=i-1; if (i2)then i:=2;
SetFillStyle (1,Fon);
Bar (x+i*k-30,y-15,x+i*k+30,y+15);
SetColor (Color);
MoveTo (x+i*k, y);
OutText (Y_No[i]);
Stop:=False;
End;{вправо}.
#13:Begin Stop:=True; _Exit:=i End;
End;{Case} Until Stop; SetTextStyle (0,0,0); End;
{————————————————-} {ОСНОВНА ПРОГРАМА } {————————————————-}.
Begin InitGrf;
Repeat flag:=false; Fon (3,2,GetMaxX-3,30); setcolor (0); moveto (20,465); SetTextJustify (0,1); outtext («Esc — Вихід »); Menu (3, «Робота », «Про торішню програму », «Допомога », «», «», «»); Case t Of.
1:Begin.
Repeat.
SetFillStyle (1,7); {Рядок состтояния}.
Bar (3,450,getmaxx-3,getmaxy-3);
SetColor (15);
Line (3,450,getmaxx-3,450);
Line (3,450,3,getmaxy-3);
SetColor (0);
Line (3,getmaxy-3,getmaxx-3,getmaxy-3);
Line (getmaxx-3,450,getmaxx-3,getmaxy-3);
{moveto (20,465);
SetTextJustify (0,1);
SetColor (0); outtext («Натисніть будь-яку клавішу … »);}.
VerMenu (3, «Введення комбінації «, «Утворює матриця », «Вихід », «», «», «»);
Case Np Of.
1: Begin.
Visual (Mas);
Dopoln (F);
Delenye (F, P);
Window_(30,300,610,410,1, «Закодоване повідомлення. Червоні символи — контрольні. »);
OutPut (40,370,F, R);
ReadKey;
SetFillStyle (1,3);
Bar (30,150,610,410);
End;
2: Begin.
Window_(30,50,610,445,1, «Утворює матриця »);
Ed_Matrix (Obraz_Matrix);
Obr_Matrix (Obraz_Matrix);
OutPutObr_Matrix (40,90,Obraz_Matrix);
ReadKey;
SetFillStyle (1,3);
Bar (30,50,610,450);
End;
3: Begin.
Case _Exit (1,15,0) of.
1: begin.
Np:=3; flag:=true; end;
2: Flag:=False; end.
End;
End;
Until (Np=3) or (Np=4);
Ramka_Off (x1,y1,x2,y2);
End;
2:Begin.
SetFillStyle (1,7); {Рядок состтояния}.
Bar (3,450,getmaxx-3,getmaxy-3);
SetColor (15);
Line (3,450,getmaxx-3,450);
Line (3,450,3,getmaxy-3);
SetColor (0);
Line (3,getmaxy-3,getmaxx-3,getmaxy-3);
Line (getmaxx-3,450,getmaxx-3,getmaxy-3);
Window_(100,80,510,400,1, «Про торішню програму »); moveto (130,130);
SetTextJustify (0,1); outtext («Ця програма є курсовою роботою »); moveto (300,145);
SetTextJustify (1,1); outtext («за курсом: »); moveto (300,160);
SetTextJustify (1,1); outtext («» Передача інформації «»); moveto (120,200);
SetTextJustify (0,1); outtext («Завдання: Побудувати кодуючий пристрій »); moveto (185,220); outtext («для коду Файра. Кодируемых повідомлень 63, «); moveto (185,240); outtext («число які виявляються помилок Br=4, число »); moveto (185,260); outtext («исправляемых помилок Bs=3. »); moveto (120,290); outtext («Студент: Іванов А. Є. »); moveto (120,310); outtext («Група: BM-1−97 »); moveto (120,330); outtext («Викладач: Каевченко. »); moveto (300,380);
SetTextJustify (1,1); outtext («СМОЛЕНСЬК 1999 р. »); moveto (20,465);
SetTextJustify (0,1);
SetColor (0); outtext («Натисніть будь-яку клавішу … »);
Readkey;
Ramka_Off (x1,y1,x2,y2);
End;
3:Begin.
SetFillStyle (1,7); {Рядок состтояния}.
Bar (3,450,getmaxx-3,getmaxy-3);
SetColor (15);
Line (3,450,getmaxx-3,450);
Line (3,450,3,getmaxy-3);
SetColor (0);
Line (3,getmaxy-3,getmaxx-3,getmaxy-3);
Line (getmaxx-3,450,getmaxx-3,getmaxy-3);
Window_(100,50,500,350,1, «Помощ »); moveto (120,110);
SetTextJustify (0,1); outtext («ПЕРЕСУВАННЯ ПО ГОРИЗОНТАЛЬНОМУ МЕНЮ. »); moveto (120,130); outtext («- | «); moveto (120,135); outtext («| | ПЕРЕСУВАННЯ ПО ВЕРТИКАЛЬНОМУ МЕНЮ. »); moveto (120,140); outtext («| «); moveto (114,150); moveto (114,155); outtext («АКТИВАЦІЯ ПУНКТУ МЕНЮ. »); moveto (140,200); outtext («У конкурсній програмі використані співвідношення: »); moveto (120,220); outtext («L >= Bs з >= Bs+Br-1 »); moveto (160,235); outtext («L »); moveto (120,240); outtext («e = 2 -1 m = з + L »); moveto (120,260); outtext («n = НОК (e, c) »); moveto (120,280); outtext («Після розрахунків отримали утворює багаточлен »); moveto (120,300); outtext («Файра: P (x)=1 011 001 011 »); moveto (20,465);
SetTextJustify (0,1);
SetColor (0); outtext («Натиснімо будь-яку клавішу … »);
ReadKey;
Ramka_Off (x1,y1,x2,y2);
End;
End; {Case} Until flag; closegraph; End.
|Анотація | | |Запровадження | | |1. Теоретичне запровадження | | | 1.1. Постановка завдання. | | | 1.2. Поняття двійкових циклічних кодів. | | | 1.2.1. Загальні поняття та визначенням. | | | 1.2.2. Методи побудови циклічних кодів. | | |1.3.Технические кошти кодування для двійкових | | |циклічних кодів. | | |1.4. Коди Файра. | | | 2. Розробка схеми що кодує устрою. | | |2.1. Побудова коду Файра. | | |2.2. Структурна схема що кодує устрою. | | | 3. Аналіз технічного завдання. | | | 4. Робота устрою | | | 5. Выбор вузлів принципової схеми. | | |5.1. Розрахунок генератора тактових імпульсів | | | 5.2. Лічильник К555 ИЕ10 | | | 5.3. Тригер К555 ТВ6 | | |5.4. Регістр К155ИР13. | | | 6. Опис розробки системи. | | |6.1. Модульна структура системи. | | |6.2. Організація користувальницького інтерфейсу. | | | 6.2.1. Меню системи. | | | 6.2.2. Обробка хибних ситуацій. | | |6.3. Специфікація на програмні модулі. | | | 7. Тестування. | | |7.1. Вибір методики тестування. | | |7.2. Результати тестування | | | 8. Обмеження розробці. | | |8.1. Інструкція користувача | | | Укладання. | | Список літератури. | | Додатка | |Додаток 1. Перелік елементів. | |Додаток 2. Блок схема алгоритму. | |Додаток 3. Текст програмних модулів. | | Додаток 4. Екранні форми. |.
———————————;
M2.
M2.
M2.
M2.
К1.
Вход Выход К2.
g0.
g1.
gn-k-1.
g2.
Обробка ошибок.
Модуль вывода.
Рис. 5.3. Тригер К555 ТВ6.
[pic].
Рис. 5.2 Лічильник К555 ИЕ10.
[pic].
Рис. 5.1. Принципова схема генератора.
[pic].
[pic].
Г.
Кодер
Счетчик.
=H0 + H1X + … + HkXk.
H (X)=.
G (X).
xn+1.
Основна программа.
Модуль ввода.
Интерфейс.