Міністерство
освіти І НАУКИ України
Київський
НАЦІОНАЛЬНИЙ університет
будівництва
і архітектури
Використання програми Active-HDL
для опису і моделювання
цифрових електронних схем
Методичні вказівки до виконання
лабораторних і курсових робіт з дисциплін
"Схемотехніка ЕОМ та елементи і схеми
комп‘ютерних систем",
“ЕОМ та мікропроцесорні системи”
Для
студентів спеціальностей
8.0804.01
- “Інформаційні управляючі системи та технології”,
8.0804.01
- “Інформаційні технології проектування”
Затверджено на засіданні
кафедри систем автоматизації
проектування і управління.
Протокол № від 21.02.2000 р.
Київ
2000
Використання програми Active-HDL для опису і моделювання цифрових
електронних схем. Методичні вказівки до виконання лабораторних і курсових робіт
з дисциплін "Схемотехніка ЕОМ та елементи і схеми комп‘ютерних
систем", “ЕОМ і мікропроцесорні системи”. Для студентів спеціальностей
8.0804.01 - “Інформаційні управляючі системи та технології”, 8.0804.02 -
“Інформаційні технології проектування” /Укл. О.А.Щербина, Г.В.Сисоєва,
Є.Ю.Ярмолюк. Київ: КНУБА, 2000. – 43 с.
Укладачі - канд. техн. наук, доц. О.А.Щербина, студ. Г.В.Сисоєва, студ. Є.Ю.Ярмолюк
Рецензент – cтарш. наук. співроб. Ю.М.Виноградов.
Відповідальний за випуск – канд. техн. наук, доц. В.Б.Задоров.
Сучасний рівень розвитку схемотехніки відзначається появою на ринку інтегральних мікросхем з програмованою користувачем архітектурою. Цей факт надає принципово нових можливостей розробникам електронних схем. Якщо раніше вони могли застосовувати у своїх проектах лише стандартні елементи з наперед визначеними функціями, то тепер з'являється можливість розробки мікросхем під кожний конкретний проект. В результаті суттєво підвищує якість, знижує вартість і змінює характер самого процесу проектування. Задачі, що вирішувалися раніше на рівні розробки структури та вибору елементної бази для реалізації пристрою, тепер можуть бути вирішені на рівні формального опису його структури чи поведінки з подальшим комп'ютерним моделюванням та програмування архітектури мікросхем.
Реалізація такого підходу до проектування потребує використання спеціальних програмних засобів, що дозволяють виконувати формальний опис структур і функцій цифрових електронних схем, моделювати їх роботу, програмувати архітектуру мікросхем у яких вони будуть реалізовані, тощо. До числа таких програмних засобів і належить розроблена фірмою Aldec (США) програма Active-HDL, застосуванню якої і присвячені дані методичні вказівки.
Зрозуміло, що в цій невеликій за обсягом роботі неможливо докладно розглянути усі можливості та деталі застосування даної програми. Мета авторів – у найбільш спрощеній формі ознайомити студентів з основами використання програми Active-HDL у об‘ємі, достатньому для виконання передбачених учбовим планом лабораторних та курсових робіт з дисциплін "Схемотехніка ЕОМ та елементи і схеми комп‘ютерних систем" та "ЕОМ і мікропроцесорні системи". При цьому Active-HDL застосовується не тільки в згаданому вище контексті, а й як зручний засіб моделювання елементів і схем комп'ютерних систем при вивченні основ схемотехніки.
Укладачі висловлюють вдячність фірмі Aldec за методичну допомогу і надання ліцензії на використання програми Active-HDL в учбовому процесі.
Робоче середовище Active-HDL складається з головного вікна програми, в якому відкриваються вікна її компонентів (рис. 1). Нижче в цьому розділі ми коротко розглянемо призначення основних компонентів, а в наступних розділах – роботу з ними.
Проект, розроблений у Active-HDL, складається з набору пов‘язаних між собою файлів (файлів опису, бібліотечних файлів, файлів результатів моделювання проекту, різних допоміжних файлів тощо). Вікно Design Browser (рис. 2) є зручним засобом маніпулювання з файлами проекту. У цьому вікні можна додавати чи вилучати файли, отримати інформацію про ієрархічну підпорядкованість об‘єктів, а за виглядом піктограми файла, можна дізнатись чи компілювався файл після внесення до нього змін і чи була ця компіляція успішною.
Вікно Design Browser відкривається і закривається за допомогою одноіменної кнопки на панелі інструментів чи такої ж опції у меню View. Воно має три панелі:
·
·
Панель файлів -
Files (рис. 2) показує перелік файлів проекту і
зміст робочих бібліотек, а також дозволяє вибрати модуль верхнього рівня зі
списку модулів проекту. Іконки файлів несуть інформацію про тип файла: - vhdl-код,
- граф автомата,
- блок-схема,
-
файл макрокоманд тощо, а також результати компіляції файла:
- успішно скомпільований,
- той, що мав помилки компіляції,
- попередження
компіляції,
- той що не компілювався
після внесення до нього змін.
Під іконкою файла розташовані іконки, що
несуть інформацію про його зміст: - опис сутності й архітектури,
- опис конфігурації, тощо.
·
Панель
структури - Structure (рис. 3) у своїй верхній частині відображає
ієрархічну структуру проекту, що складається з модулів .
Там же відображаються процеси
, описані у модулях. У нижній частині панелі
відображається список сигналів і змінних, присутніх у модулі чи процесі, виділеному
у верхній частині панелі.
· Панель ресурсів - Resources (рис. 4) містить папки з результатами моделювання: List - файли списків, створених під час моделювання; Logs - файли звітів із вікон Console, Simulation, Find і Compile; Waveforms - файли часових діаграм.
До них можна долучати й інші папки, наприклад, файли документації.
Провідник проекту викликається за
допомогою опції Open Design із меню File. Це засіб ефективного управління проектом, що дозволяє не турбуватися
про фізичне розташування файлів проекту. Провідник проекту має функції, що забезпечують
створення і вилучення папок, створення нових і копіювання будь-яких проектів у
нові папки.
Зазвичай усі проекти знаходяться у папці Projects, створеній при інсталяції. Кожний проект представлений у вікні Провідника окремою іконкою (рис. 5). Провідник дозволяє групувати їх в окремі папки. Ці папки не мають жодного відношення до папок файлів, у яких записані проекти. У лівій частині вікна відображається ієрархічна структура папок, у правій – вміст поточної папки. Рядок стану показує назву і шлях до файла опису проекту.
HDL-редактор – це текстовий редактор для вводу і редагування VHDL-файлів (рис. 13). У процесі редагування він розпізнає і автоматично виділяє відповідними кольорами ключові слова, коментарі, ідентифікатори та інші елементи мови VHDL. Це полегшує сприйняття тексту програми та є засобом додаткового синтаксичного контролю.
Роботу у HDL-редакторі полегшують Мовний помічник і Майстер нового файла, про які йдеться нижче.
Мовний помічник дозволяє прискорити розробку коду на VHDL за рахунок використання шаблонів – готових фрагментів коду, що містять базові конструкції мови VHDL та описи основних функціональних блоків: мультиплексорів, тригерів, лічильників, тощо. Мовний помічник містить також шаблон користувача і навчальну програму з декількома простими шаблонами.
Редактор автоматів – це спеціалізований графічний редактор, призначений для побудови графів скінчених автоматів (рис. 16). Граф автомата транслюється програмою Active-HDL у VHDL-код.
Редактор блок-схем – це графічний редактор, що дозволяє описати схему у вигляді елементів (блоків) і зв‘язків між ними (рис. 22). Кожний елемент, у свою чергу, може бути описаний у вигляді VHDL-коду, графа автомата чи блок-схеми нижчого ієрархічного рівня. Врешті увесь опис транслюється програмою Active-HDL у VHDL-код.
Щоб відкрити вікно HDL-редактора, Редактора автоматів чи Редактора блок-схем для редагування існуючого файла, достатньо двічі клацнути мишкою на піктограмі файла у вікні Design Browser.
Для створення і редагування нового файла у тому ж вікні можна скористатися піктограмою Add New File або викликати Майстер нового файла.
Цей Майстер полегшує створення нового файла у HDL-редакторі, Редакторі автоматів чи Редакторі блок-схем. При його використанні, початковий етап створення файла зводиться до вводу відповідей на запити Майстра про ім'я файла, назву сутності, а також про імена і типи портів. Для виклику Майстра можна скористатися опцією New з контекстного меню, що викликається натисканням правої кнопки мишки на вільному полі вікна Design Browser.
Редактор часових діаграм (рис. 6) – це графічний редактор, призначений для перегляду і редагування часових діаграм. Зокрема, у цьому редакторі можна створювати форми сигналів-стимулів, що подаються на входи схем при моделюванні, а також переглядати результати моделювання.
При редагуванні часових діаграм можна застосовувати переміщення, копіювання, склеювання, тощо. Редактор часових діаграм дозволяє також порівняти між собою два сигнали і виділити кольором їх відмінності.
![]() |
У вікні List (рис. 26) результати моделювання відображаються у вигляді таблиці, кожний рядок якої описує одну зміну значень сигналів і містить інформацію про час, коли відбулася ця зміна і про значення сигналів, які встановились у результаті.
У вікні Watch (рис. 27) відображаються поточні значення вибраних користувачем сигналів, час їх встановлення, а також значення, які вони мали до цього моменту.
У вікні Process (рис. 28) відображається інформація зв'язок між процесами, та сигналами, які у них беруть участь.
Консоль – це вікно для виводу текстових повідомлень програмного середовища Active-HDL, наприклад повідомлень про виконання і результати компіляції. Сюди ж можна вводити з клавіатури команди управління цим середовищем. Вікно консолі показане у правому нижньому кутку на рис. 1.
Проектом в програмі Active-HDL, називають набір пов‘язаних між собою файлів, що описують будову і функціонування схеми, а також забезпечують моделювання її роботи, тощо. У кожний момент часу в програмі може бути відкрито не більше одного проекту.
Створення
проекту відразу після запуску Active-HDL на екран виводиться вікно діалогу (рис. 7), що пропонує відкрити
один з існуючих проектів чи створити новий. Вже після запуску програми
відкрити інший проект чи створити новий можна за допомогою опцій Open Design та
New Design у
меню File. Для створення проекту використовується описаний нижче Майстер.
Майстер нового проекту – це програма, що допомагає створити шаблони
файлів проекту та папки, де вони зберігатимуться.
В першому вікні програми (рис. 8) треба ввести ім‘я створюваного проекту, папку де він зберігатиметься, а також ім‘я робочої бібліотеки.
У другому - обирають спосіб створення файлів:
· Create new Source files now - створити нові файли зараз;
· Add existing resources files - додати існуючі файли проектів;
· Import design from Active-CAD - імпортувати проект із Active-CAD;
· Create an empty design - створити пусті файли проекту.
Якщо вибрати Create new Source files now, то в третьому вікні (рис. 9) в колонку Entity Name треба ввести імена файлів, що створюватимуться, а у колонці Source Type вибрати типи цих файлів:
¨ VHDL Code – програма мовою VHDL;
¨ State Diagram – граф автомата;
¨ Block Diagram – блок-схема;
¨ Verilog Source Code – програма
мовою Verilog[1].
Кнопки New та Delete служать для
додавання і вилучення рядків у списку файлів, а кнопка Ports відкриває
вікно (рис. 10), що дозволяє ввести інформацію про порти створюваних файлів.
Кнопки New та Delete служать для
додавання і вилучення рядків у списку портів. Кнопка Type дозволяє задати тип порту (bit,
std_logic тощо), у поля Name та Array Index вводять ім‘я та розрядність порту, а на панелі Port direction вибирають його режим: in, out,
input чи buffer.
В міру введення інформації про порти у лівій частині вікна формуються їх графічні зображення.
У останньому вікні Майстра нового проекту виводиться список підготовлених ним шаблонів файлів. При потребі можна повернутись до виконання попередніх етапів роботи з Майстром, або завершити створення нового проекту, натиснувши кнопку Готово, або відмовитись від створення проекту і завершити роботу з Майстром, натиснувши кнопку Отмена.
На завершення зазначимо, що створені за допомогою даного Майстра файли поки що містять лише декларації сутностей, портів і пусте тіло опису архітектури. Для подальшої роботи з проектом і внесення змін і доповнень у сформовані Майстром файли застосовуються відповідні редактори, а саме, текстовий HDL-редактор та графічні - Редактор автоматів і Редактор блок-схем.
Якщо під час створення проекту
у вікні Майстра нового проекту, показаному на рис. 9, ви вказали не всі потрібні
вам файли, то у подальшій роботі з проектом додати до нього нові файли можна
двічі клацнувши мишкою на команді Add New File у вікні Design Browser. В результаті активізується
вікно діалогу (рис. 11), за допомогою якого ви можете створити новий файл чи
додати до проекту існуючий (Add Existing
File), вказати ім‘я нового файла у полі Name, та обрати його тип:
¨ VHDL Code – програма
мовою VHDL,
¨ State Diagram – граф
автомата,
¨ Block Diagram – блок-схема,
¨ Verilog Source Code – програма мовою Verilog.
Крім того тут обирається спосіб створення нового файла: чи це буде пустий файл (Empty File), що від початку (з нуля) створюється у відповідному редакторі, чи початковий етап створення файла буде виконуватись за допомогою Майстра нового файла (Wizards). Останній варіант дозволяє зекономити час і уникнути зайвих помилок, тому користуватись ним рекомендується не лише початківцям, а й досвідченим програмістам.
Майстер нового файла може викликатися також вибором із меню File опції New, після якої відривається меню, що містить, зокрема, і згадані вище типи файлів проекту (VHDL Code, State Diagram, Block Diagram, Verilog Source Code).
У першому вікні Майстра нового файла треба вказати чи потрібно додавати створюваний файл до поточного проекту (Add generated file to the design).
Якщо створюється графічний файл блок-схеми чи графа автомата, то у наступному вікні вибирають у який саме текстовий файл (мовою VHDL чи мовою Verilog) він компілюватиметься.
У наступному вікні (рис. 12) треба ввести ім‘я створюваного файла, а також імена описуваних у ньому сутності й архітектури. Якщо імена сутності та архітектури не вказати, то вони співпадатимуть з ім‘ям файла.
Останнім вікном Майстра нового файла є описане у попередньому розділі вікно (рис. 10) для введення інформації про порти.
HDL-редактор (рис. 11) –
це інструмент для введення VHDL-коду, файлів випробувального
стенда, та інших текстових файлів. Щоб перейти до редагування існуючого файла
треба клацнути мишкою на його закладці у вікні редактора, або двічі клацнути на
імені файла у вікні Design
Browser, або скористатися опцією Open у контекстному меню. Створення нового файла коду описане у
попередньому розділі.
Як уже відзначалось, HDL-редактор розпізнає і автоматично виділяє відповідними кольорами ключові слова, коментарі, ідентифікатори та інші елементи мови VHDL чи інших мов, з якими він може працювати. Це полегшує сприйняття тексту програми і є засобом додаткового синтаксичного контролю. Для вибору кольорів і шрифтів служить опція Preferences контекстного меню редактора.
В лівій частині вікна HDL-редактора знаходяться
такі функціональні кнопки:
- робить відступ виділеного фрагмента
тексту (коду);
- видаляє відступ в виділеному тексті;
- перетворює обраний текст на коментар;
- знiмає
ознаки коментарів з обраного
тексту;
- генерує для виділеного тексту
символ структури (прямокутник зі значком “+” або “-“), натиснувши на який можна
згортати до одного рядка та знову розгортати даний фрагмент тексту;
- видаляє символи структур з усіх груп;
-
аналізує будову пограми, знаходить у ній специфічні групи операторів, виділяє
їх різними кольорами фону та генерує для них символи структури;
-
автоматично встановлює відступи у відповідності до вкладеності операторів;
- додає посилання (у формі коментарів);
- розміщує у тексті
програми іменовану закладку, перехід до якої можна буде виконати за допомогою
кнопки
.;
управляє відображенням символів кінця рядка;
- відповідно: вирізає та копіює в буфер обміну виділений фрагмент
тексту, і вставляє текст із буфера;
- відповідно: відміняє попередню операцію редагування та відновлює
відмінену операцію;
- відповідно: активізує вікно діалогу для пошуку і заміни тексту за
введеним зразком, дозволяє вибрати один із раніше введених зразків для пошуку,
виконує перехід до наступного і попереднього екземпляра даного зразка;
- відповідно: встановлює або знімає неіменовану закладку, що відображається
у вигляді прапорця, виконує перехід до наступної чи попередньої закладки,
відміняє всі неіменовані закладки.
HDL-редактор дозволяє прискорити і полегшити
написання програм, використовуючи автоматичне введення закінчень ключових
слів. При наборі ключового слова можна вводити тільки його початкові літери
доти, доки справа від курсору не з‘явиться закінчення. Якщо ви погоджуєтесь з
таким закінченням, натисніть клавішу переміщення курсору вправо, якщо ні –
продовжуйте набирати текст.
Подібним чином можна автоматично вводити не лише закінчення ключових
слів, а й цілі шаблони мовних конструкцій. Для цього після появи справа від
курсору закінчення ключового слова, треба натиснути комбінацію клавіш Ctrl+Enter.
Наприклад, для вводу оператора case достатньо ввести лише дві перші літери "са", після чого, натиснувши Ctrl+Enter, ми одержимо у файлі шаблон для написання
коду, показаний на рис. 14.
Ще одним засобом, що суттєво полегшує роботу з HDL-редактором є Мовний
помічник, застосування якого описано нижче.
Як вже відзначалось, мовний помічник дозволяє прискорити розробку
програм на VHDL за рахунок використання шаблонів – готових фрагментів коду, що містять базові конструкції
мови VHDL та описи основних функціональних блоків: мультиплексорів, тригерів, лічильників,
тощо. Мовний помічник містить також шаблон користувача і навчальну програму з декількома
простими проектами.
Для
активізації вікна Мовного помічника (рис. 15) можна скористатися кнопкою на панелі інструментів.
Ліва панель вікна Language Assistant показує ієрархічний список файлів шаблонів, згрупованих у папки, права
– відображає вміст відміченого на лівій
панелі файла. За допомогою контекстного меню лівої панелі можна долучати, перейменовувати
і видаляти файли шаблонів та вставляти їх у файл, що редагується HDL-редактором.
Для цього
можна методом drag & drop перетягти ім‘я шаблона у вікно HDL-редактора з вікна Мовного
помічника, або скористатися кнопкою на його інструментальній панелі чи командою Use з
контекстного меню.
Будь-яка цифрова схема з детермінованою поведінкою може розглядатися як скінчений автомат (автомат зі скінченим числом внутрішніх станів). Отже зв‘язок між сигналами на вхідних і вихідних портах такої схеми може бути описаний графом автомата. Ця форма опису є особливо зручною і наочною для схем, що реалізують алгоритми управління. Її застосування дозволяє суттєво підвищити швидкість створення i верифікації проектів.
Active-HDL має в своєму складі графічний Редактор
автоматів, що дозволяє легко створювати і редагувати графи, компілювати цю
форму опису в опис у вигляді файлів мовою VHDL
чи Verilog, реалізувати на графі ефекти анімації, висвітлюючи поточні
стани автомата під час моделювання,, тощо.
Файли графів автоматів мають імена з розширенням *.asf. Щоб перейти до редагування існуючого файла, треба клацнути мишкою на його закладці у вікні редактора або двічі клацнути на імені файла у вікні Design Browser чи скористатися опцією Open у контекстному меню. Створення нового файла графа автомата описане у розділах 2.1 і 1.2.
Вікно Редактора автоматів (рис. 16) складається з області декларацій (у верхній частині вікна) і робочої області (обведеної контуром). Перша містить інформацію про ім‘я сутності і порти, друга призначена власне для побудови графа.
Панель інструментів Редактора автоматів містить такі функціональні кнопки:
- вибір та редагування;
- додавання нової вершини
(стану);
- додавання нового ребра
(переходу);
- додавання умови переходу;
- дії автомата під час
перебування у стані і під час переходу;
- додавання дії
“Автомат-діаграма”;
- додавання сигналу
- додавання портів: вхідного,
вихідного, двонаправленого;
- додавання початкового стану;
- вставка текстового рядка
(коментаря), малювання кривої лінії, кола, прямокутника;
- вирізання і копіювання в буфер
обміну та вставка з буфера;
- відміна дії та повернення до
попередньої відміненої дії;
- збільшення і зменшення усієї
сторінки, показ усієї сторінки, збільшення виділеного фрагмента;
- генерація VHDL–коду поточного
графа автомата та перегляд згенерованого VHDL-коду;
- трасування до наступного
стану.
Файл, створений Майстром нового проекту чи Майстром нового файла, як правило, уже містить імена сутності і архітектури, а також зображення портів, що були введені у діалоговому вікні, показаному на рис. 10. Якщо ж був створений порожній файл, то усі названі реквізити треба вводити вручну.
·
Для розміщення
порту, треба натиснути на панелі інструментів іконку з зображенням потрібного
режиму (вхід, вихід чи
двонаправлений порт), потім вказати мишкою положення порту на полі декларативної
частини.
· Переміщення порту, як і будь-яких інших елементів, виконується мишкою методом drag & drop.
·
Для вилучення порту, його спочатку треба виділити, клацнувши на ньому
мишкою (порт буде обрамлений червоною рамкою), а потім натиснути клавішу Delete.
· Для зміни режиму, розрядності, імені, типу та інших реквізитів порту треба клацнути на ньому правою клавішею мишки, вибрати у контекстному меню опцію Properties, ввести корективи у відповідні поля вікна діалогу, показаного на рис. 17, і натиснути кнопку ОК. Зокрема вхідний порт, сигнал якого задає відлік дискретного часу, у якому функціонує автомат, повинен мати відмітку у полі Clock.
· Крім того ім'я потру, як і будь-яку іншу текстову інформацію, можна коригувати безпосередньо на графі. Для цього її треба спочатку виділити, клацнувши мишкою (у результаті навколо неї з'явиться червона рамка). Потім по ній треба клацнути мишкою вдруге. В результаті відкриється вікно редагування (чорна об'ємна рамка з курсором). Для завершення редагування, слід клацнути мишкою за межами рамки.
Розміщення та
редагування глобальних сигналів виконується аналогічно розміщенню та редагуванню
портів, але з використанням кнопки .
Серед параметрів сигналів, що задаються у вікні діалогу опції Properties контекстного меню, так само як і серед параметрів усіх портів крім вхідних, є інформація про спосіб формування сигналу: Registered чи Combinatorial. Перший означає, що даний сигнал формується на виході регістру, отже моменти зміни його значень прив'язані до міток дискретного часу в якому функціонує автомат. Другий варіант означає формування сигналу на виході комбінаційної схеми, отже його значення можуть змінюватись внаслідок зміни вхідних сигналів у будь-який момент часу.
Вершинам графа відповідають стани автомата.
·
Щоб розмістити
вершину в на робочій області вікна Редактора автомата треба натиснути на
панелі інструментів кнопку State (при цьому курсор набуває форми круга) i
клацнути мишкою в тому місці робочої області вікна, де потрібно розташувати
вершину.
· Для зміни розмірів та форми вершини потрібно клацнути на ній мишкою. В результаті навколо вершини з'являться маркери, переміщуючи які, можна надати вершині бажаної форми та розмірів.
· Колір вершини можна обрати на закладці Graphics з опції Properties контекстного меню, що викликається натисканням правої клавіші мишки на зображенні вершини.
· Створюваним вершинам автоматично надаються імена S1, S2, ... Для зміни імені можна скористатися вищезгаданою опцією Properties контекстного меню (закладка General). Крім того ім'я можна коригувати так, як коригується будь-яка текстова інформація на графі: спочатку відмітити її, а потім, вдруге клацнувши на ній мишкою, відкрити вікно редагування.
·
З кожним станом автомата можуть бути пов'язані його дії по наданню
значень сигналам і змінним. Ці дії можуть виконуватися при входженні автомата у
цей стан (Entry), його
перебуванні в даному стані (State) і виході з
нього (Exit). На графі
дії, що виконуються при входженні, перебуванні і виході зі стану,
відображаються у прямокутниках, сполучених з точками, розташованими відповідно
у верхній, правій та нижній частині вершини (рис. 18). Для вводу і
редагування цих дій можна скористатися закладкою Actions з опції Properties у
контекстному меню вершини (рис. 19). Крім того дії можуть редагуватися як
текстова інформація безпосередньо на графі.
· Для зміни положення вершини у вікні редактора треба навести курсор на вершину і, утримуючи ліву кнопку мишки, перетягнути вершину на нове місце розташування.
· Для вилучення вершини треба її виділити, клацнувши мишкою, і натиснути клавішу Delete
Ребрам, що сполучають вершини графа, відповідають переходи автомата від одного стану до іншого.
Для побудови
ребра натисніть на панелі інструментів кнопку Transition .
Коли курсор набуде форми хрестика, клацніть мишкою на вершині, з якої виходить
лінія ребра, потім (при бажанні) на
одній чи декількох точках перегину цієї лінії, і нарешті – на вершині, в яку це
ребро входить.
Щоб скоригувати форму ребра його треба виділити, клацнувши мишкою, а потім перетягти на нове місце точки перегину лінії чи маркери навколо них.
Вже після побудови ребра, вершину, з
якої виходить чи у яку входить це ребро, можна замінити іншою. Для цього
потрібно виділити ребро і перетягти маркер точки входу чи точки виходу ребра
від однієї вершини до іншої. Можна також тимчасово залишити дане ребро неприєднаним до жодної з вершин. Таке ребро матиме вигляд
показаний на рис. 20. Після приєднання ребра до вершини хрестик на його кінці
зникне.
Для вилучення ребра його треба виділити і натиснути кнопку Delete.
Крім переходів
між вершинами, на графі автомата також повинен бути показаний перехід автомата
у початковий стан, що виконується при його ініціалізації. Для цього застосовується
позначення ,
що відіграє ту саму роль, що і вершина "початок" на схемі
алгоритму. У контекстному меню цього
позначення можна вибрати синхронний чи асинхронний характер переходу автомата у
початковий стан.
Як відомо, автомат виконує той чи
інший перехід у залежності від значень вхідних сигналів. Отже, якщо з вершини
виходить більше ніж одне ребро, то кожному з них повинна бути поставлена у
відповідність умова, при виконанні якої відбуватиметься перехід, що описується
саме даним ребром. Умови, що описують переходи з однієї вершини автомата,
повинні бути взаємовиключними, а одну з них можна позначити @ELSE.
Остання вважається виконаною тоді, коли не виконуються всі інші умови переходу
із даної вершини.
Для введення
умови переходу треба натиснути на панелі інструментів кнопку Condition (курсор при цьому змінить свою форму) і відмітити
ним потрібне ребро. В результаті відкриється вікно редагування (рис. 21), у яке
слід ввести умову переходу, дотримуючись правил синтаксису мови VHDL, і
натиснути клавішу Enter
або клацнути мишкою за межами вікна.
Умова переходу відображається на графі підкресленою. Цим її вигляд відрізняється від вигляду вихідних сигналів, що відображаються у рамках.
Щоб змінити розташування умови на графі, її треба виділити, клацнувши мишкою (при цьому з‘являється проблискова лінія, що показує до якого саме ребра відноситься ця умова), а потім перетягти мишкою на бажане місце.
Якщо треба відредагувати сам зміст умови переходу, то виділивши її, треба вдруге клацнути по ній мишкою. В результаті відкриється вікно для редагування умови переходу. Іншим способом редагування умови переходу є використання закладки HDL опції Properties у контекстному меню ребра.
Щоб вилучити умову переходу, треба виділити її і натиснути клавішу Delete.
Дії автомата по наданню значень сигналам і змінним можуть бути пов'язані не лише з входом, перебуванням чи виходом автомата із певного стану, як це розглядалось у розділі 1.4.2, а й з його переходом із одного стану в інший.
Для введення
дій переходу треба натиснути на панелі інструментів кнопку Transition Action (курсор при цьому змінить свою форму) і
відмітити ним потрібне ребро переходу на графі. Порядок введення і
редагування дій переходів аналогічний описаному вище порядку введення і
редагування умов переходів.
На основі файла графа автомата *.asf, створеного у Редакторі автоматів, може бути згенерований файл, *.vhd, що описує даний автомат мовою VHDL.
Перш ніж приступати до генерації VHDL-файла, слід записати на диск останні зміни, внесені у файл графа автомата, вибравши у меню File опцію Save або одноіменну кнопку на панелі інструментів.
Для генерації
VHDL-файла треба натиснути кнопку .
Повідомлення про результати генерації та виявлені помилки виводиться у вікні Console. Якщо
генерація була успішною, переглянути і при потребі скоригувати створений файл
можна, натиснувши кнопку
.
Редактор блок-схем дозволяє описувати проект
як схему з'єднання елементів[2]
(рис. 22). Елементи, у свою чергу, можуть описуватися або безпосередньо VHDL-кодом, або графом автомата, або блок-схемою нижчого ієрархічного рівня. У
кінцевому результаті увесь опис транслюється у VHDL-код.
Файли, створені у Редакторі
блок-схем, мають імена з розширенням *.bde. Подібно до інших графічних редакторів
схемотехнічного призначення, Редактор блок-схем дозволяє розміщувати, обертати
й упорядковувати, символи, проводи, шини, тощо. Інструментальна панель з
основними командними кнопками розташована у верхній частині вікна редактора, і
може викликатися також з контекстного меню. Далі ми наведемо короткий опис
призначення кнопок, а потім розглянемо їх застосування для побудови схем.
переключає редактор в
режим редагування з інших режимів;
застосовується для розміщення на схемі
елементів, архітектура яких вже описана у відкомпільованих файлах проекту;
створює і розміщує на
схемі порожній елемент, архітектура якого буде описана пізніше;
Рис. 22. Вікно редактора блок-схем
застосовуються відповідно для креслення проводів, шин та надання їм імен (ці кнопки
дозволяють встановлювати зв'язки між компонентами);
дозволяють створити порти, тобто точки, якими
завершуються провідники вводу, виводу, двонаправлені і буферні відповідно;
виконують ту саму функцію для шин;
позначають на схемі провідники з напругами живлення Vcc та землі;
застосовуються для оголошення глобальних сигналів і шин;
дозволяють
розмістити на схемі додаткові елементи типу коментарів у вигляді тексту чи
малюнків;
використовуються для вводу фрагментів коду на VHDL.
Якщо файл створюється за допомогою Майстра нового проекту (див. розділи 1.7, 0,), то імена і типи портів вводяться у вікні діалогу, показаному на рис. 10, ще до початку роботи з редактором блок-схем. В такому випадку, після відкриття вікна редактора, зображення портів уже будуть присутні у файлі.
Якщо ж ви
створили пустий файл, то зображення портів провідників і шин можна нанести за
допомогою кнопок .
Цими ж кнопками можна скористатися для розміщення на блок-схемі нових портів.
Зображення портів можна розмістити також під час креслення ліній зв'язку,
як це описано у розділі 1.5.3.
Для корекції імен, розрядності та режимів існуючих портів треба клацнути правою клавішею мишки на позначенні порту та вибрати у контекстному меню опцію Properties. Крім того ім‘я та розрядність порту можна редагувати, двічі клацнувши мишкою на зображенні імені. Завершивши редагування, слід натиснути клавішу Enter.
Розробка проектів у Active-HDL
може виконуватись як знизу вгору, так і згори вниз.
При проектуванні знизу вгору, для нанесення на схему графічного
позначення елементу, архітектура якого вже описана і відкомпільована, треба:
¨ клацнути мишкою на кнопці ,
що відкриває вікно Symbols Toolbox,
¨ вибрати потрібний елемент у розташованому
там списку відкомпільованих файлів проекту,
¨ методом drag & drop перетягти графічне зображення обраного елемента із вікна Symbols Toolbox у вікно редактора блок-схем.
При проектуванні згори вниз, щоб нанести на схему елемент, архітектура якого буде описана пізніше[3], треба:
¨ натиснути кнопку (після
цього курсор змінить свою форму на
);
¨ намалювати прямокутник за розмірами
майбутнього елемента;
¨ натиснути кнопку , щоб повернутися до звичайного режиму редагування (курсор
набуте своєї попередньої форми);
¨ клацнути правою клавішею мишки у
прямокутнику і вибрати із контекстного меню опцію Properties;
¨ у полях Fub name
та Interface neme вказати відповідно функціональне та позиційне
позначення елемента на схемі, замінивши позначення автоматично надані
елементові при його створенні;
¨ користуючись кнопками ,
намалювати виводи елемента – прості провідники та шини;
¨ повернутися до звичайного режиму
редагування, натиснувши кнопку ;
¨ клацнути правою клавішею мишки на
зображенні елемента вибрати в контекстному меню команду Edit;
¨ для кожного з виводів елемента,
користуючись опцією Properties із контекстного меню, замінити режими та імена виводів, а також розрядність шин, що були їм
автоматично надані при створенні, на справжні режими, імена та розрядність.
Для того, щоб
виконати опис архітектури створеного у такий спосіб позначення елемента, треба
клацнути правою клавішею мишки у середині цього позначення і вибрати в
контекстному меню опцію Push.
Після цього у вікні, подібному до показаного на рис. 11, треба вибрати
тип опису: блок-схема, граф автомата, програма мовою VHDL чи програма мовою Verilog. Натиснувши кнопку ОК, ви перейдете до створення цього опису у
відповідному редакторі. При цьому у створюваному файлі вже будуть присутні
порти, імена й режими яких відповідають зовнішнім виводам створеного вами
елемента Fub.
Після створення файла опису архітектури елемента команда Push забезпечуватиме безпосередній перехід до
редагування цього файла, пропускаючи вікно, показане на рис. 11.
Щоб
підготовити Редактор блок-схем до креслення ліній зв‘язку, треба натиснути
кнопку .
При цьому відповідним чином зміниться форма курсору.
Для проведення лінії зв‘язку між будь-якими двома точками на схемі, треба натиснути клавішу мишки у початковій і відпустити у кінцевій точці лінії. Звичайно редактор сам обирає раціональну траєкторію проведення лінії так, щоб вона обминала елементи та написи на схемах. Проте, якщо ви бажаєте самі задати цю траєкторію, то положення точок її перегину можна фіксувати клавішею "пробіл" під час креслення лінії.
Якщо лінія завершується портом, то для його розміщення на схемі можна натискати клавішу Tab доти, доки зображення режиму порту (вхід, вихід чи двонаправлений порт) не набуде бажаного вигляду.
Лінії зв‘язку,
як правило, проводяться, прив‘язуючись до точок координатної сітки. Для проведення
ліній поза сіткою треба натиснути клавішу Alt.
Так само, але
з використанням кнопки ,
будуються лінії групового зв‘язку (шини). Лінії зв'язку можна
проводити також і в звичайному режимі
редагування (з курсором
). Для цього достатньо натиснути клавішу мишки
на одному з контактів і відпустити її на іншому. Крім того, цей режим дозволяє
методом drag & drop редагувати схему, зокрема, переміщувати
схемні елементи, відрізки і точки згинання ліній зв‘язку, копіювати або вилучати елементи та
лінії.
Лінії зв'язку утворюють на схемі мережі з'єднань. Кожну мережу можна
розуміти як окремий провідник, що з'єднує між собою дві чи більше точок на
схемі. Іншими словами, якщо між двома точками існує контакт, то вони належать
до однієї мережі, якщо ні – то до різних.
При створенні мереж з'єднань, Active-HDL автоматично надає їм імена за замовчуванням: NET1,
NET2 і т.д.
Проте ці імена на схемі не відображаються і такі мережі називають
неіменованими.
Мережі можна надати довільне ім'я та розмістити його в одному чи
декількох місцях схеми, користуючись кнопкою або опцією
Property у контекстному меню лінії зв'язку. Таку мережу називають іменованою.
Іменованими є також мережі підключені до портів. Їм автоматично надаються імена
цих портів.
Ім'я мережі може бути скоригованим безпосередньо на схемі чи у вікні
діалогу Property. Можна також взагалі вилучити ім'я, виділивши його і натиснувши клавішу Delete. Тоді мережа знову стане неіменованою.
У будь-якому випадку одна мережа від іншої відрізняється іменем. Тому
для з'єднання точок на схемі не обов'язково сполучати їх лінією зв'язку. Достатньо
показати що вони підключені до однієї мережі, надавши однакових імен лініям
зв'язку, що підведені до цих точок. Такі точки називають з'єднаними за іменем.
Це ж правило застосовується і для імен глобальних сигналів та шин глобальних
сигналів
.
Усі порти і непідключені виводи елементів,
які матимуть імена, що співпадають з іменами глобальних сигналів вважатимуться
з‘єднаними між собою.
Якщо скомпілювати блок-схему у програму на VHDL, то мережам з'єднань схеми відповідатимуть у програмі
сигнали з такими самими іменами. При цьому одинарним лініям відповідатимуть
сигнали скалярного типу, а шинам – сигнали типу одномірних масивів. Якщо
підключити мережу до контакту чи
,
то в програмі їх сигналам буде надано значень констант '0' чи '1' відповідно.
Як випливає з розглянутого вище, існує пряма відповідність між
графічними зображеннями на блок-схемі і їх описом у програмі на VHDL. Проте
далеко не всі елементи мови VHDL мають відповідні графічні позначення на
схемах. Через це у редакторі блок-схем передбачена можливість включення до
графічного файла блок-схеми певних фрагментів описів, виконаних мовою VHDL. Під час компіляції графічного файла блок
схеми в програму на VHDL, ці
описи будуть перенесені у відповідні місця програми.
Для включення операторів VHDL до графічного файла використовуються такі
кнопки панелі інструментів або опції меню Diagram/VHDL Statements:
- дозволяє додати оператори у заголовок
проекту;
- дозволяє додати оператори до опису
сутності;
- дозволяє додати оператори у декларацію
архітектури;
- дозволяє додати оператори у тіло
архітектури;
- дозволяє ввести узагальнення (generics);
На основі схемного файла *.bde, створеного у Редакторі блок-схем, може бути згенерований файл, *.vhd, що описує дану схему мовою VHDL.
Перш ніж приступати до генерації VHDL-файла, слід записати на диск останні зміни, внесені у схемний файл, вибравши в меню File опцію Save або одноіменну кнопку на панелі інструментів.
Для генерації
VHDL-файла треба натиснути кнопку .
Повідомлення про результати генерації та виявлені помилки виводиться у вікні Console. Якщо
генерація була успішною, переглянути і, при потребі, скоригувати створений файл
можна натиснувши кнопку
.
Програма моделювання проектів, що входить до складу Active-HDL, не може
моделювати безпосередньо вихідний текст, написаний мовою VHDL. Тому
проект, який ви бажаєте моделювати, потрібно спочатку відкомпілювати в бібліотеку проекту. Тільки дані, збережені в бібліотеці, можуть читатися
пограмою моделювання.
Перед компіляцією треба записати на диск останні зміни, внесені до файлів проекту, та вибрати у вікні Design Browser сутність верхнього рівня ієрархії (Top-level Entity). Щоб виконати компіляцію проекту, треба вибрати в контекстному меню опцію Compile all або натиснути одноіменну кнопку на панелі інструментів.
Повідомлення
про результати компіляції та виявлені помилки виводиться у вікні Console, відповідні
позначення про результат компіляції кожного файла виводиться біля його іконки у вікні Design Browser. Крім того, у вхідних
файлах проекту відповідним чином виділяються оператори VHDL та елементи графів і блок-схем що містять помилки.
Після виправлення помилок та успішної компіляції всього проекту можна
переходити до його моделювання.
Моделювання є дуже важливим етапом розробки проекту. Це етап аналогічний тестуванню програм. Його мета – вивчити функціонування проекту, виявити та виправити можливі помилки ще до того, як проект буде реалізовано у вигляді мікросхеми. Для цього Active-HDL має у своєму складі різноманітні засоби, що дозволяють програмно імітувати подачу сигналів (стимулів) на входи проекту і відтворювати та аналізувати сигнали на його виходах. Такими засобами є:
· ручне стимулювання проектів;
· VHDL-файли випробовувального стенда, створені вручну, або з використанням Майстра випробовувального стенда чи зовнішніх редакторів;
· команди моделювання, що вводяться у вікно консолі;
· файли макрокоманд моделювання;
· файли векторів перевірки, імпортовані з Active-CAD;
· моделювання, засноване на формах сигналу, відредагованих користувачем.
Всі ці засоби можуть використовуватись в одному проекті паралельно. Користувач обирає метод, що найкраще підходить для потреб проекту й має найкращий баланс між часом, необхідним для проведення моделювання, і складністю перевірки проекту.
Редактор
часових діаграм є основним засобом для створення стимулюючих сигналів і
перегляду результатів моделювання. Файли часових діаграм мають імена з розширенням
*.awf і зберігаються у папці Waveforms. Щоб відкрити
існуючий файл часової діаграми можна клацнути мишкою на закладці файла у вікні
редакторів, або двічі клацнути на імені файла у вікні Design Browser, або вибрати у контекстному меню команду open. Для створення нового файла часової діаграми можна скористатися кнопкою
(New Waveform).
Вигляд вікна Редактора часових діаграм показано на рис. 24 і 25. В його лівій частині у колонках Name, Value, Stimulator відображаються відповідно імена сигналів, їх значення у момент, що відповідає положенню курсора, а також стимулятори, які застосовуються для формування вхідних сигналів. Натискаючи на кнопки з заголовками цих трьох колонок, можна розташувати сигнали за алфавітним порядком їх імен чи стимуляторів, у порядку зростання значень або у порядку протилежному вказаним. Якщо сигнали не впорядковані за жодною з цих ознак, то їх розташування можна обирати довільно, перетягуючи сигнали за допомогою мишки.
Масштаб
зображення регулюється кнопками ,
які дозволяють відповідно: збільшити масштаб вдвічі; зменшити масштаб вдвічі;
вивести усю діаграму на один екран; задати у вікні діалогу часові межі зображення на екрані.
Кнопка включає режим Zoom, у якому можна, виділивши мишкою частину зображення, показати його на
весь екран. Щоб збільшити масштаб вдвічі, тут достатньо просто клацнувши мишкою по
діаграмі, а для зменшення – клацнути мишкою при натиснутій клавіші Ctrl. Крім
того, в будь-якому режимі зручно збільшувати і зменшувати масштаб за допомогою
клавіш "+" і "–" на додатковій клавіатурі.
Векторні сигнали справа від імені мають кнопку, що дозволяє переключатись між згорнутим (єдина діаграма для всього сигналу) і розгорнутим (окрема діаграма для кожного біту) способом їх відображення. Опція Properties з контекстного меню сигналу дозволяє також обрати його колір, систему числення, в якій вказується значення векторного сигналу, тощо.
Щоб розмістити сигнал на часовій діаграмі, треба відкрити закладку Structure у вікні Design Browser, виділити в структурі проекту елемент, сигнали якого ви хотіли б відобразити на часовій діаграмі та методом drag-&-drop перетягти потрібні сигнали з нижньої частини закладки Structure у ліву частину вікна Редактора часових діаграм.
Інший спосіб
розміщення сигналу на часовій діаграмі – це використання опції Add Signals з контекстного
меню лівої частини вікна Редактора часових діаграм. Користуючись ним, треба
виділити потрібні сигнали і натиснути кнопку Add.
Сигнали можна
також додавати за допомогою команди Wave <ім‘я_сигналу>,
що вводиться з клавіатури у вікно Console.
Щоб вилучити сигнал зі списку сигналів часової діаграми треба, встановивши на ньому курсор, натиснути клавішу Delete чи одноіменну опцію у контекстному меню.
Будь-якому сигналові, присутньому на часовій діаграмі, можна надати
бажаних значень, скориставшись вбудованими у програму стимуляторами. Для цього
треба встановити курсор на потрібному сигналі і вибрати опцію Stimulators у контекстному меню або одноіменну кнопку на панелі інструментів.
Вікно, що відкривається при цьому (рис. 23), дає можливість вибору
описаних нижче стимуляторів.
- дозволяє вибрати значення, що буде надане виділеному сигналу чи групі
сигналів, об‘єднаних у шину;
- дозволяє задати часову діаграму
за допомогою формули. Наприклад формула 0 0,
1 12 означає,
що сигнал має значення '0'
у момент часу 0
і змінюється на '1'
після 12 пікосекунд;
- дозволяє призначити
сигналові гарячу клавішу, натискання якої
призводитиме до зміни значення сигналу. За замовчуванням сигнал
переключатиметься між 0 і 1, проте у цей список можна додати і інші допустимі
для даного типу сигналу значення. При натисканні гарячої клавіші сигнал
набуватиме наступного значення, включеного у список;
-
дозволяє задати періодичний
сигнал з визначеними параметрами (частотою, періодом тощо), користуючись
зручним графічним редактором, показаним на рис. 23
- дозволяє моделювати сигнали на виходах лічильника, з заданими
значеннями періоду, напрямку лічби і кодування даних у лічильнику: двійковий
код, код Грея та ін.;
-
дозволяє використати стимул користувача,
створений у Редакторі часових діаграм, як це описано в розділі 2.1.5;
-
- дозволяє вибрати наперед визначений стимулюючий сигнал з заданого переліку та
поповнити цей перелік власними сигналами, що часто використовуються.
У практиці трапляються випадки, коли значення сигналу визначається не лише самим
стимулятором, а й іншими драйверами. Тоді виникає питання: як стимулятор повинен
взаємодіяти з цими драйверами і як розв'язувати протиріччя, якщо стимулятор намагається
встановити одне значення сигналу, а драйвери – інше? Відповідь на це питання
визначається типом стимулятора, що вибирається у полі Strength, розташованому у правому нижньому кутку
вікна вибору стимулу (рис. 23):
Override – стимулятор примусово встановлює значення сигналу, що залишається незмінним до наступної команди FORCE або UNFORCE;
Deposit – стимулятор встановлює
значення сигналу, що залишається незмінним тільки до наступної транзакції
драйвера або команд FORCE, UNFORCE;
Drive – приєднує віртуальний драйвер
до сигналу і цей драйвер форсує його значення до наступної команди FORCE або UNFORCE. Цей тип стимулятора використовується для миттєвих значень
сигналів типу std_logic.
Переміщення по часовій діаграмі може виконуватись за допомогою лінійок прокрутки, а також кнопок:
·
,
що переміщують курсор відповідно до наступної чи попередньої зміни значення
виділеного сигналу;
·
,
що дозволяє знайти потрібне значення виділеного сигналу;
·
,
що дозволяє перейти до моменту часу, що задається у вікні діалогу;
·
,
що дозволяють перейти відповідно до наступної чи попередньої закладки, що
відображаються на часовій осі блакитними трикутниками, які можна встановити або зняти за допомогою кнопки
або просто, клацнувши мишкою на часовій осі.
Кнопка
відміняє усі закладки.
Крім того, за допомогою кнопки ,
розташованої на горизонтальній лінійці прокрутки, можна отримати доступ до
описаних вище переходів, а також кнопок:
·
,
яка забезпечує перехід до бажаного коментаря, що був введений за допомогою кнопки
;
·
,
яка забезпечує перехід до моменту, коли виявлена різниця між сигналами поточної
часової діаграми та діаграми, записаної у іншому файлі.
Для порівняння діаграм слід
натиснути кнопку і ввести ім'я файла іншої діаграми. Приклад
відображення результату порівняння діаграм показаний на рис. 24.
Якщо сигнал даної діаграми не має відмінностей від одномінного сигналу на іншій діаграмі, то у вікні результату він відображається один раз. На рис. 24 таким є сигнал RESET.
Якщо ж ці сигнали відрізняються, то вони обидва відображаються на діаграмі поруч, причому, сигнал з іншого файла виділяється червоним кольором, а до його імені додається префікс COMP_. Інтервали часу, у які значення сигналів не співпадають, відмічаються вгорі жирними блакитними відрізками.
Щоб вилучити з діаграми результати порівняння можна описаним вище способом порівняти її саму з собою.
Активний курсор відображається на діаграмі вертикальним червоним відрізком. Його часова координата відображається в прямокутнику біля верхнього краю відрізка (на рис. 24 це 40 ns). Значення сигналів, що відповідають поточному положенню активного курсору, відображаються на діаграмі у колонці Value. Якщо курсор проходить точно через фронт сигналу, то у таблиці вказується його значення справа від курсору.
Щоб розмістити на діаграмі ще один курсор, треба клацнути у потрібному місці правою клавішею мишки і вибрати у контекстному меню опцію Add Cursor. Якщо на діаграмі є декілька курсорів, то їх координати відображаються у прямокутниках на нижніх кінцях відрізків (рис. 25). Крім того стрілками відображаються проміжки часу від даного курсору до його найближчих сусідів. Активний курсор відображається червоним кольором, решта – синім. Щоб зробити курсор активним по ньому треба клацнути мишкою.
Для переміщення активного курсору можна скористатися будь-яким способом, описаним у попередньому розділі, або просто клацнути мишкою по діаграмі.
Для вилучення
курсору треба клацнути правою клавішею мишки по прямокутнику з його координатою,
а потім натиснути у контекстному меню опцію Remove.
Ще одним засобом вимірювання
часових інтервалів є застосування режиму вимірювань, що включається кнопкою .
У цьому режимі можна вимірювати часові інтервали тільки між фронтами імпульсів.
Курсор мишки, що підводиться до фронту, набуває зеленого кольору. У цей момент
треба натиснути ліву клавішу мишки і відпустити її біля іншого фронту. У такий
спосіб на рис. 25 виміряно, наприклад, часовий інтервал 40 ns між встановленням у
сигналах RESET і Output значень 0 та 040.
Щоб видалити
стрілку з виміром, треба у звичайному режимі, що включається кнопкою
,
виділити цю стрілку і натиснути клавішу Delete.
Часові діаграми можна редагувати та зберігати у файлах для подальшого
використання. Щоб приступити до редагування діаграми, слід припинити
моделювання командою End Simulation з меню Simulation та натиснути кнопку , що переводить редактор у режим
редагування. При цьому стає доступними виконання описаних нижче операцій.
Зміна моменту переключення (фронту) сигналу виконується аналогічно
регулюванню ширини колонок у таблицях Word чи Excel. Для
цього треба підвести курсор до зображення фронту сигналу (вертикального
відрізку на часовій діаграмі) так, щоб
курсор набув вигляду двонаправленої стрілки, потім натиснути ліву клавішу мишки
і відпустити її там, де має проходити фронт.
Аналогічним чином, підвівши курсор до горизонтального відрізку
діаграми, можна підняти його вгору, або опустити вниз, замінивши тим самим
значення сигналу 0 на 1 чи навпаки.
Для створення нового імпульсу, треба натиснути клавішу Shift (при цьому курсор набуде форми олівця) та
клацнути мишкою по часовій діаграмі. В результаті на цьому місці буде створено
імпульс невеликої ширини. Потім описаним вище способом можна відредагувати
ширину та положення імпульсу на часовій осі.
Щоб виділити фрагмент часової діаграми, треба натиснути клавішу Ctrl (у результаті курсор набуде форми хрестика)
натиснути ліву клавішу мишки на початку і відпустити її у кінці фрагмента, що
виділяється. Фрагмент може включати як одну, так і декілька сусідніх часових
діаграм.
Виділений фрагмент можна:
·
вилучити натисканням клавіші Delete (при цьому за межами виділеного фрагмента значення сигналів не зміняться,
а у його межах сигнали зберігатимуть ті значення, які вони мали на початку
виділеного фрагмента);
·
встановити у потрібне значення (для простих сигналів достатньо просто натиснути відповідну клавішу: 0, 1, U, X тощо, а для векторних сигналів краще
скористатися опцією Fill... у
контекстному меню);
·
змінити масштаб часу, вибравши у контекстному меню команду Stretch... і вказавши у вікні Scale процент "розтягування" даного
фрагмента у часі (дані поза межами фрагмента при цьому не змінюються);
·
скопіювати у буфер обміну натисканням кнопки або комбінації клавіш Ctrl+C;
·
вирізати натисканням кнопки або комбінації клавіш Ctrl+X
(у результаті
фрагмент буде скопійовано у буфер обміну, а з часової діаграми - вилучено);
Запис результатів редагування часової діаграми у файл виконується за
допомогою команд Save та Save
as... з меню File.
Крім цього, дані з часової діаграми можуть бути експортовані у файли
інших форматів за допомогою команди Export Waveforms... з меню Waveform. У вікні діалогу, що після цього відкривається, треба вказати ім'я файла,
а також вибрати його тип та групу сигналів, що експортуватимуться.
Тип файла може бути або VHDL Process (*.VHS), що містить опис сигналів мовою VHDL у вигляді процесу, що їх формує, або Waves
vector (*.VEC), що
містить опис сигналів у вигляді таблиці, де кожна зміна значень сигналів
представлена одним рядком, у якому вказані значення сигналів і час, що минув
від попередньої зміни та від початку моделювання.
При виборі групи сигналів, що експортуватиметься, існують такі
альтернативи: All input
ports – усі вхідні порти, All
ports – усі порти, All signals – усі сигнали та Selected signals – вибрані сигнали.
Крім Редактора часових діаграм, Active-HDL має інші засоби відображення результатів моделювання проекту.
Вікно List, як
і Редактор часових діаграм, містить інформацію про зміну у часі значень сигналів
проекту, (рис. 26). Але, на відміну від Редактора часових діаграм, у вікні List ця інформація представлена у вигляді таблиці і може тільки
переглядатися, внесення до неї змін неможливе.
Вікно List відкривається
за допомогою кнопки New List
. Сигнали,
які треба відобразити в цьому вікні, обирають так само, як це описано у
розділі 2.1.1 для Редактора часових діаграм.
Дані у вікні List можуть
видаватися в повному і скороченому варіанті, переключення між якими виконується
за допомогою кнопки .
Повний варіант
дозволяє простежити послідовність зміни значень сигналів, кожна з яких
відображається у таблиці окремим рядком навіть тоді, коли часовий інтервал між
ними дорівнює Delta (так при моделюванні
позначають нескінченно малий відрізок часу між подіями). Отже, у таблиці може
бути декілька рядків, що мають однакові значення у полі Time і відрізняються
лише значеннями у полі Delta (рис.
26). До речі, у вікні Simulation status, час, що минув від
початку моделювання, також відображається у форматі Time + Delta: .
Скорочений
варіант відображення інформації у вікні List передбачає
для кожного моменту часу виведення лише одного рядка з остаточними значеннями
сигналів, що встановилось у даний момент. Іншими словами, у скороченому
варіанті кожний момент часу представлений у таблиці лише рядком з максимальним
значенням Delta.
Дані вікна List можна зберегти у текстовому файлі з розширенням *.lst , виконавши команду Save as ... з меню File.
Вікно Watch (рис. 27) має вигляд таблиці в якій виводяться:
імена змінних і сигналів (Name), їх тип (Type), поточні значення (Value), значення, які вони мали до цього (Last Value) і час, коли саме поточні значення сигналу були встановлені (Last Event Time). Якщо час зміни співпадає з поточним часом (тобто значення змінилося
щойно), то ці значення виділяються у
таблиці червоним кольором.
Вікно Watch відкривається за допомогою кнопки View Watch Window або опції Watch у меню View.
Потім треба відкрити закладку Structure у вікні Design Browser, виділити у структурі проекту елемент, сигнали якого ви хотіли б бачити
у вікні Watch та методом drag-&-drop перетягти потрібні сигнали з нижньої частини закладки Structure у
вікно Watch. Тобто
виконується та сама процедура, що і для Редактора часових діаграм та вікна List.
Вікно Process (рис. 28) відкривається
за допомогою опції Processes
у меню View і
відображає стан процесів під час моделювання. Отже
програма моделювання перед цим має бути активізованою. Якщо це не так, то її
слід попередньо активізувати командою Initialize
Simulation з меню Simulation.
У колонці Label
відображається мітка, якою у програмі помічено процес, або номер рядка для
процесів без мітки. Колонка Hierarchy path вказує на місце процесу в ієрархії проекту, а
колонка Status
містить інформацію про його стан. Як відомо, будь-який
процес може знаходитись або в стані очікування (Wait), або у активному
стані (Ready), тобто у
стані готовому для виконання в поточному циклі моделювання. Активні процеси
завжди відображаються у верхній частині вікна, а процеси у стані очікування
можуть взагалі не відображатись, якщо в контекстному меню даного вікна вибрати
опцію Show active.
Вікно потоку
даних дозволяє наочно, в графічному вигляді відображати зв'язок між сигналами і
процесами проекту, що моделюється. Воно викликається за допомогою опції Data
Flow в
меню View і має дві
форми відображення інформації.
Відображення
відносно процесу (рис. 30) – це малюнок, у якому даний процес зображено
прямокутником. Лінії, що підведені до нього зліва, відповідають вхідним сигналам
цього процесу, а лінії справа – його вихідним сигналам.
Відображення відносно сигналу
(рис. 31) має вигляд вертикального відрізка, яким позначається даний сигнал.
Лінії, що підведені до нього зліва, показують які процеси беруть участь у
формуванні даного сигналу, а лінії справа – які процеси використовують даний
сигнал як вхідний.
Клацнувши мишкою по назві процесу, переходять
до відображення відносно даного процесу, а клацнувши по назві сигналу, – до
відображення відносно даного сигналу.
В обох формах відображення поряд з іменами сигналів вказуються їх поточні значення.
Імена процесів
і сигналів подаються з префіксами, що вказують на їх місце у ієрархії модулів
проекту, наприклад: /CLK – сигнал CLK з кореневого
модуля проекту, UUT/CNT/line_27 – процес, що
описаний починаючи з 27-го рядка у модулі CNT, що входить до складу модуля UUT. У відображеннях відносно процесу, префікси сигналів
опускаються, якщо вони співпадають з префіксами даного процесу. Наприклад на
рис. 30
сигнали, що вказані без префіксів: CLK, RESET, Q, фактично є сигналами, що мають такий самий
префікс, як і процес, а саме UUT/CNT/.
Імена сигналів
є локальними іменами модуля. Через це той самий сигнал може по-різному позначатись
у різних модулях проекту. Це добре видно на відображеннях відносно процесу.
Наприклад
з рис. 30 випливає, що
сигнал Q у поточному
модулі UUT/CNT є те саме, що і сигнал Internal з модуля UUT.
Опція View Source з контекстного меню, що викликається при натисканні правої клавіші
мишки на імені сигналу чи процесу, дозволяє швидко переходити від вікна потоку
даних до опису цих сигналів та процесів у програмах. Подібні переходи до
програм і до відображень потоку даних можливі і з вікна перегляду проектів Design Browser.
Вікно потоку
даних запам'ятовує відображення, які ви переглядали. Це дає змогу користуючись
кнопками повертатись відповідно до попереднього
чи наступного відображення, подібно до перегляду web-сторінок у Internet.
Щоб виконати моделювання методом ручного стимулювання входів треба:
¨ проініціалізувати моделюючий пристрій Active-HDL за допомогою опції
Initialize Simulation із меню Simulation;
¨ відкрити вікно часової діаграми, та згідно з рекомендаціями, описаними у розділах 2.1.1 і 2.1.2 додати до нього сигнали, які ви бажаєте відобразити на діаграмі та призначити стимулятори вхідним сигналам;
¨ виконати один або декілька циклів моделювання проекту, користуючись
описаними нижче кнопками панелі інструментів чи відповідними опціями
меню Simulation. При цьому результати моделювання відображатимуться у вікні Редактора
часових діаграм.
¨ завершити моделювання, вибравши опцію End Simulation у меню Simulation.
Active-HDL дозволяє виконувати покрокове моделювання (трасування) проекту з зупинкою перед виконанням кожного оператора програми. Оператор, що підлягатиме виконанню при цьому виділяється у тексті програми жовтим кольором.
Якщо у програмі є звернення до підпрограм, то кнопка
·
Trace into – виконує моделювання, зупиняючись перед
виконанням кожного оператора як у головній програмі, так і у підпрограмах, що
нею викликаються;
·
Trace over –
виконує усю підпрограму за один крок;
·
Trace out – виконує за один крок стільки операторів,
скільки потрібно для завершення виконання поточної підпрограми.
Крім того Active-HDL дозволяє виконувати моделювання протягом заданого часу:
·
Run For. виконує моделювання протягом інтервалу часу, встановленого у розташованому
справа від неї вікні
;
·
Run until
дозволяє ввести момент часу, коли моделювання буде зупинено. Мається на увазі
час, що відраховується від самого початку процесу
моделювання і відображається у вікні
Simulation status, розташованому справа
від кнопок Trace;
·
Run забезпечує неперервний процес моделювання, що зупиняється лише тоді,
коли стимулюючі сигнали вичерпані, або коли досягнуто контрольної точки.
Контрольні
точки – це такі точки в програмі, де її виконання тимчасово зупиняється.
Вони вводяться і знімаються за допомогою клавіші F9 або опції Toggle
Breakpoint у меню Simulation і відображаються в тексті програми значком .
Зупинку в
контрольній точці можна зробити як безумовною, так і умовною. В останньому
випадку треба виконати команду Edit Breakpoint з меню Simulation і у панелі Signal
Breakpoint ввести значення сигналів, що
визначатимуть умови зупинки в даній контрольній точці.
Для поновлення виконання програми після зупинки у контрольній точці можна скористатися вказаними вище кнопками Trace чи Run.
Для зняття усіх встановлених у програмі контрольних точок можна скористатися опцією Clear All Breakpoints з меню Simulation.
Розглянуте вище ручне стимулювання є найбільш простим і швидким методом моделювання проектів. Воно може застосовуватись до будь-якого сигналу чи порту в ієрархії проекту. Це зручний засіб відлагодження процесів низького рівня. Проте його недоліками є те, що стимулятори не можуть застосовуватись у більш складних процедурах моделювання, наприклад таких, що включають читання файлів, тощо. Крім того стимулятори є частиною самого Active-HDL, а не розроблюваного проекту, тобто – в інші середовища розробки проектів вони не переносяться.
Вище вже відзначалось, що моделювання проектів – це процес аналогічний тестуванню програм. За цієї аналогії ручному стимулюванню відповідає таке тестування, де підготовку наборів вхідних даних для тестів та аналіз результатів їх виконання забезпечує сам програміст.
Відомо, що більш досконалою формою тестування є розробка спеціальних програмних модулів, які генерують вхідні дані для програм, що підлягають тестуванню, та аналізують результати, які ті виробляють. Ці програмні модулі є важливою складовою частиною проекту. Вони використовуються щоразу після внесення до проекту змін і дозволяють швидко і в повному обсязі випробовувати нові версії програм.
При розробці проектів на VHDL, роль вказаних службових модулів виконують
файли, що називаються Файлами випробувального
стенда. Зазначимо, що у стандарті мови VHDL є ряд функцій і мовних
конструкцій, розроблених спеціально для моделювання. Дані для моделювання можна
читати з текстового файла, створювати окремі процеси, що управляють вхідними
портами і т.п.
Типовий спосіб
побудови випробувального стенда Test bench (рис. 32) полягає в створенні додаткових
VHDL-файлів, які трактують проект, що моделюється, як компонент UUT (Unit
Under Test – Піддослідний пристрій) і включають
також програму Генератор стимулів (Stimulus Generator), що виробляє тестові вектори, а також
програму Верифікатор (Verifier), що аналізує результати моделювання.
Така методологія забезпечує найбільш повну перевірку проекту при мінімальній взаємодії з користувачем.
Розрізняють три конфігурації випробувальних стендів.
¨ У автономній конфігурації (off-line configuration) тестові вектори і еталони верифікатора записані у файлі, отже моделювання проекту зводиться до подачі на вхід UUT сигналів, що зчитуються з файла і порівняння вихідних сигналів UUT з даними у файлі.
¨ У неавтономній конфігурації (on-line configuration) замість еталонного файла застосовують еталонний піддослідний пристрій UUTе, на вхід якого подають ті самі тестові вектори, що і на вхід основного UUT. При цьому функція верифікатора зводиться до порівняння сигналів на виходах основного і еталонного піддослідних пристроїв.
¨ Якщо у двох попередніх конфігураціях послідовність тестових векторів, що подається на вхід UUT, відома наперед, то у адаптивній конфігурації наступні тестові вектори вибираються з урахуванням результатів попереднього тестування та стану самого піддослідного пристрою.
З огляду на
стандартну структуру випробувального стенда Test bench
(рис. 32), роботу по його створенню можна автоматизувати за допомогою Майстра
випробувального стенда Test Bench Wizard, що викликається командою Generate Test Bench з меню Tools або з контекстного меню іконки Entity/Architecture піддослідного
пристрою UUT, розташованої на панелі Files вікна Design Browser.
¨ У першому вікні Майстра можна уточнити імена сутності та архітектури піддослідного пристрою UUT, а також вибрати який саме тип випробувального стенда ви бажаєте побудувати: Single Process – одиночний процес, чи WAVES based – заснований на часовій діаграмі. Перший забезпечує тільки подачу тестових сигналів на вхід, другий, крім того, порівнює вихідні сигнали зі зразками, що зберігаються у файлі, та записує інформацію про виявлені невідповідності у log-файл.
¨ У другому вікні вказують звідки взяти тестові вектори для портів
піддослідного пристрою UUT. Якщо ви
не створюєте їх вручну, а запозичуєте з існуючих файлів, то треба
поставити прапорець у полі Test vectors from file і або безпосередньо ввести ім'я файла у поле Select a test vector file, або вибрати цей файл зі списку, скориставшись кнопкою Browse. Для WAVES based випробувальних
стендів ним може бути або файл часової діаграми, або векторний файл *.vec. Для стендів Singl e Process це повинен бути файл *.vhs, що містить опис сигналів на VHDL у вигляді процесу. Створення файлів *.vhs та *.vec описане в кінці розділу 2.1.5. Якщо файл тестових векторів вибраний коректно, то у
вікні Signals
found in file повинні бути присутніми усі
сигнали, що є у вікні UUT
entity ports.
¨ У третьому вікні Майстра вказують імена сутності та архітектури
випробувального стенда, а також ім'я файла та папки, де вони знаходитимуться.
¨
Останнє, четверте
вікно відображає повний список файлів, що будуть створені Майстром. Відмітивши
прапорець, що вказує на потребу генерації файла конфігурації, та натиснувши
кнопку Готово, ви сформуєте набір файлів випробувального стенда, що знаходитиметься у
окремій папці, доступ до якої відбувається через панель Files у вікні Design
Browser.
VHDL-файли випробувального стенда
позначаються іконкою . Крім них у папці є файли інших типів, зокрема
файл макрокоманд помічений іконкою
.
Усе, що треба зробити для того, щоб провести моделювання – це запустити даний
файл на виконання, клацнувши по ньому правою клавішею мишки і вибравши у
контекстному меню команду Execute. В результаті у вікно Console будуть виведені повідомлення про виконання записаних у цьому файлі
макрокоманд, які забезпечують компіляцію файлів як самого проекту, так і випробувального стенда; створення нової
часової діаграми; внесення до неї потрібних сигналів і виконання моделювання.
Після появи повідомлення про завершення
моделювання: Simulation has finished..., слід натиснути кнопку ОК і перейти до перегляду часової діаграми з результатами.
Випробувальні стенди Single Process просто відображають на часовій діаграмі сигнали піддослідного пристрою. Порівнювати їх з сигналами на інших діаграмах можна так, як це описано у розділі 2.1.3.
На часових
діаграмах WAVES based випробувальних стендів відображаються не тільки вихідні сигнали,
фактично сформовані піддослідним пристроєм UUT, а й еталонні вихідні
сигнали, запозичені з часових діаграм тестових векторів. На діаграмі до їх імен
додаються префікси ACTUAL_ та EXPECT_ відповідно, а до імен вхідних сигналів додається префікс STIM_.
Крім того, ці часові діаграми містять деякі
службові сигнали, зокрема сигнал ERR_STATUS, що дорівнює 1 там, де
фактичні значення вихідних сигналів UUT не співпадають з еталонними.
У текстовому
вигляді інформацію про невідповідність значень фактичних та еталонних сигналів
можна знайти у файлі < ім'я_UUT>_report.log, доступ до якого
можна одержати через папку Logs панелі Resources
у вікні Design browser.
Active-HDL дозволяє управляти моделюванням шляхом вводу макрокоманд у вікно Console. Макрокоманди можуть застосовуватись для надання значень сигналам, покрокового виконання моделювання, тощо. Наведемо приклади деяких макрокоманд:
Wave |
- створює порожній файл часової
діаграми, |
Wave RESET |
- розміщує сигнал RESET у файлі часових діаграм, |
Force RESET 1 |
- надає сигналові RESET значення 1, |
Force
LOAD 1 0 ns, 0 10 ns |
- установлює сигнал LOAD у 1 при 0 нс і в 0 при 10 нс |
Run 20 us |
- виконує моделювання протягом 20
мкс. |
Більш повний перелік команд, що можуть вводитись з консолі наведено у додатку.
Щоб зекономити час на введення з консолі великої кількості макрокоманд, їх можна записати у файл, а потім виконати його. До цього файла можуть бути включені не тільки макрокоманди моделювання, а й інші команди управління робочим середовищем Active-HDL, а також команди Script Basic, що включені в Active-HDL для цілей автоматизації.
Для створення
файла макрокоманд, треба вибрати у меню File опції New і Macro,
а щоб виконати його, потрібно або вибрати команду Execute у
контекстному меню цього файла, або вибрати у меню Tools
команду Execute
macro...
Більшість макрокоманд Active-HDL застосовуються з такими параметрами як
імена файлів, імена сигналів, тощо. У цьому додатку наведено лише список і
короткий опис самих команд. Більш детальний опис команд і параметрів, з якими
вони використовуються, можна знайти у меню Help,
опція Active-HDL
Help Topics,
панель Contents папка Active-HDL Macro Language.
abort |
Зупиняє виконання макро-файла, що був перерваний контрольною точкою. |
add |
Додає змінні, визначені командою набору. |
addhdlfile |
Додає файл до поточного проекту. |
architecture |
Змінює архітектуру проекту на вказану у команді. |
bd |
Видаляє визначені нижче контрольні точки. |
bp |
Дозволяє встановлювати і переглядати контрольні точки. Якщо параметри команди опущені, команда перерахує всі поточні контрольні точки набору. Інакше, команда встановлює контрольну точку у визначеному файлі й у визначеному рядку. |
cd |
Змінює поточний робочий каталог. |
change |
Змінює значення змінної. Імітатор може робити це тільки в контрольній точці або коли це пауза після кроку команд |
clear |
Видаляє визначену мітку табуляції у вікні Console або файлі протоколу Console.log. |
clearfile |
Очищає вміст специфікованого файла. |
clearlibrary |
Очищає вміст специфікованої бібліотеки. |
compactlibrary |
Дефрагментує і видаляє застарілі дані з визначеної бібліотеки проектів. |
configuration |
Встановлює визначену конфігурацію як верхній рівень модуля проекту. |
continue |
Перезапускає моделювання після виконання кроку або переходу через команду, або контрольну точку. Наступна команда може вводитись вручну. |
copyfile |
Створює копію вказаного файла. |
createdesign |
Створює проект із визначеним ім'ям файла, конфігурацією і шляхом. |
debug |
Виконує відлагодження із визначеною командою і параметром для цієї програми. |
dec |
Зменшує значення змінної |
des,
describe |
Відображає інформацію щодо сигналів, змінних і констант. |
disablebp |
Виключає всі контрольні точки. Для їх відновлення використовується команду enablebp. |
do |
Виконує команди, що містяться в зв'язаному макро-файлі. |
drivers |
Виводить у вікні Console поточні і заплановані майбутні значення для всіх драйверів специфікованого сигналу VHDL. Якщо цей сигнал – типу "запис" або масив, то відображатимуться тільки драйвери для першого піделементу. |
echo |
Відображає вказане повідомлення у вікні Console. |
echofile |
Посилає вказане повідомлення у вказаний текстовий файл. |
enablebp |
Розблоковує контрольні точки, що були заблоковані командою disablebp. |
endcomp |
Очікує кінця компіляції. |
endsim |
Чекає кінця моделювання. Використовується коли треба затримати виконання макрокоманди до кінця поточного моделювання. |
entity |
Встановлює вказану сутність як верхній рівень модуля проекту. Якщо інше не задане командою architecture, використовується та, що компілювалась останньою. |
environment |
Забезпечує зміну і відображення поточного середовища області сигналу. |
examine |
Аналізує специфікований елемент даних і відображає його поточне значення у вікні Console. Ця операція може мати місце в будь-який час, але тільки, якщо Імітатор зробив паузу в контрольній точці або після кроку команди. |
exit |
Завершує моделювання і виходить з Імітатора. |
expwave |
Експортує файл часової діаграми у файли формату VHS або VEC. |
fc |
Порівнює два списки файлів і зберігає результат порівняння у текстовому файлі. Файли списку можуть містити до 250 сигналів. |
force |
Використовується для інтерактивного призначення стимулів сигналам. |
formlist |
Створює файл макрокоманд, що містить послідовність команд списку з іменами поточних перерахованих елементів даних і опцій для кожного сигналу. |
formwave |
Створює файл макрокоманди, що містить часові діаграми, включно з опціями їх індикації. |
fsm2vhd |
Генерує VHDL-код із діаграми станів автомата |
generate |
Генерація test bench для обраного об'єкта проекту. |
gettime |
Відображає години системного часу у вікні Console. |
goto |
Перехід до рядка, позначеного вказаним параметром. |
help |
Відображає довідку на вказану команду Active-HDL. |
if |
Виконує перераховані команди, якщо визначене вираження істинне. |
inc |
Збільшує значення змінної. |
labe |
Позначення параметра для виконання команди goto. |
list |
Перераховує усі VHDL-одиниці і їхні значення. |
noforce |
Ефект скасування будь-яких активних команд на зв'язаних HDL одиницях і переоцінці причин їхніх значень. |
nolist |
Видаляє всі перераховані HDL одиниці з вікна Списку. |
nowave |
Видаляє специфіковану одиницю з вікна часової діаграми. |
onbreak |
Використовується винятково усередині макрокоманд. Вона призначає команду, що буде виконана при досягненні контрольної точки у вихідному тексті. Команда без параметрів відміняє призначення. |
onerror |
Використовується винятково усередині макрокоманд. Визначає команду, що буде виконана після виявлення помилки у вихідному тексті. Якщо команда onerror не має ніяких параметрів, то жодна команда не буде виконана. Комбінація onerror і команд резюме буде друкувати повідомлення про помилки, не зупиняючи виконання макро-файла. |
open |
Відкриває файл у визначеному вікні. |
opendesign |
Відкриває проект у визначеному вікні. |
pause |
Зупиняє виконання зв'язаної макрокоманди. |
pwd |
Відображає ім'я поточного робочого каталогу для Active-HDL |
quite |
Відключає або включає режим очікування, у якому вікна повідомлення не відображаються протягом виконання макрокоманди. |
quit |
Вихід з Імітатора без збереження даних. |
radix |
Визначає задане по умовчанню основу системи числення для всіх наступних команд. |
removedesign |
Вилучає визначений проект із диску. |
removefile |
Вилучає визначений файл із диску. |
report |
Відображає список модулів проекту, що містяться в значенні за замовчанням робочій бібліотеці проекту поряд із їхніми вихідними файлами. |
restart |
Перевантажує розділи проекту, що були змінені, і встановлює час моделювання на нуль. Розділи, які не змінювалися не перевантажуються, що прискорює подальше моделювання. |
resume |
Виконання резюме макро-файла після контрольної точки або виявлення помилок. Команда резюме може бути вручну введена або включена в onbreak рядку команди. Якщо використовується в onerror рядку команди, це дозволить Вам друкувати повідомлення про помилки без того, щоб зупинити виконання макро-файла. |
run |
Змушує імітатор виконувати моделювання протягом вказаного часу. |
runexe |
Виконує програму (*. exe) або пакет (*. bat) файл. |
savealltabs |
Зберігає інформацію з усіх панелей вікна Console у файлі Console.log. |
set |
Створює змінні або виводить список всіх створених користувачем змінних, якщо використовується без параметрів. Для посилань на створені користувачем змінні використовується знак $. |
setlibrary- comments |
Приєднує коментар до визначеної бібліотеки. |
setlibrarymode |
Встановлює режим доступу для визначеної бібліотеки. |
show |
Перераховує HDL одиниці і підобласті, видимі з поточної області проекту. |
source |
Відображає обраний HDL вихідний файл у вікно HDL Редактора і використовується для установки контрольної точки у файлі іншому ніж той, що тепер відображається у вікні HDL Редактора. |
step |
Змушує Імітатор виконати наступний або вказаний оператор HDL |
stop |
Зупиняє поточне моделювання. |
sub |
Віднімає змінні, визначені командою набору. |
trace |
Реєструє хронологію обраного сигналу у внутрішній базі даних. |
tran, transcript |
Відображає на екрані команди, виконані у макро-файлі |
vcom |
Компілює весь проект, якщо ніякі параметри невизначені, або компілює файли проекту, визначені як параметри. |
vdel |
Видаляє модуль проекту з бібліотеки проектів. |
vdir |
Відображає вміст обраної бібліотеки. |
view |
Відкриває визначене вікно. |
vlib |
Створює бібліотеку з визначеним ім'ям і шляхом. |
vmap |
Призначає логічне ім'я бібліотеці проектів. |
vsim |
Відзначає визначену пару об'єкт-архітектура як верхній рівень і перевантажує структуру серверу проекту. |
wave |
Використовується для додавання сигналів у вікно часової діаграми. |
where |
Відображає інформацію щодо середовища системи, що є корисним, коли імітатор не знаходить необхідні бібліотеки або файли. |
write list |
Записує вміст вікна Списку і робить вихідний файл, що містить дані моделювання для всіх сигналів, відображуваних у цьому вікні. |
write report |
Друкує резюме проекту що моделюється, яке включає всі модулі проекту (VHDL конфігурації, об'єкти і пакети) й імена їхніх вихідних файлів. |
write wave |
Зберігає у файлі вміст вікна Редактора часових діаграм. |
1. Методичні вказівки до використання мови VHDL для опису і моделювання цифрових електронних схем при виконанні лабораторних і курсових робіт з дисциплін "Схемотехніка ЕОМ та елементи і схеми комп‘ютерних систем", “ЕОМ і мікропроцесорні системи”. Для студентів спеціальностей 6.0804.00 “Інформаційні управляючі системи та технології”, “Інформаційні технології проектування” /Укл. О.А.Щербина, Київ: КНУБА, 1999. – 35 с.
2. www.aldec.com.ua
Зміст
Передмова..................................................................................................................................... 3
1 Робоче середовище Active-HDL............................................................................................ 3
1.1 Вікно перегляду проектів – Design Browser................................................................. 3
1.2 Провідник проекту – Design Explorer............................................................................. 5
1.3 HDL-редактор – HDL-editor............................................................................................ 5
1.4 Мовний помічник – Language Assistant.......................................................................... 6
1.5 Редактор автоматів – State diagram editor..................................................................... 6
1.6 Редактор блок-схем – Block diagram editor.................................................................. 6
1.7 Майстер нового файла - New Source File
Wizard......................................................... 6
1.8 Редактор часових діаграм – Waveform
Editor.............................................................. 6
1.9 Вікна List, Watch, Process................................................................................................ 7
1.10 Вікно Console................................................................................................................... 7
2 Створення проекту.................................................................................................................... 7
2.1 Використання Майстра нового проекту – New
Design Wizard................................... 8
2.2 Використання Майстра нового файла - New
Source File Wizard.............................. 10
2.3 Робота з HDL-редактором............................................................................................. 11
2.3.1 Використання Мовного помічника - Language Assistant.................................... 13
2.4 Робота з Редактором автоматів – State
Diagram Editor............................................ 14
2.4.1 Розміщення і редагування портів та
глобальних сигналів................................. 15
2.4.2 Розміщення і редагування вершин станів............................................................ 16
2.4.3 Розміщення і редагування ребер
переходів........................................................ 17
2.4.4 Розміщення і редагування умов переходів.......................................................... 18
2.4.5 Розміщення і редагування дій переходів............................................................. 19
2.4.6 Розміщення на графі коментарів та інших
елементів........................................ 19
2.4.7 Компіляція графа автомата у програму на
VHDL............................................... 19
2.5 Робота з редактором блок-схем................................................................................... 19
2.5.1 Розміщення і редагування портів.......................................................................... 20
2.5.2 Розміщення і редагування елементів.................................................................... 21
2.5.3 Встановлення зв‘язків............................................................................................. 22
2.5.4 Включення операторів
VHDL до блок-схеми..................................................... 23
2.5.5 Компіляція схемного файла у програму на
VHDL.............................................. 23
2.6 Компіляція
проекту......................................................................................................... 23
3 Моделювання проекту............................................................................................................ 24
3.1 Робота з Редактором часових діаграм –
Waveform Editor....................................... 24
3.1.1 Додавання та вилучення сигналів.......................................................................... 25
3.1.2 Призначення стимуляторів..................................................................................... 25
3.1.3
Переміщення по часових діаграмах та порівняння діаграм.............................. 26
3.1.4 Виміри у
часових діаграмах.................................................................................... 27
3.1.5
Редагування часових діаграм................................................................................. 28
3.2 Інші вікна перегляду результатів
моделювання......................................................... 30
3.2.1 Вікно List................................................................................................................... 30
3.2.2 Вікно Watch............................................................................................................... 31
3.2.3 Вікно Process............................................................................................................ 31
3.2.4 Вікно стеку викликів - Call Stack........................................................................... 32
3.2.5 Вікно потоку даних - Data Flow.............................................................................. 32
3.3 Моделювання методом ручного стимулювання........................................................ 33
3.4 Моделювання
на Випробувальному стенді - Test Bench........................................... 34
3.4.1 Створення і використання випробувальних
стендів............................................ 35
3.5 Макрокоманди моделювання........................................................................................ 37
Додаток........................................................................................................................................ 38
Рекомендована література.................................................................................................... 41
Інтернет.................................................................................................................................... 41