--PAGE_BREAK--2. Призначення та структура системи автоматизованого проектування MAX+PLUS II
Система автоматизованого проектування MAX+PLUS II являє собою інтегроване середовище для розробки цифрових пристроїв на базі програмувальних логічних інтегральних схем фірми Altera. Він забезпечує виконання всіх етапів, необхідних для випуску готових виробів:
1) створення проектів логічних пристроїв;
2) синтез структур і трасування внутрішніх зв'язків програмувальних логічних інтегральних схем;
3) підготовку даних для програмування або конфігурацію програмувальних логічних інтегральних схем (компіляцію);
4) верифікацію проектів (функціональне моделювання і часовий аналіз), програмування або конфігурацію програмувальних логічних інтегральних схем.
Наданий на рис. 2.1 склад програмного забезпечення системи автоматизованого проектування MAX+PLUS II є повним комплектом, що забезпечує створення логічних дизайнів для пристроїв фірми Altera з програмувальною логікою, в тому числі і родин пристроїв ACEX 1000, MAX 7000, MAX 9000, FLEX 6000, FLEX 8000, FLEX 10000.
Рис. 2.1. Середовище проектування в системі MAX+PLUS II
В систему автоматизованого проектування MAX+PLUS II входять 11 додатків (рис. 2.2).
Рис. 2.2. Додатки в системі MAX+PLUS II
Сукупність ієрархічно пов’язаних файлів називається проектом (project). Можливо описати проект (Design Entry) у вигляді файла на мові описання апаратури, створеного в зовнішньому редакторі, або в текстовому редакторі MAX+PLUS II (Text Editor), у вигляді схеми електричної принципової за допомогою графічного редактора (Graphic Editor); у вигляді часової діаграми, створеної в сигнальному редакторі (Waveform Editor). Для зручності роботи зі складними ієрархічними проектами кожному проекту нижчого рівня ієрархії може бути поставлений у відповідність символ, редагування якого відбувається за допомогою символьного редактора (Symbol Editor). Редагування розміщення вузлів по логічним блокам і виводам програмувальних логічних інтегральних схем відбувається за допомогою порівневого планувальника (Floorplan editor).
Верифікація проекту (Project verification)виконується за допомогою симулятора (simulator), результати роботи якого зручно проглянути в сигнальному редакторі. Тестові впливи створюються також в сигнальному редакторі.
Компіляція проекту, в тому числі і витягнення із списку з’єднань компонентів (Netlist Extractor), побудова бази даних (Data Base Builder), логічний синтез, зволікання часових, функціональних параметрів (SNF Extractor), розбиття на частини (Partioner), трасування (Fitter) і формування файла програмування і завантаження (Assembler) виконуються за допомогою компілятора (Compiler) системи.
Безпосереднє програмування або завантаження конфігурації пристроїв з використанням відповідного апаратного забезпечення виконується з використанням модуля програматора (Programmer).
Більшість характерних рис і команди – такі, як відкриття файлів, введення назначених пристроїв, виводів і логічних елементів, компіляція плинного проекту – схожі для багатьох додатків системи MAX+PLUS II. Редактори для розробки проекту (графічний, текстовий, сигнальний) мають багато спільного з допоміжними редакторами (порівневого планування та символьний). Кожний редактор розробки проекту дозволяє виконувати схожі завдання схожим способом.
Можливо легко комбінувати різні типи файлів в ієрархічному проекті, обираючи для кожного функціонального блоку той формат описання проекту, який є більш зручним. Бібліотека мегафункцій і макрофункцій, що надається фірмою Altera, в тому числі і функції з бібліотеки параметризованих модулів, забезпечує додаткові можливості для описання проекту.
Можна одночасно працювати з різними додатками системи MAX+PLUS II. Наприклад, можна відкрити декілька файлів проекту і переносити інформацію з одного проекту в інший, або наприклад проглянути все дерево проекту.
Основою системи MAX+PLUS II є компілятор, що забезпечує потужні засоби обробки проекту, при цьому можливо задавати різні режими роботи компілятора. Автоматична локалізація помилок, видача повідомлень і достатньо широка документація про помилки прискорюють і полегшують проведення змін в проекті. Стало можливим створювати вихідні файли в різних форматах для різних цілей, таких, як робота функцій, часових параметрів і зв’язку декількох пристроїв, аналізу часових параметрів, програмування пристрою.
3. Додатки системи автоматизованого проектування MAX+PLUS II
Програмне забезпечення системи автоматизованого проектування MAX+PLUS II складається з 11 додатків і головної керуючої оболонки.
Різні додатки, що забезпечують створення файлу проекту, можуть бути активізовані миттєво, що дозволяє користувачу переключатися між ними за допомогою миші або командного меню. В цей же час може працювати один з фонових додатків, наприклад компілятор, симулятор, часовий аналізатор, програматор. Одні і ті ж команди різних додатків працюють однаково, що полегшує процес роботи розробки проекту.
Вікно будь-якого додатку можна згорнути до піктограми, не закриваючи самого додатку, а потім знову його розкрити.
В табл. 3.1 наведено піктограми і описання додатків.
Табл. 3.1. Додатки системи автоматизованого проектування MAX+PLUS II
Піктограма
Назва
Функціональне призначення доданку
Огляд ієрархії
(Hierarchy Display)
Відображає плинну ієрархічну структуру файлів у вигляді дерева з гілками, що являють собою підпроекти. Можна візуально визначити чи є файл проекту схемним, текстовим чи сигнальним; які файли відкрити в даний момент; які допоміжні файли в проекті доступні для редагування. Можна також безпосередньо відкрити або закрити один або декілька файлів дерева і ввести ресурси
Графічний редактор
(Graphic Editor)
Дозволяє розробляти схемний логічний дизайн в форматі реального відображення на екрані WYSIWYNG. Використовуючи розроблені фірмою Altera примітиви, мегафункції і макрофункції в якості основних блоків розробки, користувач може також використовувати свої символи
Символьний редактор
(Symbol Editor)
Дозволяє редагувати існуючі і створювати нові символи
Текстовий редактор
(Text Editor)
Дозволяє створювати і редагувати текстові файли проекту, що написані на мовах AHDL, VHDL і Verilog HDL. Крім того, в даному редакторі можна створювати, розглядати і редагувати інші файли формату ASCII, що використовуються іншими додатками MAX+PLUS II
Сигнальний редактор
(Waveform Editor)
Виконує подвійну функцію: це інструмент для розробки проекту і одночасно — інструмент для введення текстових сигналів і спостережень тестування
Порівневий
планувальник
(Floorplan Editor)
Дозволяє графічним засобам створювати призначення виводам приладу і ресурсів логічних елементів та блоків. Можна редагувати розташуванням виводів на кресленні корпуса пристрою і призначити сигнали окремим логічним елементам на більш детальній схемі логічної структури
Компілятор
(Compiler)
Обробляє логічні проекти, що розроблені для сімейств Altera Classic, MAX 5000, MAX 7000, MAX 9000, FLEX 6000, FLEX 8000, i FLEX 10k. Більшість завдань виконується автоматично, але користувач може керувати процесом компіляції повністю або частково
Симулятор
(Simulator)
Дозволяє тестувати логічні сигнали і внутрішню синхронізацію логічної схеми, що проектується. Можливі три варіанти тестування: функціональне, часове і тестування декількох поєднаних між собою пристоїв
Аналізатор часових параметрів
(Timing Analyzer)
Аналізує роботу логічного ланцюга, що проектується після того, як вона була синтезована та імітизована компілятором, дозволяє оцінювати затримки в схемі
Програматор
(Programmer)
Дозволяє програмувати, конфігурувати, проводити верифікацію і досліджувати пристрої фірми Altera
Генератор
повідомлень
(Message Processor)
Видає на екран повідомлення про помилки, попереджуючі і інформаційні повідомлення про стан проекту користувача і дозволяє користувачу автоматично знайти джерело, повідомлення у вихідному або допоміжному файлі (файлах) і порівневому плані призначень
4. Процедура розробки нового проекту в системі автоматизованого проектування MAX+PLUS II
Процедуру розробки нового проекту від концепції до завершення можливо спрощено представити наступним чином:
1. створення нового файлу проекту або ієрархічної структури декількох файлів проекту з використанням різних редакторів розробки проекту в системі MAX+PLUS II, тобто графічного, текстового і сигнального редакторів;
2. присвоєння імені файлу проекту верхнього рівня (Top of hierarchy) як імені проекту (Project name);
3. призначення родини програмувальних логічних інтегральних схем для реалізації проекту. Користувач може сам призначати конкретний пристрій або передати цю дію компілятору з метою оцінки наявних ресурсів;
4. відкриття вікна компілятора і його запуск кнопкою “Start” для початку компіляції проекту. Якщо користувач бажає, він може підключати модуль витягу часових затримок Timing SNF Extractor для створення файлу розводки, що використовується при тестуванні часових параметрів;
5. у випадку успішної компіляції – тестування і часовий аналіз, для проведення якого необхідно виконати наступні дії:
5.1. для проведення часового аналізу відкрити вікно “Timing Analyzer”, вибрати режим аналізу і натиснути кнопку “Start”;
5.2. для проведення тестування треба спочатку створити файл каналу тестування (*.scf), використовуючи сигнальний редактор, або в файлі вектора тестування (*.vec), використовуючи текстовий редактор;
6. програмування або завантаження конфігурації синтезованого приладу відбувається шляхом запуску програматора (Programmer) с наступною вставкою пристрою в програмувальний адаптер програматора MPU (Master Programming Unit) або за допомогою підключення пристрою MasterBlaster, ByteBlaster або кабелю завантаження FLEX (FLEX Download Cable) до приладу, що програмується в системі;
7. вибір кнопки “Program” для програмування приладу з пам’яттю EPROM (MAX, EPC) або вибір кнопки Configure для завантаження конфігурації приладу з пам’яттю типа SRAM (FLEX).
При роботі в системі MAX+PLUS II слід відрізняти різницю між файлами проекту, допоміжними файлами і проектами.
Файл проекту– це графічний, текстовий або сигнальний файл, створений за допомогою графічного або сигнального редактора редактору середовища MAX+PLUS II. Цей файл містить логіку проекту і обробляється компілятором. Компілятор автоматично обробляє наступні файли проекту:
1) графічні файли проекту (*.gdf);
2) текстові файли проекту на мові AHDL (*.tdf);
3) сигнальні файли проекту (*.wdf);
4) файли проекту на мові VHDL (*.vhd);
5) файли проекту на мові Verilog (*.v);
6) схемні файли OrCAD (*.sch);
7) вхідні файли EDIF (*.edf);
8) файли формату Xilinix Netlist (*.xnf);
9) файли проекту Altera (*.adf);
10) файли цифрового автомату (*.smf).
Допоміжні файли – це файли, що пов’язані з проектом MAX+PLUS II, але вони не є частиною ієрархічного дерева проекту. Більшість таких файлів не містить опису логічних функцій проекту. Деякі з них створюються автоматично додатками системи MAX+PLUS II, інші – користувачем.
Проект складається зі всіх файлів ієрархічної структури дизайну, в тому числі допоміжних і вхідних файлів. Ім’ям проекту є ім’я файлу верхнього рівня без розширення. Система MAX+PLUS II виконує компіляцію, тестування, часовий аналіз і програмування відразу всього проекту, хоча користувач може в цей час редагувати файли цього проекту в рамках іншого проекту.
Для кожного проекту слід створювати окремий підкаталог в робочому каталозі системи (\max2work).
При запуску системи MAX+PLUS II автоматично відкривається її головне вікно (Main Window) (рис. 4.1), меню, що охоплює всі додатки системи. В самому верхньому рядку написано ім’я останнього проекту, з яким працював користувач. Два наступні рядки є типовим для Windows: рядок основного меню і панель інструментів, в лівій частині якої знаходяться звичайні інструменти Windows (New, Open, Save, Print, Cut, Copy, Paste, Undo), а в правій – специфічні інструменти пакета, за допомогою яких відбувається запуск основних додатків пакету.
Рис. 4.1. Головне вікно системи автоматизованого проектування MAX+PLUS II
Запуск компонентів системи зручно проводити через вікно меню MAX+PLUS II (рис. 4.2), що містить в собі вкладене підменю виклику основних додатків: огляд ієрархії, графічний редактор, символьний редактор, текстовий редактор, сигнальний редактор, порівневий планувальник, компілятор, симулятор, аналізатор часових параметрів, програматор та генератор повідомлень, функціональне призначення яких вже описано в попередньому розділі.
В ієрархічній структурі проекту на будь-якому рівні дозволяється змішане використання файлів з розширеннями .gdf, .tdf, .vhd, .v, .edf, .sch. Однак, файли з розширенням .wdf, .xnf, .adf, .smf повинні бути або на самому нижньому ієрархічному рівні проекту, або бути єдиним файлом.
У всіх доданках MAX+PLUS II є можливість за допомогою команд з меню “Assign” (Призначити) вводити, редагувати і знищувати типи призначених ресурсів, пристроїв, і параметрів, які керують компіляцією проекту, логічним синтезом і розділенням на частини. На рис. 4.3 представлено команди меню Assign. Користувач може робити призначення для плинного проекту незалежно від того, чи відкритий будь-який файл проекту або вікно додатків.
Рис. 4.2. Вікно меню MAX+PLUS II Рис. 4.3. Меню призначень проекту Assign
Система MAX+PLUS II зберігає інформацію для проекту в файлі з розширенням .acf. Зміна призначень, зроблених у вікні порівневого планувальника також зберігаються в форматі .acf. Крім того, користувач має можливість редагувати acf-файл проекту в текстовому редакторі.
Наступні функції є загальними для всіх додатків MAX+PLUS II: призначення пристрою, ресурсів і зондів, збереження попередніх версій, глобальні опції пристрою в проекті, глобальні параметри проекту, глобальні вимоги до часових параметрів проекту, глобальний логічний синтез проекту.
Ресурс є частиною пристрою Altera, як, наприклад контакт або логічний елемент, який виконує конкретне, визначене користувачем завдання. Керування компіляцією проекту і його часовими параметрами здійснюється за допомогою різноманітних призначень. Існують наступні типи призначень.
Clique assignment (призначення кліка)– задає які саме логічні функції повинні залишатись разом. Групування логічних функцій в кліки гарантує, що вони реалізуються в одному і тому ж блоці логічної структури пристрою, одному ряді або пристрої.
Chip assignment (призначення чіпа) –задає які логічні функції повинні бути реалізовані в одному і тому ж пристрої у випадку розділення проекту на частини (декілька пристроїв).
Pin assignment (призначення виводу)– призначає вхід або вихід однієї логічної функції, такої, як примітив або мегафункція, конкретному контакту або горизонтальному (вертикальному) ряду виводів ПЛІС.
Location assignment (призначення вічка)– задає розміщення логічної функції (вузла) в конкретному логічному елементі. В полях даного вікна можна задати номер виводу, логічний осередок або блок, а також, використовуючи кнопки “Change” і “Delete”, змінити призначення.
Probe assignment (призначення зонду)– присвоює легке для запам’ятання унікальне ім’я входу чи виходу логічної функції.
Connected pin assignment (призначення з’єднаних виводів)– задає зовнішнє поєднання двох або більше виводів на схемі користувача. Дана інформація корисна і в режимі тестування часових параметрів схеми і при тестуванні декількох скомпонованих проектів.
Local routing assignment (призначення місцевого трасування)– присвоює коефіцієнт розподілення за виходом вузла логічного елементу, що знаходиться в тому ж блоці логічних елементів або ж у сусідньому блоці логічних елементів, суміжним з обраним вузлом, з використанням місцевих зв’язків. Місцеве трасування також здійснюється між вузлом, що поміщений в блок логічних елементів на периферії пристрою, і вихідним контактом, з яким він поєднаний. Призначення місцевого трасування здійснюється за допомогою команди “Assign/Local routing”.
Device assignment (призначення пристрою)– призначає тип ПЛІС, в якому буде втілений плинний проект. Якщо проект складається з декількох пристроїв, то дана функція здійснює призначення чіпів конкретним пристроям. Можна також вибрати опцію Auto і надати компілятору право обирати пристрій з заданої родини пристроїв. Процесом автоматичного вибору пристрою можна керувати, задаючи діапазон і число пристроїв в родині. Якщо проект є занадто великим для реалізації в одному пристрої, можна задати тип і число додаткових пристроїв. Для вибору пристрою використовується команда “Assign/Device”.
Logic option assignment (призначення логічної опції)– керує синтезом окремих логічних функцій під час компіляції з використанням стилю логічного синтезу і окремих опцій логічного синтезатора. Фірма Altera забезпечує велику кількість логічних опцій, і також готових стилів, кожний з яких уявляє собою зібрання установок для логічних опцій, об’єднане одним іменем стилю синтезу (Synthesis style). Користувач може використовувати готові стилі або створювати нові. Стилі синтезу дозволяють настроювати опції синтезу на певні родини пристроїв, враховуючи при цьому архітектуру родини. Для налагодження стилів синтезу використовується команда “Assign/Logic Options”.
Timing assignment (призначення часових параметрів) – керує логічним синтезом і підгонкою окремих логічних функцій з метою отримання необхідних значень для часу затримки. Користувач також може вирізати з’єднання між шляхами для конкретного сигналу та іншими осередками або блоками проекту. Призначення часових параметрів блоку відбувається за командою “Assign/Timing Requirements”.
Можна вводити глобальні часові вимоги для проекту, задаючи загальні характеристики для часу затримки, використовуючи команду “Assign/Global Project Timing Requirements”.
Для призначення глобальних параметрів логічного синтезу проекту використовують команду “Assign/Global Project Logic Synthesis”.
продолжение
--PAGE_BREAK--
5. Процедура компіляції створеного проекту в системі автоматизованого проектування MAX+PLUS II
Спочатку компілятор дістає інформацію про ієрархічні зв’язки між файлами проекту і перевіряє проект на звичайні помилки введення дизайнів. Він створює організаційну карту проекту і потім, комбінуючи всі файли проекту, перетворює їх в базу даних без ієрархії, яку він здатен ефективно обробляти.
Компілятор використовує різноманітні засоби збільшення ефективності проекту і мінімізації використання ресурсів пристрою. Якщо проект занадто великий, щоб бути реалізованим в одній програмувальній логічній інтегральній схемі – компілятор може автоматично розбити його на частини для реалізації в декількох пристроях того ж самого сімейства програмувальних логічних інтегральних схем, при цьому мінімізуються число з’єднань між пристроями. В файлі звітності (.rpt) буде відображено яким чином проект реалізуватиметься: в одному або декількох пристроях.
Компілятор може автоматично компілювати проект. Існують можливості задати обробку проекту у відповідності з точними вказівками розробника. Наприклад, можливо задати стиль логічного синтезу проекту та інші параметри логічного синтезу в рамках всього проекту. Крім того, зручно задавати часові вимоги в рамках всього проекту, точно вказати розбиття великого проекту на частини для реалізації в декількох пристроях і обрати варіанти параметрів пристроїв, що будуть використані для всього проекту в цілому. Користувач здатний обирати кількість виводів і логічних елементів, які залишатимуться не використаними під час плинної компіляції, щоб зарезервувати їх для наступних модифікацій проекту.
Компіляцію можна запустити з будь-якого додатку MAX+PLUS II з вікна компілятора. Компілятор автоматично обробляє всі вхідні файли плинного проекту.
Процес компіляції можна бачити у вікні компілятора (рис. 5.1) в наступному вигляді:
1) спустошується і перевертається пісковий годинник, що вказує на активність компілятора;
2) висвітлюються, за чергою, прямокутники модулів компілятора;
3) під прямокутником модуля компілятора з’являється піктограма вихідного файлу, що був генерований даним модулем;
4) відсоток завершення компіляції поступово збільшується (до 100%);
5) під час розбиття та монтажу кнопка компілятора Stop (Стоп) перетворюється в кнопку Stop/Show Status (Стоп/Показати стан), яку користувач може вибрати для відкриття діалогового вікна, в якому відображається плинний стан розбиття і монтажу проекту;
6) при виявленні в процесі компіляції будь-яких помилок або можливих проблем автоматично відкривається вікно обробника повідомлень, в якому відображається список повідомлень про помилку, що попереджують та інформаційних повідомлень, а також відразу дається довідка по виправленню помилки. Крім того, користувач може визначити джерела повідомлень в файлах проекту або в його порівневому плані призначень.
Рис. 5.1. Процес компіляції проекту
Компілятор системи автоматичного проектування MAX+PLUS II обробляє проект, використовуючи наступні модулі та утиліти:
1) екстрактор списку ланцюгів (Compiler Netlist Extractor), що включає програми для читання форматів EDIF, VHDL, Verilog, XNF;
2) будівник бази даних (Database Builder);
3) логічний синтезатор (Logic Synthesizer);
4) роздільник (Partitioner);
5) трасувальник (Fitter);
6) екстрактор для функціонального тестування (Functional SNF Extractor);
7) екстрактор для тестування часових параметрів (Timing SNF Extractor);
8) екстрактор для тестування компонування (Linked SNF Extractor);
9) програма для запису вихідного файла в формат EDIF (EDIF Netlist Writer);
10) програма для запису вихідного файла в формат Verilog (Verilog Netlist Writer);
11) програма для запису вихідного файла в формат VHDL (VHDL Netlist Writer);
12) модуль асемблера (Assembler);
13) утиліта діагностики проекту (Design Doctor Utility).
Модуль екстрактора форматів (Compiler Netllist Extractor)перетворює кожний файл проекту в один або декілька двійкових файлів з розширенням .cnf (compiler netlist file). Оскільки компілятор підставляє значення всіх параметрів, що використовуються в параметризованих функціях, вміст cnf-файлу може змінюватись при послідовній компіляції, якщо значення параметрів змінюється. Даний модуль також створює і файл ієрархічних взаємозв’язків, з розширенням .hif (hierarchy interconnect file). В цьому файлі документуються ієрархічні зв’язки між файлами проекту, а також інформація, необхідна для показу ієрархічного дерева у вікні “Hierarchy Display”. Крім того, даний модуль створює файл бази даних вузлів з розширенням .ndb (node database), в якому містяться імена вузлів проекту для бази даних призначень ресурсів.
Модульбудівника бази даних (Database Builder) використовує файл ієрархічних зв’язків для компонування створених компілятором cnf-файлів, в яких міститься описання проекту. На основі даних про ієрархічну структуру проекту даний модуль копіює кожний cnf-файл в одну базу даних без ієрархічної структури. Таким чином, ця база даних зберігає електричні зв’язки проекту.
При створенні бази даних модуль досліджує логічну повноту та узгодженість проекту, а також перевіряє прикордонні зв’язки і наявність синтаксичних помилок. На цій стадії компіляції виявляється більшість помилок, які можуть бути тут же легко виправлені. Кожний модуль компілятора послідовно обробляє і поновлює цю базу даних.
Перший раз, коли компілятор обробляє проект, всі файли проекту компілюються. Користувач має можливість обрати “швидку повторну компіляцію” (smart recompile) для створення розширеної бази даних проекту, що дозволяє прискорити наступні компіляції. Використовуючи можливість повної повторної компіляції (total recompile), є можливість зробити вибір між повторною компіляцією лише тих файлів, які редагувались після останньої компіляції, і повною повторною компіляцією.
Модуль логічного синтезу (Logic Synthesizer) використовує ряд алгоритмів, що зменшує використання ресурсів і прибирають дубльовану логіку, забезпечуючи тим самим ефективне використання структури логічного елемента для архітектури цілої родини пристроїв. Крім того логічний синтезатор шукає логіку для не поєднаних вузлів. Якщо він знаходить такий вузол, він прибирає примітиви, що відносяться до такого вузла.
Якщо проект не вміщується при монтажі в одному пристрої, модуль роздільника (Partitioner) розділяє базу даних на декілька ПЛІС однією і тіє ж самої родини, намагаючись при цьому розділити проект на мінімальну кількість пристроїв.
Використовуючи базу даних, поновлену модулем розбиття, модуль трасування (Fitter) приводить у відповідність вимоги проекту з відомими ресурсами одного або декількох пристроїв. Він призначає кожній логічний функції положення логічного елемента, що її реалізує та обирає відповідні шляхи взаємозв’язків і призначень виводів.
Екстрактор для функціонального тестування (Functional SNF Extractor)створює файл для функціонального тестування з розширенням .snf. Компілятор генерує цей файл перед синтезом проекту, він містить всі вузли, що присутні в початкових файлах проекту.
Екстрактор для тестування часових параметрів (Timing SNF Extractor) створює, якщо компіляція проекту пройшла без помилок, файл для тестування часових параметрів, що містить дані про часові параметри проекту. Розширення файлу також — .snf.
Екстрактор для тестування компонування (Linked SNF Extractor)створює файл (.snf) для тестування компонування декількох проектів (на рівні плати). Такий файл комбінує інформацію з snf-файлів двох типів: для тестування часових параметрів і функціонального тестування, що були синтезовані для цих декількох проектів окремо.
Програма для запису вихідного файла в формат EDIF (EDIF Netlist Writer).Компілятор MAX+PLUS II може взаємодіяти з більшістю стандартних програмних засобів системи автоматичного проектування, що можуть читати файли стандартного формату EDIF 200 або EDIF 300. Даний модуль компілятора, що містить програму запису в формат EDIF, створює один або декілька файлів в форматі EDIF, з розширенням .edo.
Програма для запису вихідного файла в формат Verilog (Verilog Netlist Writer).Необов’язковий модуль програми запису в формат Verilog генерує вихідні файли з розширенням .vo, що містять інформацію про функції та їх часові параметри, отримані після проведення синтезу.
Програма для запису вихідного файла в формат VHDL (VHDL Netlist Writer).Необов’язковий модуль компілятора з програмою запису в формат VHDL генерує один або декілька вихідних файлів (.vho) на мові VHDL з синтаксисом 1987 або 1993.
Модуль асемблера (Assembler)перетворює призначення логічних елементів, виводів і пристроїв, зроблених модулем трасування, в програмний образ для пристрою у вигляді одного або декількох двійкових об’єктних файлів для програматора (.pof) і об’єктних файлів SRAM (.sof).
Утіліта діагностики проекту (Design Doctor Utility)перевіряє логіку кожного файлу проекту з метою виявлення елементів, які можуть викликати проблеми надійності на системному рівні. Ці проблеми виявляються лише після запуску пристрою “в залізі”. Існує можливість обирати одне з трьох попередніх правил обробки проекту з різними рівнями.
6. Загальні відомості про мову описання апаратури AHDL
Мова описання апаратури AHDL (Altera Hardware Description Language)розроблена фірмою Altera і призначена для описання комбінаційних і послідовних логічних пристроїв, групових операцій, цифрових автоматів з урахуванням особливостей ПЛІС фірми Altera. Він повністю інтегрується з системою автоматичного проектування MAX+PLUS II. Файли описання апаратури, написані на мові AHDL, мають розширення .tdf (Text design file). Для створення tdf-файлу можна використовувати як текстовий редактор системи MAX+PLUS II, так і будь-який інший. Проект, виконаний у вигляді tdf-файлу, компілюється і використовується для формування файлу програмування або завантаження ПЛІС фірми Altera.
Оператори та елементи мови AHDL є достатньо потужними та універсальними засобами описання алгоритмів функціонування цифрових пристроїв. Мова описання апаратури AHDL дає можливість створювати ієрархічні проекти в рамках однєї цієї мови або ж в ієрархічному проекті використовувати як tdf-файли, написані на мові AHDL, так і інші типи текстового описання апаратури. Для створення проектів на AHDL можна, звичайно, користуватись будь-яким текстовим редактором, але текстовий редактор системи MAX+PLUS II надає ряд додаткових можливостей для введення, компіляції і верифікації проекту.
Файли, створені на мові AHDL, легко інтегруються в ієрархічну структуру проекту. Система MAX+PLUS II дозволяє автоматично створювати символ компонента, алгоритм функціонування якого описано tdf-файлом, а потім вставити його в файл схемного описання (gdf-файл). Додатково, користувач може вводити власні функції, крім розроблених фірмою Altera близько 300 макрофункцій. Для всіх функцій, включених до макробібліотеки системи MAX+PLUS II, фірма Altera поставляє файли з розширенням .inc (include design file).
При розподіленні ресурсів пристроїв проектувальник може користуватись програмами текстового редактору або операторами мови AHDL. Крім того, розробник може перевірити синтаксис і зробити повну компіляцію. Будь-які помилки автоматично фіксуються обробником повідомлень та інформація про їх наявність з’являється у вікні текстового редактору, що оптимізує час розробки пристрою.
7. Реалізація в інтегрованому середовищі MAX+PLUS II базових пристроїв мікроелектроніки
7.1 Теоретичні відомості про тригери
Базовою структурною одиницею для побудови комбінаційних логічних схем є логічний елемент (вентиль). У випадку послідовних логічних схем роль такої структурної одиниці відіграє тригер. В даному розділі дипломної роботи буде розглянуто різні види тригерів.
7.1.1 RS-тригер
Умовне позначення RS-тригеру подано на рис. 7.1.1: RS-тригер має два входи R і S та два виходи Q1 та Q2. В тригерах виходи завжди знаходяться в протилежних (компланарних) станах. Іншою мовою, якщо на вході Q1 ми маємо логічну одиницю, то на виході Q2 буде рівень логічного нуля, і навпаки.
Входи R і S розглядуваного тригера називають відповідно входом встановлення 1 і входом встановлення 0.
Рис. 7.1.1. Умовне позначення RS-тригеру
Принцип роботи RS-тригеру ілюструє його таблиця дійсності (табл. 7.1.1).
Табл. 1.1. Таблиця дійсності RS-тригеру
Режим роботи
Входи
Виходи
S
R
Q1
Q2
Вплив на вихід Q1
Заборонений стан
1
1
Заборонено –
не використовується
Встановлення 1
1
1
Для встановлення
Q1 в 1
Встановлення 0
1
1
Для встановлення
Q1 в 0
Збереження
1
1
Q1
Q2
Залежить від попереднього стану
При поданні на обидва входи тригера рівня логічного нуля (R=S=0) на обох виходах встановлюється логічна одиниця (Q1=Q2=1). Це заборонений стан тригеру; він не використовується. Згідно другому рядку таблиці дійсності на виході Q1 встановлюється логічна 1. В даному випадку кажуть, що тригер встановлений у стан 1. Згідно третього рядка, при S=1 і R=0 відбувається скидання сигналу на вході Q1 (очищення виходу Q1) до рівня логічного 0. Це значить, що тригер встановлено у стан 0. Четвертий рядок таблиці дійсності відповідає R=S=1. В даному випадку тригер знаходиться в стані спокою: на виходах Q1 і Q2 зберігаються попередні комплементарні рівні сигналу. Це режим збереження.
Із табл. 7.1.1 видно, що встановлення тригеру у стан 1 (встановлення 1 на виході Q1) ініціює логічний 0 на вході S. Аналогічно встановлення тригеру в стан 0 (встановлення 0 на виході Q1) ініціює логічний 0 на вході R. Так як зміна стану RS-тригеру обумовлена появою 0 на одному з його входів, то вірогідніше, точнішим зображенням даної схеми було б умовне графічне зображення, приведене на рис. 7.1.2.
Рис. 7.1.2. Умовне графічне позначення RS-тригеру
Рис. 7.1.3. RS-тригер, побудований на логічних елементах І-НЕ
Особливу увагу треба звернути на інвертуючі кола у входів R та S. Вони показують, що активним рівнем сигналу для встановлення тригеру в стан 1 і 0 є рівень логічного 0 на одному із входів. RS-тригер часто називають RS-фіксатором, або тригером з роздільними входами.
7.1.2 Синхронний RS-тригер
Умовне графічне позначення для синхронного RS-тригеру показано на рис. 7.1.4. Воно подібне до звичайного RS-тригеру; відмінність полягає в появі одного додаткового, так званого синхронізуючого входу, що позначається CLK.
Рис. 7.1.4. Умовне графічне позначення синхронного RS-тригеру
Принцип роботи синхронного RS-тригеру ілюструє його таблиця дійсності (табл. 7.1.2).
Табл. 7.1.2. Таблиця дійсності синхронного RS-тригеру
Режим роботи
Входи
Виходи
CLK
S
R
Q1
Q2
Вплив на вихід Q1
Збереження
Без змін
Без змін
Встановлення 0
1
1
Для встановлення
Q1 в 0
Встановлення 1
1
1
Для встановлення
Q1 в 1
Заборонений стан
1
1
1
1
Заборонено –
не використовується
Тільки верхні три рядки таблиці дійсності описують реальні режими роботи RS-тригеру. Нижній рядок відповідає забороненому стану і ніколи не використовується. З таблиці видно, що стан виходів синхронного RS-тригеру може змінюватись лише в моменти приходу тактових імпульсів. В даному випадку кажуть, що тригер працює синхронно: процес переключення його знаходиться в синхронізмі з тактовими імпульсами.
Важливу роль в багатьох цифрових схемах відіграє ще одна характеристика RS-тригеру – наявність пам’яті. Дійсно, якщо тригер встановлений в стан 1 або 0, то він залишається в такому стані навіть при деяких змінах вхідних сигналів.
Рис. 7.1.5. Синхронний RS-тригер, побудований на логічних елементах І-НЕ
Щоб отримати синхронний RS-тригер, в схему звичайного RS-тригеру потрібно ввести два додаткових логічних елемента І-НЕ, як показано на рис. 7.1.5.
7.1.3 D-тригер
Умовне графічне позначення D-тригеру подано на рисунку 7.1.6. У цього тригера є лише один інформаційний вхід D, а також синхронізуюзуючий вхід CLK.
D-тригер часто називають тригером з затримкою. Слово “затримка” означає те, що відбувається з даними (інформацією), що поступає на вхід D. Інформаційний сигнал (0 або 1), поступаючи на цей вхід затримується у тригері рівно на один такт, перед тим як з’явитись на виході Q.
Рис. 7.1.6. Умовне графічне позначення D-тригеру
Спрощена таблиця дійсності для D-тригеру подана нижче.
Табл. 7.1.3. Таблиця дійсності D-тригеру
Вхід
Вихід
Dn
Qn+1
1
1
Слід звернути увагу, що сигнал на виході Q в такті n+1 повторює сигнал, що був на вході D в попередньому такті n.
D-тригер можливо отримати з тактуємого RS-тригеру, додаючи до останнього інвертор, як показано на рис. 7.1.7.
Рис. 7.1.7. Схема D-тригера
На рис. 7.1.8 показано умовне позначення типового серійно випускаємого D-тригеру. Він має два додаткових входи – попереднього встановлення (PS) і очищення (CLR). Логічний 0 на вході PS ініціює встановлення логічної 1 на виході Q. Логічний 0 на вході CLR ініціює очистку виходу Q.
В активних станах входи PS і CLR блокують дію входів D і CLK; при розблокуванні входи D і CLK діють аналогічно звичайному D-тригеру, що зображений на рис. 7.1.6.
Рис. 7.1.8. Умовне графічне позначення серійного інтегрального D-тригеру
7.1.4 JK-тригер
JK-тригер – це універсальний тригер, що має характеристики всіх інших типів тригерів. Умовне графічне позначення JK-тригеру подано на рис. 7.1.9. JK-тригер має два інформаційні входи: J і K, і вхід синхронізації CLK і, як і всі тригери два комплементарних виходи Q1 і Q2. Таблиця дійсності для JK-тригера приведена в табл. 7.1.4. Коли на обидва входи J і K подається рівень логічного 0, тригер блокується, і стан його виходів не змінюється. В цьому випадку тригер знаходиться в режимі збереження.
Рис. 7.1.9. Умовне графічне позначення JK-тригеру
Табл. 7.1.4. Таблиця дійсності JK-тригеру
Режим роботи
Входи
Виходи
CLK
J
K
Q1
Q2
Вплив на вихід Q1
Збереження
Без змін
Без змін –
блокування
Встановлення 0
1
1
Скидання або очищення Q1 в 0
Встановлення 1
1
1
Для встановлення
Q1 в 1
Переключення
1
1
Переключення
Зміна стану на
протилежний
Рядки 2 і 3 таблиці дійсності описують режими, що відповідають встановленню тригера в стани 0 на 1. Рядок 4 ілюструє дуже важливий режим роботи JK-тригера – переключення. Якщо на обох входах J і K встановлена логічна 1, то наступні тактові імпульси будуть викликати перекидання рівнів сигналів на виходах тригера від 1 до 0, от 0 до 1 і так далі. Така робота подібна переключенню тумблера, звідки і походить назва режиму.
Умовне графічне позначення JK-тригера, що входить до складу інтегральної схеми показано на рис. 7.1.10. В порівнянні з тригером на рис. 7.1.9 даний тригер має два додаткових асинхронних входи (вхід попереднього встановлення і вхід очищення).
Синхронними входами є інформаційні входи J та K і синхронізуючий вхід CLK.
Рис. 7.1.10. Умовне графічне позначення серійного інтегрального JK-тригеру
При реалізації тригерів за допомогою мови AHDL доцільно користуватись примітивами тригерів.
В табл. 7.1.5 наведено всі примітиви тригерів, що використовуються при описанні роботи апаратури.
Табл. 7.1.5. Примітиви тригерів в AHDL
Примітив
Прототип примітиву
DFF
FUNCTION DFF (D, CLK, CLRN, PRN)
RETURNS (Q)
DFFE
FUNCTION DFFE (D, CLK, CLRN, PRN, ENA)
RETURNS (Q)
TFF
FUNCTION TFF (T, CLK, CLRN, PRN)
RETURNS (Q)
TFFE
FUNCTION TFFE (T, CLK, CLRN, PRN, ENA)
RETURNS (Q)
JKFF
FUNCTION JKFF (J, K, CLK, CLRN, PRN)
RETURNS (Q)
JKFFE
FUNCTION JKFFE (J, K, CLK, CLRN, PRN, ENA)
RETURNS (Q)
SRFF
FUNCTION SRFF (S, R, CLK, CLRN, PRN)
RETURNS (Q)
SRFFE
FUNCTION SRFFE (S, R, CLK, CLRN, PRN, ENA)
RETURNS (Q)
LATCH
FUNCTION LATCH (D, ENA)
RETURNS (Q)
Виводи тригерів:
D, T, J, K, S, R – інформаційні входи;
CLK – вхід тактового сигналу (активний перепад 0->1);
CLRN – вхід асинхронного скидання тригера (активний рівень – логічний нуль);
PRN – вхід асинхронного встановлення тригера (активний рівень – логічний нуль);
ENA – вхід дозволу роботи (активний рівень – логічна одиниця).
7.1.5 Програма реалізації тригерів в інтегрованому середовищі MAX+PLUS II
Програма для реалізації тригерів за допомогою мови AHDL в інтегрованому середовищі MAX+PLUS II має наступний вигляд:Title «triggers»;
Subdesign triggers
(
D,T,J,K,S,R,CLK,CLRN,PRN,ENA: input;
Q1,Q2,Q3,Q4,Q5,Q6,Q7,Q8,Q9: output;
)
Begin
Q1 = DFF(D,CLK,CLRN,PRN); Q2 = DFFE (D,CLK,CLRN,PRN,ENA);
Q3 = TFF (T,CLK,CLRN,PRN); Q4 = TFFE (T, CLK, CLRN, PRN, ENA);
Q5 = JKFF (J, K, CLK, CLRN, PRN);
Q6 = JKFFE (J,K, CLK, CLRN, PRN, ENA);
Q7 = SRFF (S, R, CLK, CLRN, PRN);
Q8 = SRFFE (S, R, CLK, CLRN, PRN, ENA);
Q9 = LATCH (D, ENA);
End;
7.1.6 Результати програмної реалізації тригерів
На рис. 7.1.11 зображено вікно сигнального редактору проекту “triggers”.
Рис.7.1.11. Результати тестування RS-, D-, JK-тригерів
7.2 Теоретичні відомості про регістри
7.2.1 Послідовні регістри зсуву
Схема одного з типових регістрів зсуву подана на рис. 7.2.1. Цей регістр реалізований на 4 D-тригерах. Такий регістр має назву 4-розрядний регістр зсуву, оскільки він дозволяє зберігати 4 двійкових розряди даних А, B, C, D.
Рис.7.2.1. 4-розрядний послідовний регістр зсуву
За допомогою табл. 7.2.1 і рис. 7.2.1 ми маємо можливість спостерігати за роботою цього пристрою. Спочатку очистимо регістр (встановимо рівні логічного нуля на його виходах А, B, C, D). Для цього потрібно подати логічний 0 на вхід очищення CLR. Отриманому стану регістра зсуву відповідає рядок 1 табл. 7.2.1 До приходу тактового імпульсу виходи регістру залишаються в стані 0000. Подамо перший імпульс на синхронізуючий вхід CLK; індикатор покаже число 1000 (рядок 3 в табл. 7.2.1), оскільки на тактовому імпульсі логічна 1 з інформаційного входу тригера TA переноситься на його логічний вихід Q. Тепер при наявності логічної 1 на інформаційному вході регістру ця одиниця з кожним тактовим імпульсом вводиться в розряд А, а введені раніше одиниці зсуваються на одну позицію (розряд) вправо (тактові імпульси 2 і 3 в табл. 7.2.1). Таким самим чином при подачі на інформаційний вхід логічного 0 цей нуль при кожному тактовому імпульсі вводиться в розряд А, а введені раніше одиниці та нулі зсуваються вправо (тактові імпульси 4-8 в табл. 7.2.1). Перед приходом тактового імпульсу 9 на інформаційному вході встановлюється 1, а перед приходом імпульсу 10 цей вхід повертається до 0. В час дії тактових імпульсів 9-13 введена в регістр на імпульсі 9 одиниця буде зміщуватись на індикаторі вправо. Рядок 15 в табл. 7.2.1 показує, на імпульсі 13 ця одиниця покидає крайній правий розряд регістру зсуву і втрачається.
Табл.7.2.1. Робота 4-розрядного регістру зсуву
Входи
Виходи
Номер
рядка
Очищення
Дані
Номер тактового імпульсу
TА
TB
TC
TD
А
B
C
D
1
2
1
1
3
1
1
1
1
4
1
1
2
1
1
5
1
1
3
1
1
1
6
1
4
1
1
1
7
1
5
1
1
8
1
6
1
9
1
7
10
1
8
11
1
1
9
1
12
1
10
1
13
1
11
1
14
1
12
1
15
1
13
Нагадаємо, що D-тригер називають також тригером з затримкою. Він просто передає інформаційний сигнал з входу D на вихід Q з затримкою на один такт.
Прилад, схема якого приведена на рис. 7.2.1 має назву послідовного регістру зсуву. Термін “послідовний” відображає той факт, що в цей регістр дані вводяться порозрядно. Наприклад, щоб ввести в регістр двійкову комбінацію 0111 треба пройти всю послідовність станів від рядка 1 до рядка 6 в табл. 7.2.1. Послідовне завантаження 4-бітової комбінації 0111 в послідовний регістр відбувається за 5 тактів (рядок 2 можливо виключити).
Інший спосіб завантаження регістру – паралельне (або розширене) завантаження, при якому всі інформаційні біти вводяться в регістр одночасно “за командою” одного тактового імпульсу.
Регістр зсуву на рис. 7.2.1 можливо трансформувати в 5-розрядний, додав до схеми ще один D-тригер. Регістри зсуву частіше бувають 4-, 5- або 8-розрядними. В них можливо використання не тільки D-тригеру, але й тригерів іншого типу (наприклад, JK-тригера, або синхронних RS-тригерів).
7.2.2 Паралельні регістри зсуву
Послідовний регістр зсуву, робота якого описана вище має два суттєві недоліки: він дозволяє вводити тільки по одному біту інформації на кожному тактовому імпульсі і, крім того, кожний раз при зсуві вправо втрачається крайній правий біт.
На рис. 7.2.2 показана схема 4-розрядного паралельного кільцевого регістру. Входи A, B, C, D вданому приладі є інформаційними.
продолжение
--PAGE_BREAK--Рис. 7.2.2. 4-розрядний паралельний кільцевий регістр зсуву
Цю систему можливо спорядити ще однією корисною характеристикою – можливістю кільцевого переміщення інформації, коли дані з входу приладу повертаються на його вхід і не втрачаються.
В даному регістрі зсуву використовуються чотири JK-тригери. Треба звернути увагу на зворотній зв’язок виходу тригера TD та входів J і K тригера ТА. Завдяки цьому ланцюгу зворотного зв’язку введена в регістр інформація, яка звично втрачається на виході тригеру TD, буде циркулювати по регістру зсуву. Сигналом очищення регістру (встановлення його виходів в стан 0000) є рівень логічного нуля на вході CLR.
Входи паралельного завантаження A, B, C, D пов’язані з входами попереднього встановлення тригерів PRN, що дозволяє встановлювати рівень логічної одиниці на будь-якому виході (A, B, C, D). Якщо на один з цих входів подати логічний 0, то на відповідному виході буде логічна 1. Подача тактових імпульсів на входи CLK всіх JK-тригерів призводить до зсуву інформації в регістрі вправо. З тригеру TD дані передаються в тригер ТА (кільцеве переміщення інформації).
Табл. 7.2.2. Робота 4-розрядного паралельного кільцевого регістру зсуву
Входи
Виходи
Номер рядка
Очищення
Паралельне завантаження даних
Номер тактового імпульсу
TА
TB
TC
TD
A
B
C
D
А
B
C
D
1
1
1
1
1
1
1
1
1
2
1
1
1
1
3
1
1
1
1
1
4
1
1
1
1
1
1
1
5
1
1
1
1
1
2
1
6
1
1
1
1
1
3
1
7
1
1
1
1
1
4
1
8
1
1
1
1
1
5
1
9
1
1
1
1
10
1
1
1
1
1
11
1
1
1
1
1
6
1
1
12
1
1
1
1
1
7
1
1
13
1
1
1
1
1
8
1
1
14
1
1
1
1
1
9
1
1
15
1
1
1
1
1
10
1
1
Табл. 7.2.2 допомагає зрозуміти принцип роботи паралельного регістру зсуву. При включенні живлення на виходах регістру встановлюється будь-яка двійкова комбінація, така, наприклад як в рядку 1 таблиці 7.2.2. Подача логічного 0 на входи CLR тригерів ініціює очищення регістру (рядок 2). Далі (рядок 3) відбувається завантаження в регістр двійкової комбінації 0100. Послідовні тактові імпульси викликають зсув введеної інформації вправо (рядки 4-8). Треба звернути увагу на рядки 5 і 6: одиниця з крайнього правого тригеру TD переноситься в крайній лівий тригер ТА. В даному випадку можливо говорити про кільцеве переміщення одиниці в регістрі.
Далі (рядок 9) заново ініціюється очищення регістру за допомогою входу CLR. Завантажується нова двійкова комбінація 0110 (рядок 10). Подача 5 тактових імпульсів (рядки 11-15) призводить до кільцевого зсуву інформації на 5 позицій вправо. Треба звернути увагу, що для повернення даних в початковий стан потрібно 4 тактових імпульси. Якщо в регістрі зсуву на рис. 2.2 розірвати ланцюг зворотного зв’язку, то ми отримаємо звичайний паралельний регістр зсуву; можливість кільцевого переміщення даних буде виключена.
7.2.3 Програма реалізації регістрів в інтегрованому середовищі MAX+PLUS II
Програма для реалізації 4-розрядного послідовного регістру зсуву за допомогою мови AHDL в інтегрованому середовищі MAX+PLUS II має наступний вигляд:
Title «register1»;
Parameters
(WIDTH = 4); — встановлення розрядності регістру
Assert (WIDTH > 0) — перевірка розрядності регістру на відмінність від 0
Report «Value of WIDTH parameter must be greater then %» WIDTH
Severity Error;
Subdesign register1
(
D_INPUT, SET, RESET: input = GND; — вхідні сигнали
CLK: input; — вхід синхронізації
ENABLE: input = VCC; — вхід дозволу роботи
Q_OUTPUT: output; — вихідні сигнали
)
Variable
FF[WIDTH..1]: DFFE; — об'ява змінної FF, що належить до класу DFFE
Begin
FF[].clk = CLK;
FF[].prn = !SET;
FF[].clrn = !RESET;
FF[].ena = ENABLE;
FF[].d = (FF[WIDTH-1..1].q, D_INPUT);
Q_OUTPUT = FF[WIDTH].q;
End;
— Примітка: на часовій діаграммі:
— FF — двійкове число на виході регістру
Програма для реалізації 4-розрядного паралельного кільцевого регістру зсуву за допомогою мови AHDL в інтегрованому середовищі MAX+PLUS II має наступний вигляд:
Subdesign register2
Parameters
(WIDTH = 4); — встановлення розрядності регістру
Assert (WIDTH > 0) — перевірка розрядності тригера (більша від нуля)
Report «Value of WIDTH parameter must be greater then %» WIDTH
Severity Error;
(
I[WIDTH..1]: input = VCC; — вхідні сигнали (дані)
CLK: input;
RESET: input;
O[WIDTH..1]: output; — вихідні сигнали (дані)
)
Variable
FF[WIDTH..1]: JKFF; — об'ява змінної FF, що належить до класу JKFF
Begin
FF[WIDTH..1].j = (FF[WIDTH-1..1].q, FF[WIDTH].q);
FF[WIDTH..1].k = (!FF[WIDTH-1..1].q, !FF[WIDTH].q);
FF[WIDTH..1].clk = CLK;
FF[WIDTH..1].clrn = !RESET;
FF[WIDTH..1].prn = I[WIDTH..1];
O[WIDTH..1] = FF[WIDTH..1].q;
End;
7.2.4 Результати програмної реалізації регістрів
На рис. 7.2.3 зображено вікно сигнального редактору проекту “register1”.
Рис. 7.2.3. Результати тестування 4-розрядного послідовного регістру зсуву
На рис. 7.2.4 зображено вікно сигнального редактору проекту “register2”.
Рис. 7.2.3. Результати тестування 4-розрядного паралельного кільцевого регістру зсуву
7.3 Теоретичні відомості про лічильники
7.3.1 Лічильник з крізним переносом
Процедури двійкової і десяткової лічби ілюстровано в табл. 7.3.1. Використовуючи лише чотири двійкових розряди (T4, T3, T2, T1), ми можемо рахувати від 0000 до 1111 (від 0 до 15 в десятеричній системі відліку). Стовпчик T1 таблиці відповідає двійковому розряду одиниці або самій молодшій значимій цифрі. Зазвичай використовується термін “самий молодший розряд”. Стовпець T4 відповідає двійковому розряду вісімок або старшій значимій цифрі. Зазвичай використовується термін “самий старший розряд”. Зверніть увагу, що в стовпці одиниць цифри змінюються найчастіше. Якщо вам потрібний лічильник, що рахує від 0000 до 1111 в двійковій системі, у нього повинно бути 16 різних вихідних станів. Такий лічильник має назву лічильник за модулем 16. Модуль лічильника – це число різних станів, через які проходить лічильник в процесі одного повного циклу відліку.
Табл. 7.3.1. Відлікова послідовність для лічильника за модулем 16
Двійкова лічба
Десяткова лічба
T4
T3
T2
T1
8
4
2
1
1
1
1
2
1
1
3
1
4
1
1
5
1
1
6
1
1
1
7
1
8
1
1
9
1
1
10
1
1
1
11
1
1
12
1
1
1
13
1
1
1
14
1
1
1
1
15
Функціональна схема лічильника за модулем 16, зібраного з чотирьох JK-тригерів, показана на рис 7.3.1. Кожний JK-тригер працює в режимі переключення (J = K = 1). Нехай в початковий момент часу стан виходів лічильника відповідає двійковому числу 0000 — лічильник очищений. При надходженні тактового імпульсу 1 на синхронізуючий вхід CLK тригера Т1 цей тригер переключається, при проходженні зрізу імпульсу, і на індикаторі з’являється число 0001. Лічба продовжується: зріз сигналу на виході кожного тригеру запускає наступний тригер. Повертаючись до табл. 7.3.1. ми бачимо, що цифри (1 або 0) в стовпці T1 (одиниць) змінюються на кожному етапі лічби. Іншими словами тригер Т1 переключається з приходом кожного нового тактового імпульсу. Як бачимо з стовпця T2, тригер Т2 переключається в два рази рідше від тригера Т1. Взагалі кожний старший розряд в табл. 7.3.1 переключається в два рази рідше попереднього.
Рис. 7.3.1. Логічна схема лічильника за модулем 16
Роботу лічильника за модулем 16 ілюструють часові діаграми на рис. 7.3.2. Синхронізуючому входу відповідає верхня діаграма. Діаграми для виходів Q регістрів Т4, Т3, Т2, Т1 наведено нижче.
Оскільки кожний тригер впливає тільки на один наступний за ним тригер, то для переключення всіх тригерів необхідний деякий час.
Ми бачимо, що зміна станів послідовно проходить по ланцюжку тригерів. Тому лічильник, що ми розглядаємо має назву лічильника з крізним переносом.
Рис. 7.3.2. Часова діаграма лічильника за модулем 16
Лічильник, функціональна схема якого показана на рис. 7.3.1, можливо назвати не тільки лічильником з крізним переносом, але й лічильником за модулем 16, 4-розрядним лічильником або асинхронним лічильником. Кожна з назв характеризує розглядувану схему з якогось одного боку.
Визначення “з крізним переносом” і “асинхронний” говорять про те, що запуск тригерів відбувається не в один і той же час. Назва “лічильник за модулем 16”віддзеркалює число різних станів, що “проходяться” лічильником за один повний цикл лічби. Визначення “4-розрядний” вказує на число двійкових розрядів на виході лічильника.
продолжение
--PAGE_BREAK--7.3.2 Асинхронний лічильник з модулем 10
Лічильник за модулем 10 рахує від 0000 до 1001 (від 0 до 9 в десятковій системі), тобто перші 10 комбінацій в табл. 7.3.1. Ми бачимо, що для цього потрібно чотири двійкових розряди: розряд одиниць, розряд двійок, розряд четвірок і розряд вісімок.
Рис. 7.3.3. Логічна схема лічильника за модулем 10
Такий лічильник можливо реалізувати на чотирьох тригерах, з’єднаних по схемі описаного вище асинхронного лічильника. В схему потрібно додатково ввести логічний елемент І-НЕ (рис. 7.3.3) для встановлення всіх тригерів в нульовий стан, очищення лічильника, з приходом десятого імпульсу (тобто з приходом першого імпульсу після того, як лічильник нарахував до 1001 – 9 в десятковій системі).
Принцип використання такого логічного елемента стає зрозумілим якщо розглянути яке двійкове число настає за 1001. З табл. 7.3.1 видно, що цим числом є 1010 (10 в десятковій системі). При поданні логічної 1, що міститься в розрядах двійок і вісімок двійкового числа 1010, на входи логічного елемента І-НЕ (як показано на рис. 7.3.3), цей елемент встановить всі тригери в стан 0. Лічильник почне рахувати від 0000 до 1001. Таким чином, логічний елемент І-НЕ забезпечує встановлення лічильника в стан 0000. Подібне використання логічного елемента І-НЕ дозволяє створити лічильники з деякими іншими значеннями модуля. На рис. 7.3.3 показано функціональну схему асинхронного лічильника за модулем 10. Цей лічильник можливо також назвати декадним (десятковим) лічильником.
7.3.3 Лічильник віднімання
Вище було описано лічильники, що рахують в прямому напрямку (0, 1, 2,...). Однак в деяких цифрових системах з’являється необхідність рахування в зворотному напрямку (9, 8, 7, 6,...). Лічильники, які рахують від більших чисел до менших називають лічильниками віднімання, або лічильниками зворотної дії.
Схема асинхронного лічильника віднімання за модулем 8 показано на рис. 7.3.4, відповідна відлікова послідовність чисел наведена в табл. 7.3.2.
Рис. 7.3.4. Логічна схема асинхронного 3-розрядного лічильника віднімання
Табл. 7.3.2. Відлікова послідовність для 3-розрядного лічильника віднімання
Номер
тактового імпульсу
Двійкова відлікова послідовність
Десяткові числа
Т3
Т2
Т1
1
1
1
7
1
1
1
6
2
1
1
5
3
1
4
4
1
1
3
5
1
2
6
1
1
7
8
1
1
1
7
9
1
1
6
Треба звернути увагу на те, що схема лічильника віднімання нагадує схему лічильника прямої дії на рис. 7.3.1. Єдиною відмінністю є спосіб переносу від тригера Т1 до тригера Т2 і від тригера Т2 до тригера Т3. В лічильнику прямої дії синхронізуючий вхід кожного тригера пов’язаний з інверсним виходом Q попереднього тригера. Зауважимо, що в лічильнику відліку перед початком відліку в зворотному напрямку передбачене його попереднє встановлення в стан 111 (деcяткове число 7) за допомогою входу предвстановлення (PRN). Тригер Т3 – двійковий лічильник розряду одиниць (стовпець T1). Тригер Т2 – лічильник розряду двійок (стовпець T2). Тригер Т3 – лічильник розряду четвірок (стовпець T3).
7.3.4 Програми реалізації лічильників в інтегрованому середовищі MAX+PLUS II
Програма для реалізації 4-розрядного асинхронного лічильника з крізним переносом за модулем 16 за допомогою мови AHDL в інтегрованому середовищі MAX+PLUS II має наступний вигляд:
title «counter1»;
parameters
(WIDTH = 4); — встановлення розрядності лічильника
assert (WIDTH > 0) — перевірка розрядності лічильника
report «Value of WIDTH parameter must be greater then %» WIDTH
severity error;
subdesign counter1
(
CLK: input; — імпульси синхронізації (CLK) лічильника
RESET: input; — імпульси зкидання (CLRN) тригерів лічильника
SET: input; — імпульси предвстановлеення (PRN) тригерів лічильника
O [WIDTH..1]: output; — вихід лічильника
)
variable
TRIGGER [WIDTH..1]: JKFF;
begin
TRIGGER [WIDTH..1].j = vcc;
TRIGGER [WIDTH..1].k = vcc;
TRIGGER [WIDTH..1].clrn = !RESET;
TRIGGER [WIDTH..1].prn = !SET;
TRIGGER [WIDTH].clk = !CLK;
TRIGGER [WIDTH-1..1].clk = !TRIGGER [WIDTH..2].q;
O [WIDTH..1] = TRIGGER [1..WIDTH].q;
end;
Програма для реалізації асинхронного лічильника за модулем 10 за допомогою мови AHDL в інтегрованому середовищі MAX+PLUS II має наступний вигляд:
title «counter2»;
parameters
(WIDTH = 4); — встановлення розрядності лічильника
assert (WIDTH > 0) — перевірка розрядності лічильника
report «Value of WIDTH parameter must be greater then %» WIDTH
severity error;
subdesign counter2
(
CLK: input; — імпульси синхронізації (CLK) лічильника
SET: input; — імпульси предвстановлення (PRN) тригерів лічильника
O [WIDTH..1]: output; — вихід лічильника
)
variable
TRIGGER [WIDTH..1]: JKFF;
begin
TRIGGER [WIDTH..1].j = vcc;
TRIGGER [WIDTH..1].k = vcc;
TRIGGER [WIDTH..1].prn = !SET;
TRIGGER [WIDTH].clk = !CLK;
TRIGGER [WIDTH-1..1].clk = !TRIGGER [WIDTH..2].q;
TRIGGER [WIDTH..1].clrn = (TRIGGER [3].q !& TRIGGER [1].q);
O [WIDTH..1] = TRIGGER [1..WIDTH].q;
end;
Програма для реалізації 3-розрядного лічильника віднімання за допомогою мови AHDL в інтегрованому середовищі MAX+PLUS II має наступний вигляд:
title «counter3»;
parameters
(WIDTH = 3); — встановлення розрядності лічильника
assert (WIDTH > 0) — перевірка розрядності лічильника
report «Value of WIDTH parameter must be greater then %» WIDTH
severity Error;
subdesign counter3
(
CLK: input; — імпульси синхронізації (CLK) лічильника
RESET: input; — імпульси зкидання (CLRN) тригерів лічильника
SET: input; — імпульси предвстановлення (PRN) тригерів лічильника
O[WIDTH..1]: output; — вихід лічильника
)
variable
TRIGGER[WIDTH..1]: JKFF;
begin
TRIGGER [WIDTH..1].j = vcc;
TRIGGER [WIDTH..1].k = vcc;
TRIGGER [WIDTH..1].clrn = !RESET;
TRIGGER [WIDTH..1].prn = !SET;
TRIGGER [WIDTH..1].clk = (CLK, !TRIGGER [WIDTH..2].q);
O [WIDTH..1] = !TRIGGER [1..WIDTH].q;
end;
Програма для реалізації 3-розрядного універсального лічильника за допомогою мови AHDL в інтегрованому середовищі MAX+PLUS II має наступний вигляд:
title «counter4»;
parameters
(WIDTH = 3); — встановлення розрядності лічильника
assert (WIDTH > 0) — перевірка розрядності лічильника
report «Value of WIDTH parameter must be greater then %» WIDTH
severity Error;
subdesign counter4
(
CLK: input; — імпульси синхронізації (CLK) лічильника
SET: input; — імпульси предвстановлення (PRN) тригерів лічильника
RESET: input; — імпульси зкидання (CLRN) тригерів лічильника
FWC: input;
BWC: input;
O[WIDTH..1]: output; — вихід лічильника
)
variable
TRIGGER[WIDTH..1]: JKFF;
begin
TRIGGER[].j = vcc;
TRIGGER[].k = vcc;
TRIGGER[].prn = !SET;
TRIGGER[].clrn = !RESET;
TRIGGER[WIDTH].clk = !CLK;
TRIGGER[WIDTH-1..1].clk = !((TRIGGER[WIDTH..2].q & !FWC) & !(!TRIGGER[WIDTH..2].q & !BWC));
O[WIDTH..1] = TRIGGER[1..WIDTH].q;
end;
— Примітка:
— Значення входів, що відповідают вставленню відліку лічильника в
— зростаючому напрямку:
— FWC = 1;
— BWC = 0.
— Значення входів, що відповідают вставленню відліку лічильника в
— спадаючому напрямку:
— FWC = 0;
— BWC = 1.
7.3.5 Результати програмної реалізації лічильників
На рис. 7.3.5 зображено вікно сигнального редактору проекту “counter1”.
Рис 7.3.5. Результати тестування 4-розрядного асинхронного лічильника з крізним переносом за модулем 16
На рис. 7.3.6 зображено вікно сигнального редактору проекту “counter2”.
Рис 7.3.6. Результати тестування асинхронного лічильника за модулем 10
На рис. 7.3.7 зображено вікно сигнального редактору проекту “counter3”.
Рис 7.3.7. Результати тестування 3-розрядного синхронного лічильника
На рис. 7.3.8 зображено вікно сигнального редактору проекту “counter4”.
Рис 7.3.8. Результати тестування 3-розрядного універсального лічильника
7.4 Теоретичні відомості про мультиплексори, демультиплексори, шифратори, дешифратори
7.4.1 Мультиплексор
Мультиплексоромназивають комбінаційний логічний пристрій, призначений для керування передачею даних від кількох джерел до одного вихідного каналу.
Типове використання мультиплексорів– передача даних від кількох рознесених в просторі джерел інформації на вхід приймача. Припустимо, вимірюється температура навколишнього середовища в кількох приміщеннях й результати цих вимірів повинні бути виведені на ЕОМ. При цьому, так як температура змінюється повільно, для отримання достатньої точності зовсім не обов’язково виміряти її постійно. А достатньо мати виміри, проведені через деякі фіксовані проміжки часу. Головне, щоб проміжки між двома вимірами були суттєво менші за сталу часу, що характеризує зміну температури в приміщенні, яке контролюється. Саме цю функцію, тобто підключення різних джерел інформації до одного приймача, за заданою командою, і виконує мультиплексор. Інформацію, рознесену в просторі, він перетворює до вигляду з розділом в часі.
Відповідно до визначення, мультиплексор повинен мати один вихід і дві групи входів: інформаційні і адресні. Код, що подається на адресні входи, визначає, який з інформаційних входів в даний момент підключений до вихідного виводу. Оскільки n-розрядний двійковий код може приймати 2n значень, то, якщо число адресних входів мультиплексора дорівнює n, то число його інформаційних входів повинно дорівнювати 2n.
Таблиця дійсності, що відображає роботу мультиплексора з двома адресними входами має наступний вигляд (табл. 7.4.1).
Табл. 7.4.1. Таблиця дійсності для мультиплексора з двома адресними входами
E
A1
A0
Q
1
х
x
1
D0
1
D1
1
D2
1
1
D3
В даній таблиці враховано, що мультиплексор зазвичай має додатковий інверсний вихід і вхід дозволу роботи Е (в програмах мовою AHDL вхід дозволу роботи, по прикладу примітивів тригерів, має ім’я ENA). Якщо на вхід дозволу роботи Е подається активний логічний сигнал (Е=1), вихідний сигнал мультиплексора постійний і не залежить від його вхідних сигналів.
Функція алгебри логіки, що описує роботу мультиплексора має вид:
. (1)
Логічна схема мультиплексора, що відповідає наведеній функції алгебри логіки та умовне позначення мультиплексора на прикладі ІС (інтегральна схема) 555КП7 показані на рис. 7.4.1 а, б.
а) б)
Рис. 7.4.1. Логічна схема мультиплексора (а) і його умовне графічне позначення (б)
При передачі інформації від кількох джерел по звичайному каналу з розподілом в часі потрібні не тільки мультиплексори, але й пристрої оберненого призначення, що розподіляють інформацію, отриману з одного каналу поміж кількох приймачів. Таку задачу вирішують демультиплексори.
В інтегрованому середовищі MAX+PLUS II за допомогою мови AHDL мультиплексор може бути описаний двома методами:
1) таблицею дійсності;
2) на поведінковому рівні.
Описання пристрою за допомогою таблиці дійсності найбільш просте, адже вимагає знання проектувальником лише таблиці дійсності мультиплексора. Об’єм отриманої програми, порівняно з об’ємом програми описання на поведінковому рівні, має значно менший розмір, але архітектура (логічна схема) самого пристрою залишається проектувальнику невідомою.
Фахівець обирає метод описання виходячи з технічного завдання, заданого об’єму програми, кількості елементарних вентилів на мікросхемі та власного досвіду.
В даній дипломній роботі приклади описання мультиплексора, що має два адресних, чотири інформаційних входи і один вхід дозволу роботи наведено і за допомогою таблиці дійсності, і на поведінковому рівні.
7.4.2 Демультиплексор
Демультиплексоромназивається комбінаційний логічний пристрій, призначений для керування передачею даних від одного джерела інформації до декількох вихідних каналів. Відповідно до визначення, демультиплексор в загальному випадку має один інформаційний вхід, n адресних входів і 2n виходів. Таблиця дійсності, що описує роботу демультиплексора з двома адресними входами і входом дозволу роботи Е, має вид (табл. 7.4.2):
Табл.7.4.2. Таблиця дійсності для демультиплексора з двома адресними входами
E
A1
A0
Q0
Q1
Q2
Q3
1
x
X
D
1
D
1
D
1
1
D
Даній таблиці відповідає наступна функція алгебри логіки:
(2)
На рис. 7.4.2, а наведена логічна схема демультиплексора, що задовольняє функції алгебри логіки (2), а на рис. 7.4.2, б показано його умовне графічне зображення.
а) б)
Рис. 7.4.2. Логічна схема демультиплексора (а) і його умовне графічне позначення (б)
7.4.3 Шифратор
Шифратором, абокодером називається комбінаційний логічний пристрій для перетворення чисел з десяткової системи відліку до двійкової. Входам шифратора послідовно присвоюються значення десяткових чисел, тому подача активного логічного сигналу на один з входів сприймається шифратором як подача відповідного десяткового числа. Цей сигнал перетворюється на виході шифратора в двійковий код. Відповідно до сказаного, якщо шифратор має n виходів, то число його входів повинно бути не більше за 2n. Шифратор, що має 2n входів і n виходів, називається повним. Якщо число входів шифратора менше за 2n, то він називається неповним.
Розглянемо роботу шифратору на прикладі перетворювача десяткових чисел від 0 до 9 в двійково-десятковий код. Таблиця дійсності, що відповідає даному випадку має вигляд (табл. 7.4.3).
Так як число входів даного пристрою менше за 2n = 16, то ми маємо неповний шифратор. Використовуючи таблицю для Q3, Q2, Q1, Q0, стає можливо записати наступні вирази:
Q3 = x8 + x9;
Q2 = x4 +x5 + x6 +x7;
Q1 = x2 + x3 +x6 + x7; (3)
Q0 = x1 + x3 +x5 +x7 +x9.
Табл. 7.4.3. Таблиця дійсності для перетворювача десяткових чисел від 0 до 9 в двійко-десятковий код
x9
x8
x7
х6
x5
x4
x3
x2
x1
x0
Q3
Q2
Q1
Q0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
Отримана система (3) характеризує роботу шифратора. Логічна схема пристрою, що відповідає системі (3) показана на рис. 7.4.3.
Неважко помітити, що в шифраторі даного типу сигнал, що подається на вхід x0не використовується. Тому відсутність сигналу на будь-якому з входів x0, x1 трактується схемою як наявність нульового сигналу.
Рис. 7.4.3. Логічна схема шифратору десяткових чисел
Основний напрямок використання шифратора в цифрових системах – введення початкової інформації з клавіатури.
При натисканні будь-якої клавіші на відповідний вхід шифратора подається сигнал “логічна одиниця”, який і перетворюється потім в двійково-десятковий код. Варіант пристрою введення інформації показано на рис. 7.4.4.
Рис. 7.4.4. Пристрій введення інформації з клавіатури
В інтегрованому середовищі MAX+PLUS II за допомогою мови AHDL шифратор може бути описаний двома методами:
3) емульованою, за допомогою оператора CASE, таблицею дійсності;
4) на поведінковому рівні.
Описання пристрою, емульованою за допомогою оператора CASE, таблицею дійсності найбільш просте, адже вимагає знання проектувальником лише таблиці дійсності шифратору. Об’єм отриманої програми, порівняно з об’ємом програми описання на поведінковому рівні, має значно менший розмір, але архітектура (логічна схема) самого пристрою залишається проектувальнику невідомою.
Фахівець обирає метод описання виходячи з технічного завдання, заданого об’єму програми, кількості елементарних вентилів на мікросхемі та власного досвіду.
В даній дипломній роботі наведено приклади описання шифратора 10 на 4 і за допомогою таблиці дійсності, і на поведінковому рівні.
7.4.4 Дешифратор
Дешифратором, або декодеромназивається комбінаційний логічний пристрій для перетворення чисел з двійкової системи відліку до десяткової. Відповідно до визначення дешифратор відноситься до класу перетворювачів коду. Розуміється, що кожному двійковому числу ставиться у відповідність сигнал, що формується на виході пристрою. Таким чином, дешифратор виконує операцію, обернену стосовно шифратора. Якщо число адресних входів дешифратора n пов’язано з числом його виходів m співвідношенням m = 2n, то дешифратор називають повним. В оберненому випадку, якщо m
Поведінку дешифратора описують таблицею дійсності, аналогічно до таблиці дійсності шифратора (дивись систему 3), але в цій таблиці вхідні і вихідні сигнали помінялися місцями. У відповідності до даної таблиці, так як вихідний сигнал дорівнює 1 тільки на одному, єдиному, наборі вхідних змінних, тобто для одної конституєнти одиниці, алгоритм роботи дешифратора описується системою рівнянь виду:
х0= ;
х1 = ; (4)
х2 = ;
і так далі, де Qi – значення логічної змінної на і-ому вході пристрою.
В загальному випадку система (4) має вид:
хі = (Q3Q2Q1Q0)і, (5)
де, xi – сигнал на і-ому виході шифратора; (Q3Q2Q1Q0)і – конституанта одиниці, що відповідає двійковому коду і-ої десяткової цифри.
Неважко помітити, що функція алгебраїчної логіки дешифратора (4) відрізняється від функції алгебраїчної логіки демультиплексора (2) лише наявністю в останній додаткового множника, що відповідає значенню сигналу на інформаційному вході D. Тому при D = 1 демультиплексор функціонує як дешифратор. Обернене перетворення дешифратора в демультиплексор вимагає введення двох допоміжних логічних елементів І, що виконують операцію логічного множення між загальним сигналом інформаційного входу D і відповідним логічним результатом множення адресних сигналів (Q3Q2Q1Q0).
Використовуючи дешифратор, можливо побудувати і схему мультиплексора. Для цього схему з рис. 7.4.5, а необхідно доповнити чотирма вихідними логічними елементами АБО (рис. 7.4.5, б).
а) б)
Рис. 7.4.5. Реалізація демультиплексора (а) і мультиплексора (б) з використанням дешифратора
При розробці інтегральних схем використовують декілька логічних структур дешифратора. Їх головна відмінність полягає в швидкодії і кількості використаних елементарних логічних елементів.
Найбільш швидкодійним і в той же час найбільш складним є дешифратор, що прямо реалізує систему функцій алгебри логіки (4). Такий дешифратор називається одноступінчастим абопаралельним. Його структурна схема аналогічна до схеми демультиплексора (дивись рис. 7.4.2) за умови D = 1.
Вважаючи, що для реалізації обробки одного вхідного логічного сигналу необхідна деяка умовна одиниця апаратних засобів, число одиниць цих апаратних засобів для n-розрядного дешифратора визначається виразом:
N1 = n2n.
На рис. 7.4.6 наведено умовне графічне зображення дешифратора. Воно відповідає інтегральній схемі двійково-десяткового дешифратора типа 564ИД1.
Якщо при проектуванні основною вимогою є простота системного рішення, використовують інші структурні схеми дешифраторів. Однак, спрощення структури досягається за рахунок падіння швидкодії.
Рис. 7.4.6. Умовне графічне позначення дешифратора
Мікросхеми дешифраторів часто мають входом дозволу роботи E (вхід стробування). Наявність цього входу дозволяє на основі готових інтегральних схем при необхідності збільшення розрядності вхідного коду створювати структури дешифраторного дерева.
7.4.5 Програми реалізації мультиплексорів, демультиплексорів, шифраторів, дешифраторів в інтегрованому середовищі MAX+PLUS II
Програма для реалізації шифратора 10 на 4 (опис таблицею дійсності шифратора) за допомогою мови AHDL в інтегрованому середовищі MAX+PLUS II має наступний вигляд:
Subdesign shifrator1
(
XIP[9..0]: input; — вхідні сигнали
QOP[3..0]: output; — вихідні сигнали
)
Begin
Table
XIP[] => QOP[];
b«0000000001» => b«0000»;
b«0000000010» => b«0001»;
b«0000000100» => b«0010»;
b«0000001000» => b«0011»;
b«0000010000» => b«0100»;
b«0000100000» => b«0101»;
b«0001000000» => b«0110»;
b«0010000000» => b«0111»;
b«0100000000» => b«1000»;
b«1000000000» => b«1001»;
End table;
End;
Програма для реалізації шифратора 10 на 4 (опис на поведінковому рівні шифратора) за допомогою мови AHDL в інтегрованому середовищі MAX+PLUS II має наступний вигляд:
Subdesign shifrator2
(
XIP[9..0]: input; — вхідні сигнали
QOP[3..0]: output; — вихідні сигнали
)
Begin
QOP[3]= XIP[8] + XIP[9];
QOP[2]= XIP[4] + XIP[5] + XIP[6] + XIP[7];
QOP[1]= XIP[2] + XIP[3] + XIP[6] + XIP[7];
QOP[0]= XIP[1] + XIP[3] + XIP[5]+ XIP[7] + XIP[9];
End;
Програма для реалізації 3-розрядного дешифратора з інверсними виходами за допомогою мови AHDL в інтегрованому середовищі MAX+PLUS II має наступний вигляд:
subdesign decipherer1
(
XIP[3..1]: input; — вхідні сигнали
QOP[7..0]: output; — вихідні сигнали
)
begin
case XIP[] is
when 0 => QOP = b«11111110»;
when 1 => QOP = b«11111101»;
when 2 => QOP = b«11111011»;
when 3 => QOP = b«11110111»;
when 4 => QOP = b«11101111»;
when 5 => QOP = b«11011111»;
when 6 => QOP = b«10111111»;
when 7 => QOP = b«01111111»;
end case;
end;
Програма для реалізації мультиплексора з 2 адресними входами, 4 інформаційними і входом дозволу роботи (опис емульованою таблицею дійсності мультиплексора) за допомогою мови AHDL в інтегрованому середовищі MAX+PLUS II має наступний вигляд:
subdesign multiplexer1
(
INFIN[4..1]: input; — інформаційні входи
ADRIN[2..1]: input; — адресні входи
ENA: input; — вхід дозволу роботи (вхід стробування)
Q: output; — вихід мультиплексора
)
begin
if ENA == 0 then — емуляція таблиці дійсності
case ADRIN[2..1] is
when 0 => Q = INFIN[1];
when 1 => Q = INFIN[2];
when 2 => Q = INFIN[3];
when 3 => Q = INFIN[4];
end case;
end if;
end;
— Примітка: компілятор AHDL не дозволяє присутності в
— таблиці дійсності змінних (параметрів), навіть якщо
— змінним (параметрам) раніше вже присвоєне фіксоване
— значення. Тому за логікою таблиці дійсності, на основі
— оператору вибору CASE, формується послідовність перевірки
— значень вхідних сигналів системи.
Програма для реалізації мультиплексора з 2 адресними входами, 4 інформаційними і входом дозволу роботи (опис на поведінковому рівні мультиплексора) за допомогою мови AHDL в інтегрованому середовищі MAX+PLUS II має наступний вигляд:
subdesign multiplexer2
(
INFIN[4..1]: input; — інформаційні входи
ADRIN[2..1]: input; — адресні входи
ENA: input; — вхід дозволу роботи (вхід стробування)
Q: output; — вихід мультиплексора
)
begin
Q = INFIN[1] & !ADRIN[2] & !ADRIN[1] & !ENA #
INFIN[2] & !ADRIN[2] & ADRIN[1] & !ENA #
INFIN[3] & ADRIN[2] & !ADRIN[1] & !ENA #
INFIN[4] & ADRIN[2] & ADRIN[1] & !ENA;
end;
— Примітка: Q — функція алгебри логіки, що описує роботу мультиплексора.
Програма для реалізації демультиплексора з 3 адресними входами, 1 інформаційним і входом дозволу роботи за допомогою мови AHDL в інтегрованому середовищі MAX+PLUS II має наступний вигляд:
subdesign demultiplexer1
(
ADRIN[3..1]: input; — адресний вхід
INFIN: input; — інформаційний вхід
ENA: input; — вхід дозволу роботи (вхід стробування)
Q[7..0]: output; — виходи демультиплексора
)
begin
if ENA == 0 then
case ADRIN[] is
when 0 => Q[0] = INFIN;
when 1 => Q[1] = INFIN;
when 2 => Q[2] = INFIN;
when 3 => Q[3] = INFIN;
when 4 => Q[4] = INFIN;
when 5 => Q[5] = INFIN;
when 6 => Q[6] = INFIN;
when 7 => Q[7] = INFIN;
end case;
end if;
end;
7.4.6 Результати програмної реалізації мультиплексорів, демультиплексорів, шифраторів, дешифраторів
На рис. 7.4.7 зображено вікно сигнального редактору проекту “shifrator1”.
Рис.7.4.7. Результати тестування шифратора 10 на 4
На рис. 7.4.8 зображено вікно сигнального редактору проекту “decipherer1”.
Рис. 7.4.8. Результати тестування повного 3-розрядного дешифратора з інверсними виходами
На рис. 7.4.9 зображено вікно сигнального редактору проекту “multiplexer2”.
Рис. 7.4.9. Результати тестування мультиплексора з 2 адресними входами, 4 інформаційними і входом дозволу роботи
На рис. 7.4.10 зображено вікно сигнального редактору проекту “demultiplexer1”.
Рис. 7.4.10. Результати тестування демультиплексора з 3 адресними входами,1 інформаційним і входом дозволу роботи
7.5 Теоретичні відомості про суматори, віднімані
7.5.1 Суматори
Крайній лівий розряд двійкового числа, такого, наприклад, як 101011, називають самим старшим розрядом (ССР), а крайній правий розряд – самим молодшим розрядом (СМР). Нагадаємо, що розряди представленого двійкового числа в порядку зростання старшинства мають ваги (зправа налiво) 1, 2, 4, 8, 16, 32.
Оскільки в двійкових числах присутні лише дві цифри (0 і 1), таблиця додавання досить проста. Вона приведена на рис. 7.5.1. Як і в випадку додавання десяткових чисел, три перших результати не викликають питань. Що стосується останньої задачі (1+1), то при складанні десяткових чисел в даному випадку відповіддю було б число 2. Таким чином, при двійковому додаванні 1+1=0 плюс перенос 1 в сусідній старший двійковий розряд.
Рис. 7.5.1. Таблиця двійкового додавання
Ще один приклад на складання двійкових чисел представлено на рис. 7.5.2, а.
продолжение
--PAGE_BREAK--Рис. 7.5.2. Двійкове додавання а) – приклад на двійкове додавання; б) — скорочена форма таблиці двійкового додавання
Рішення виглядає простим, доки ми не доходимо до розряду двійок, де треба знайти двійкову суму. В десятковій системі ця сума дорівнює 3, що відповідає числу 11. Цей випадок не відображений на рис. 7.5.1. Сума 1+1+1 може виникнути в будь-якому розряді, за винятком розряду одиниць. В нову (скорочену) таблицю на рис. 7.5.2, б включена ще одна можлива комбінація 1+1+1.
Ця таблиця справедлива для всіх розрядів двійкових чисел, за виключенням розряду одиниць.
У відповідній таблиці дійсності (табл. 7.5.1) надано всі можливі комбінації двійкових однорозрядних доданків А, В і сигналу переносу Сin.
Табл.7.5.1. Таблиця дійсності повного суматора
Входи Виходи
Сin
В
А
S
С0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
Перенос + В + А
Сума
Перенос
Повні суматори використовуються для складання всіх двійкових розрядів за виключенням одиниць. Вони повинні мати додатковий вхід переносу.
Повний суматор – 3-входова схема. Сигнали на його виходах Sі С0отримуються внаслідок складання трьох вхідних сигналів (на входах А, В і Сin).
На рис. 7.5.3 показана розгорнута логічна схема повного суматора. Вона основана на структурній схемі з двома напівсуматорами.
Рис.7. 5.3. Логічна схема повного суматора
На рис. 7.5.4. приведена інша схема повного суматора з використанням двох логічних елементів виключного АБО і трьох логічних елементів І-НЕ. Зазначимо, що схеми, приведені на рис. 7.5.3. і 7.5.4. відрізняються лише заміною логічних елементів І та АБО на логічні елементи І-НЕ.
Рис. 7.5.4. Логічна схема повного суматора з використанням виключного АБО та І-НЕ
Напівсуматори і суматори зазвичай використовують разом. Велика кількість схем, аналогічних до напівсуматорів і повних суматорів, є в складі мікропроцесорних арифметично-логічних приладів (АЛП). Мікропроцесорні АЛП можуть виконувати і операції віднімання, при цьому використовуються ті ж самі напівсуматори і суматори.
Певним чином поєднуючи між собою напівсуматори та повні суматори отримують пристрої, що одночасно виконують додавання декількох двійкових розрядів. Пристрій, схема якого показана на рис. 7.5.5. виконує операцію додавання двох 3-розрядних чисел. Числа-доданки А2А1А0і В2В1В0. Сигнали, що відповідають значенням розряду одиниць в доданках, поступають на вхід суматора розряду одиниць (напівсуматора). Вхідними сигналами для повного суматора розряду двійок є сигнал переноса з виходу напівсуматора (подається на вхід Сin) і значення А1 і В1 розряду двійок і доданків. Далі суматор четвірок складає А2 і В2 і сигнал переносу з суматора двійок. На двійковому виході пристрою (показано в правому нижньому куті рис. 7.5.5) встановлюється двійкова сума.
В результаті додавання двох 3-розрядних двійкових чисел можливо отримати 4-розрядне число, тому на індикаторі суми маємо додатковий розряд вісімок. Зверніть увагу, що даний розряд пов’язаний з виходом (С0) суматора четвірок.
Рис. 7.5.5. 3-розрядний паралельний суматор
Логіка роботи розглядуваного 3-розрядного суматора майже не відрізняється від послідовності операцій, що виконуються при додаванні вручну (додаванні однорозрядних чисел плюс перенос в наступний розряд). Однак електронний суматор виконує дані операції набагато швидше.
Ще раз зазначимо, що в багаторозрядних суматорах напівсуматори використовуються лише для додавання в розряді одиниць; у всіх iнших розрядах використовуються повні суматори. Описаний вище 3-розрядний суматор називається паралельним суматором.
В паралельному суматорі інформаційні біти всіх розрядів поступають на входи одночасно. Результат (сума) з’являється на виході практично миттєво. Паралельний суматор на рис. 7.5.5 відноситься до класу комбінаційних логічних схем. Для фіксації даних на входах і виходах суматорів зазвичай використовують різноманітні додаткові регістри.
7.5.2 Віднімачі
Далі буде показано, що суматори і віднімачі подібні один до одного, і, крім того напіввіднімачі та повні віднімачі використовуються аналогічно напівсуматорам та повним суматорам. Таблиця двійкового віднімання приведена нижче, в ній наведено правила віднімання двійкових чисел, що подані на рис. 7.5.6, у вигляді таблиці дійсності. Ми бачимо, що В віднімається з А (А і В – вхідні сигнали), результат (різниця) появляється на виході D1. Якщо В більше за А (як в рядку 2 таблиці), потрібно позичити 1 в сусіднього старшого розряду. Сигнал позики вказано у стовпці В0.
Табл. 7.5.2. Таблиця двійкового віднімання
Входи
Виходи
А
В
Di
B0
1
1
1
1
1
1
1
A-B
Різниця
Позика
продолжение
--PAGE_BREAK--
Рис. 7.5.6. Таблиця двійкового віднімання
При відніманні багаторозрядних двійкових чисел треба приймати до уваги позику “одиниць” в більш старших розрядах.
Таблиця дійсності, що містить всі можливі комбінації, які виникають при відніманні двійкових чисел, приведена нижче.
Табл. 7.5.3. Таблиця дійсності повного віднімача
Входи Виходи
A
В
Bin
Di
B0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
A – B – Bin
Різниця
Позика
Умовне позначення повного віднімача показано на рис. 7.5.7, а. Ліворуч – входи А, В, Bin, праворуч – виходи Di, B0.По аналогії з повним суматором повний віднімач можливо зібрати з двох напіввіднімачів і логічного елемента АБО. На рис. 7.5.7, б показано як потрібно поєднати напіввіднімачі і логічний елемент АБО, щоб отримати повний віднімач. Розгорнута логічна схема повного віднімача наведена на рис. 7.5.7, в. Ця схема працює у відповідності до таблиці дійсності 7.5.3. При необхідності логічні елементи І та АБО можливо замінити на три логічних елемента І-НЕ. В цьому випадку ми отримаємо схему повного віднімача, аналогічну до схеми повного суматора.
Рис. 7.5.7. Повний віднімач а) – умовне графічне позначення; б) – структурна схема для випадку використання двох напіввіднімачів і логічного елемента АБО; в) – принципова схема
Поєднуючи між собою напіввіднімачі і повні віднімачі, отримують пристрої, що називають паралельними віднімачами. Аналогічним чином до розглядуваного вище трьохрозрядного суматора збирається і паралельний віднімач. Суматор на рис. 7.5.5 називається паралельним, оскільки інформаційні біти всіх розрядів в доданках поступають на даний суматор одночасно.
На рис. 7.5.8 подано структурну схема, отримана шляхом об’єднання одного напіввіднімача і трьох повних віднімачей. Це схема 4-розрядного паралельного віднімача, який виконує операцію віднімання одного двійкового числа B3B2B1B0 з двійкового числа А3А2А1А0. Зверніть увагу, що верхній (на схемі) віднімач виконує віднімання в розряді одиниць (СМР). Вихід B0цього віднімача пов’язаний з віднімачем розряду двійок.
Рис. 7.5.8. 4-розрядний паралельний віднімач
Взагалі вихід позики B0кожного віднімача пов’язаний з входом позики Bin віднімача сусіднього старшого розряду. Ці лінії зв’язку “слідкують” за позиками в процесі віднімання двійкових чисел.
7.5.3 Програми реалізації суматорів, віднімачів в інтегрованому середовищі MAX+PLUS II
Програма для реалізації 4-розрядного суматора за допомогою мови AHDL в інтегрованому середовищі MAX+PLUS II має наступний вигляд:
SUBDESIGN add_gate
(
A[4..1], B[4..1], cin: input;
C[4..1], cout: output;
)
VARIABLE
carry_out[5..1]: node;
BEGIN
carry_out[1] = cin;
FOR i IN 1 TO 4 GENERATE
C[i] = A[i] $ B[i] $ carry_out[i];
carry_out[i + 1] = CARRY ( A[i] & B[i] # carry_out[i] & ( A[i] # B[i] ));
END GENERATE;
cout = carry_out[5];
END;
Програма для реалізації 4-розрядного віднімача за допомогою мови AHDL в інтегрованому середовищі MAX+PLUS II має наступний вигляд:
SUBDESIGN add_sub
(
A[4..1], B[4..1]: input = GND;
Res[4..1], Cout: output;
)
VARIABLE
S[4..1]: node;
Cout_int: node;
BEGIN
(Cout_int, S[]) = (GND, A[]) — (GND, B[]);
(Cout, Res[]) = (Cout_int, S[]);
END;
7.5.4 Результати програмної реалізації суматорів, віднімачів
На рис. 7.5.9 зображено вікно сигнального редактору проекту “add_gate”.
Рис. 7.5.9. Результати тестування 4-розрядного суматора
На рис. 7.5.10 зображено вікно сигнального редактору проекту “add_sub”.
Рис. 7.5.10. Результати тестування 4-розрядного віднімача
8. Проект реалізації COM-порту в САПР MAX+PLUS II
8.1 Теоретичні відомості про послідовні порти і протокол RS-232
Послідовний інтерфейс для передачі даних в одну сторону використовує одну сигнальну лінію, по якій інформаційні біти передаються один за одним послідовно. Такий засіб передачі і визначає назву інтерфейсу і порту, що його реалізує. Ці назви відповідають англійським термінам Serial Interface і Serial Port. Послідовна передача даних може відбуватись як в асинхронному, так і у синхронному режимах.
При асинхронній передачі кожному біту передує старт-біт, що сигналізує приймачу про початок чергової посилки, за яким зазвичай слідують біти даних і, можливо, біт паритету. Завершує посилку стоп-біт, що гарантує визначену затримку між сусідніми посилками (рис. 8.1).
Рис. 8.1. Формат асинхронної передачі
Старт-біт наступного посланого байту може посилатись в будь-який момент після закінчення стоп-біту, тобто між передачами можливі паузи нефіксованої довжини. Старт-біт, що має завжди строго визначене значення (лог. 0), забезпечує простий механізм синхронізації приймача. Приймач і передавач працюють на одній швидкості обміну, що виміряється в кількості передаваємих бітів за секунду. Внутрішній генератор синхронізації приймача використовує лічильник-дільник опорної частоти, що обнуляється в момент прийняття початку (переднього фронту) старт-біту. Цей лічильник генерує внутрішні строби, по яким приймач фіксує біти, які він приймає. В ідеальному варіанті строби розташовуються в середині бітових інтервалів, що забезпечує можливість прийняття даних і при деяких неузгодженнях швидкостей приймача і передавача.
Неважко помітити, що при передачі 8 біт даних, одного контрольного і одного стоп-біта гранично допустиме неузгодження швидкостей приймача і передавача, при якому дані будуть розпізнані вірно, не може перевищувати 5%. З врахуванням фазових змін (затягнутих фронтів сигналу) і дискретності роботи внутрішнього лічильника синхронізації реально допустимі менші відхилення частот. Чим менший коефіцієнт ділення внутрішньої частоти внутрішнього генератора (частота передачі), тем більше похибка прив’язки стробів до середині бітового інтервалу, і, відповідно, вимоги до узгодження частот найбільш строгі. Також, чим вище частота передачі, тим більше вплив факторів, що призводять до похибок.
Формат асинхронної посилки дозволяє виявляти можливі помилки передачі:
1) якщо прийнятий перепад, що сигналізує про початок посилки, а по стробу старт-біта зафіксований рівень логічного одиниці, то старт-біт вважається помилковим і приймач знову переходить до стану очікування. Про дану помилку формату приймач може і не повідомляти;
2) якщо під час, відведений під стоп-біт(и), виявлено рівень логічного нуля, фіксується помилка стоп-біта (також помилка формату);
3) якщо використовується контроль паритету, то після посилки бітів даних (перед стоп-бітом) посилається контрольний біт. Цей біт доповнює кількість одиничних біт даних до парного або непарного в залежності від прийнятої згоди. Прийняття біту з помилковим значенням контрольного біту при включеному контролі паритету призводить до фіксації помилки прийнятих даних.
Контроль формату дозволяє знаходити обрив лінії: при цьому зазвичай приймається логічний нуль, який спочатку трактується як старт-біт і нульові біти даних, але потім спрацьовує контроль стоп-біту.
Кількість біт даних може бути 5, 6, 7 або 8 (5- і 6-бітні формати мало поширені). Кількість стоп біт може бути 1, 1.5 і 2 (“півтора біта” означає лише довжину стопового інтервалу).
Асинхронний обмін в персональному комп’ютері реалізується за допомогою протоколу RC-232.
Інтерфейс RC-232 призначений для підключення апаратури, що приймає або передає дані (ООД – одно кінцевий об’єкт передачі даних або АДП – апаратура передачі даних), до одно кінцевої апаратури каналів даних. В ролі АДП може виступати комп’ютер, принтер, плоттер або інші периферійні пристрої. Цій апаратурі відповідає абревіатура DTE – Data Transfer Equipment. В ролі АКД зазвичай виступає модем, цій апаратурі відповідає абревіатура DCE – Data Communication Equipment. Кінцевою метою підключення є з’єднання двох пристроїв DTE, повна схема з’єднання приведена на рис. 8.2. Інтерфейс дозволяє виключити канал зв’язку разом з парою пристроїв DTE (модемів), поєднав пристрої безпосередньо за допомогою нуль-модемного кабелю (рис. 8.3).
Рис. 8.2. Повна схема з’єднання за RC-232
Рис. 8.3. З’єднання за RC-232 нуль-модемним кабелем
Стандарт описує керуючі сигнали інтерфейсу, пересилку даних, електричний інтерфейс і типи сполучень. Стандарт описує асинхронний і синхронний режими обміну, але COM-порти підтримують лише асинхронний режим.
8.2 Структура COM-порту при його реалізації в САПР MAX+PLUS II
Принципова структурна схема COM-порту при його реалізації в системі автоматизованого проектування MAX+PLUS II зображена на рис. 8.4. Вона являє собою розгорнутий варіант рис. 8.2, де в ролі одно кінцевого об’єкту передачі даних виступатиме пульт з 20 варіантами вихідного сигналу.
Візьмемо стоп-біт, що дорівнює 1, а кількість бітів даних — 8. Частота сигналу синхронізації може бути рівною 115200 біт за секунду або 9600 біт за секунду. Для забезпечення схеми з можливістю переключення частоти введемо до неї сигнал переключення (switch signal), який і переключатиме частоту сигналів синхронізації, що поступатиме на вхід тактування.
Всі елементи схеми доцільно описати окремо за допомогою мови AHDL в текстовому редакторі, а потім, використовуючи символьний редактор, перетворити елементи на символи і зібрати повністю всю схему вже у графічному редакторі.
Розглянемо функціональне призначення кожного з наведених в схемі пристроїв.
Шифратор 20 на 10має 20-розрядний вхід (Encipherer_1_input[20..1]) і 10-розрядний вихід (Encipherer_1_output[10..1]). Шифратор описаний з використанням таблиці дійсності виконує дві функції.
По-перше, в залежності від натиснутої на пульті клавіші він видає двійковий код, який знаходиться в діапазоні від 0000000011 до 0000101001. Дана двійкова послідовність вихідного коду завжди починається з 0, а закінчується 1, ці числа являють собою ніщо інше, як старт-біт і стоп-біт. Тобто шифратор на своєму виході дає вже готовий код, що може передаватись по лінії зв’язку.
По-друге, можливий випадок коли дві клавіші будуть натиснуті одночасно, що може призвести до збою в системі. Тому рядок
WHEN OTHERS => Encipherer_1_output[] = b«1111111111»;
дає вказівку шифратору видавати на виході двійковий код 1111111111 в будь-яких інших випадках, не передбачених таблицею дійсності шифратора — це захисна функція.
5-розрядний лічильник на D-тригерах має вхід (Counter_1_input), на який поступає сигнал синхронізації від зовнішнього генератора імпульсів, вхід очищення (Reset) і виконує функцію дільника частоти. Даний лічильник має два виходи (Counter_1_output[1] і Counter_1_output[1]), що відповідають вхідній частоті, поділеній на 2 і вхідній частоті, поділеній на 12.
Мультиплексор має 4 інформаційні (Multiplexer_1_input[4..1]), 2 адресні входи (Switch_signal[2..1]) і вхід дозволу роботи (Enable). Пристрій реалізовано за допомогою емульованої таблиці дійсності і його завданням є переключення виходу (Multiplexer_1__output) на один з інформаційних входів в залежності від стану адресних входів. Оскільки частота роботи системи може бути рівною 115200 біт за секунду або 9600 біт за секунду, то для керування переключенням досить і одного адресного входу, а другий адресний вхід (Switch_signal[2]), що у вікні графічного редактору відповідає імені SWITCH[2], заземлимо. З тієї ж самої причини заземлимо сигнали Multiplexer_1_input[4] і Multiplexer_1_input[3], що у вікні графічного редактору відповідають іменам MUX[4] і MUX[3]. Другий адресний вхід може бути потрібний, якщо в майбутньої, при модифікації схеми, кількість можливих варіацій частоти збільшиться до чотирьох.
4-розрядний лічильник на D-тригерах має вхід (CLK), на який передається обраний за допомогою мультиплексора сигнал синхронізації і вхід очищення (Reset). Цей лічильник керує завантаженням послідовного регістру шляхом призначення власному виходу (LOAD) значення 0 або 1: 0 – завантаження заборонено, 1 – завантаження дозволено.
10-розрядний паралельний регістрD-тригерах зберігає і зсуває з приходом кожного нового імпульсу синхронізації вихідний код, що сформований і переданий йому мультиплексором. Регістр має 10-розрядний вхід для завантаження “інформаційного” коду (Register_1_input[9..0]), вхід дозволу роботи (Enable), вхід предвстановлення (Set), вхід синхронізації (Clk), вхід керуванням завантаження (Load) і однорозрядний вихід (Register_1_output).
8.3 Програми структурних компонентів COM-порту мовою AHDL в САПР MAX+PLUS II
Програма для реалізації шифратора 20 на 10 (опис таблицею дійсності шифратора) за допомогою мови AHDL в інтегрованому середовищі MAX+PLUS II має наступний вигляд:
Subdesign encipherer_1
(
Encipherer_1_input[20..1]: input;
Encipherer_1_output[10..1]: output;
)
Begin
CASE Encipherer_1_input[] IS
WHEN b«00000000000000000001» => Encipherer_1_output[] = b«0000000011»;
WHEN b«00000000000000000010» => Encipherer_1_output[] = b«0000000101»;
WHEN b«00000000000000000100» => Encipherer_1_output[] = b«0000000111»;
WHEN b«00000000000000001000» => Encipherer_1_output[] = b«0000001001»;
WHEN b«00000000000000010000» => Encipherer_1_output[] = b«0000001011»;
WHEN b«00000000000000100000» => Encipherer_1_output[] = b«0000001101»;
WHEN b«00000000000001000000» => Encipherer_1_output[] = b«0000001111»;
WHEN b«00000000000010000000» => Encipherer_1_output[] = b«0000010001»;
WHEN b«00000000000100000000» => Encipherer_1_output[] = b«0000010011»;
WHEN b«00000000001000000000» => Encipherer_1_output[] = b«0000010101»;
WHEN b«00000000010000000000» => Encipherer_1_output[] = b«0000010111»;
WHEN b«00000000100000000000» => Encipherer_1_output[] = b«0000011001»;
WHEN b«00000001000000000000» => Encipherer_1_output[] = b«0000011011»;
WHEN b«00000010000000000000» => Encipherer_1_output[] = b«0000011101»;
WHEN b«00000100000000000000» => Encipherer_1_output[] = b«0000011111»;
WHEN b«00001000000000000000» => Encipherer_1_output[] = b«0000100001»;
WHEN b«00010000000000000000» => Encipherer_1_output[] = b«0000100011»;
WHEN b«00100000000000000000» => Encipherer_1_output[] = b«0000100101»;
WHEN b«01000000000000000000» => Encipherer_1_output[] = b«0000100111»;
WHEN b«10000000000000000000» => Encipherer_1_output[] = b«0000101001»;
WHEN OTHERS => Encipherer_1_output[] = b«1111111111»;
End CASE;
End;
Програма для реалізації мультиплексора з 4 інформаційними, 2 адресними і входом дозволу роботи (опис емульованою таблицею дійсності мультиплексора) за допомогою мови AHDL в інтегрованому середовищі MAX+PLUS II має наступний вигляд:
Subdesign multiplexer_1
(
Multiplexer_1_input[4..1]: input;
Switch_signal[2..1]: input;
Enable: input;
Multiplexer_1__output: output;
)
Begin
if Enable == 0 then
case Switch_signal[2..1] is
when 0 => Multiplexer_1__output = Multiplexer_1_input[1];
when 1 => Multiplexer_1__output = Multiplexer_1_input[2];
when 2 => Multiplexer_1__output = Multiplexer_1_input[3];
when 3 => Multiplexer_1__output = Multiplexer_1_input[4];
end case;
end if;
End;
Програма для реалізації 10-розрядного послідовного регістру зсуву за допомогою мови AHDL в інтегрованому середовищі MAX+PLUS II має наступний вигляд:
Subdesign register_1
(
Register_1_input[9..0]: input;
Enable, Set, Clk, Load: input;
Register_1_output: output;
)
Variable
Triggers[9..0]: DFFE;
Begin
Triggers[9..0].clk = Clk;
Triggers[9..0].prn = Set;
Triggers[9..0].ena = Enable;
IF Load == 0
THEN
Triggers[].d = (Triggers[8..0].q, VCC);
ELSE
Triggers[].d = Register_1_input[];
END IF;
Register_1_output = Triggers[9].q;
End;
Програма для реалізації 4-розрядного лічильника за допомогою мови AHDL в інтегрованому середовищі MAX+PLUS II має наступний вигляд:
Subdesign counter_2
(
CLK: input;
Reset: input;
LOAD: output;
)
Variable
TRIG[3..0]: DFF;
Begin
TRIG[].clrn = Reset;
TRIG[].clk = CLK;
IF ( TRIG[].q == B«1011»)
THEN TRIG[].d = B«0000»;
LOAD = B«1»;
ELSE TRIG[].d = TRIG[].q + 1;
LOAD = B«0»;
END IF;
End;
Програма для реалізації 5-розрядного лічильника за модулем 12 з допомогою мови AHDL в інтегрованому середовищі MAX+PLUS II має наступний вигляд:
Subdesign counter_1
(
Counter_1_input: input;
Reset: input;
Counter_1_output[2..1]: output;
)
Variable
Triggers: JKFFE;
TRIG[4..0]: DFF;
Begin
Triggers.j = vcc;
Triggers.k = vcc;
Triggers.clrn = Reset;
Triggers.clk = Counter_1_input;
TRIG[].clrn = Reset;
TRIG[].clk = Counter_1_input;
IF ( TRIG[].q == B«11000»)
THEN TRIG[].d = B«00000»;
ELSE TRIG[].d = TRIG[].q + 1;
END IF;
Counter_1_output[2..1] = (TRIG[4].q,Triggers.q);
End;
Схема проекту COM-порту зібраного з окремих символів-підпрограм у вікні графічного редактору показано на рис. 8.5. Символи-підпрограми, що зображені у вигляді блоків з іменованими входами і виходами поєднані за допомогою ліній зв’язку.
Рис. 8.5. Реалізація проекту СОМ-порту в графічному редакторі
продолжение
--PAGE_BREAK--