Міністерство освіти І НАУКИ України

 

Київський НАЦІОНАЛЬНИЙ університет

будівництва і архітектури

 

 

 

 

 

Використання програми 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 в учбовому процесі.

1 Робоче середовище Active-HDL

Робоче середовище Active-HDL складається з головного вікна програми, в якому відкриваються вікна її компонентів (рис. 1). Нижче в цьому розділі ми коротко розглянемо призначення основних компонентів, а в наступних розділах – роботу з ними.

1.1 Вікно перегляду проектів – Design Browser

Проект, розроблений у Active-HDL, складається з набору пов‘язаних між собою файлів (файлів опису, бібліотечних файлів, файлів результатів моделювання проекту, різних допоміжних файлів тощо). Вікно Design Browser (рис. 2) є зручним засобом маніпулювання з файлами проекту. У цьому вікні можна додавати чи вилучати файли, отримати інформацію про ієрархічну підпорядкованість об‘єктів, а за виглядом піктограми файла, можна дізнатись чи компілювався файл після внесення до нього змін і чи була ця компіляція успішною.

Вікно Design Browser відкривається і закривається за допомогою одноіменної кнопки на панелі інструментів чи такої ж опції у меню View. Воно має три панелі:

·       
                                              

·        Панель файлів - Files (рис. 2) показує перелік файлів проекту і зміст робочих бібліотек, а також дозволяє вибрати модуль верхнього рівня зі списку модулів проекту. Іконки файлів несуть інформацію про тип файла: - vhdl-код, - граф автомата,  - блок-схема, - файл макрокоманд тощо, а також результати компіляції файла:  - успішно скомпільований, - той, що мав помилки компіляції, - попередження компіляції,  - той що не компілювався після внесення до нього змін.

Під іконкою файла розташовані іконки, що несуть інформацію про його зміст:  - опис сутності й архітектури,  - опис конфігурації, тощо.

·        Панель структури - Structure  (рис. 3) у своїй верхній частині відображає ієрархічну структуру проекту, що складається з модулів . Там же відображаються процеси , описані у модулях. У нижній частині панелі відображається список сигналів і змінних, присутніх у модулі чи процесі, виділеному у верхній частині панелі.

·        Панель ресурсів - Resources (рис. 4) містить папки з результатами моделювання: List - файли списків, створених під час моделювання; Logs - файли звітів із вікон Console, Simulation, Find і Compile;  Waveforms - файли часових діаграм.

До них можна долучати й інші папки, наприклад, файли документації.

1.2 Провідник проекту – Design Explorer

Подпись:  
Рис. 5.  Вікно Design Explorer
Провідник проекту викли­кається за допомогою опції Open Design із меню File. Це засіб ефективного управління проектом, що дозволяє не тур­буватися про фізичне розташу­вання файлів проекту. Провід­ник проекту має функції, що за­безпечують створення і вилу­чення папок, створення нових і копіювання будь-яких проектів у нові папки.

 Зазвичай усі проекти зна­ходяться у папці Projects, ство­реній при ін­сталяції. Кожний проект представле­ний у вікні Про­відника окремою іконкою (рис. 5). Провідник дозво­ляє групу­вати їх в окремі папки. Ці папки не мають жодного відношення до па­пок фай­лів, у яких записані проекти. У лівій частині ві­кна відображається ієрархі­чна структура папок, у пра­вій – вміст поточної папки. Рядок стану показує назву і шлях до  файла опису прое­кту.

1.3 HDL-редактор – HDL-editor

HDL-редактор – це те­кстовий редактор для вводу і редагування VHDL-файлів (рис. 13). У процесі редагування він розпізнає і автомати­чно виділяє відповідними кольорами ключові слова, коментарі, ідентифікатори та інші елементи мови VHDL. Це полегшує сприйняття тексту програми та є засобом до­даткового синтаксичного контролю.

Роботу у HDL-редакторі полегшують Мовний помічник і Майстер нового файла, про які йдеться нижче.

1.4 Мовний помічник – Language Assistant

Мовний помічник дозволяє прискорити розробку коду на VHDL за рахунок ви­кори­стання шаблонів –  готових фрагментів коду, що містять базові конструкції мови VHDL та описи основних функціональних блоків: мультиплексорів, тригерів, лічиль­ників, тощо. Мовний помічник містить також шаблон користувача і навчальну про­граму з декількома простими шаблонами.

1.5 Редактор автоматів – State diagram editor

Редактор автоматів – це спеціалізований графічний редактор, призначений для по­будови графів скінчених автоматів (рис. 16). Граф автомата транслюється програ­мою Active-HDL у VHDL-код.

1.6  Редактор блок-схем – Block diagram editor

Редактор блок-схем – це графічний редактор, що дозволяє описати схему у ви­гляді елементів (блоків) і зв‘язків між ними (рис. 22). Кожний елемент, у свою чергу, може бути описаний у вигляді VHDL-коду, графа автомата чи блок-схеми нижчого ієрархіч­ного рівня. Врешті увесь опис транслюється програмою Active-HDL у VHDL-код.

Щоб відкрити вікно HDL-редактора, Редактора автоматів чи Редактора блок-схем для редагування існуючого файла, достатньо двічі клацнути мишкою на піктог­рамі файла у вікні Design Browser.

Для створення і редагування нового файла у тому ж вікні можна скористатися пік­тограмою Add New File або викликати Майстер нового файла.

1.7 Майстер нового файла - New Source File Wizard

Цей Майстер полегшує створення нового файла у HDL-редакторі, Редакторі ав­то­матів чи  Редакторі блок-схем. При його використанні, початковий етап створення файла зводиться до вводу відповідей на запити Майстра про ім'я файла, назву сутності, а також про імена і типи портів. Для виклику Майстра можна скористатися опцією New з конте­кстного меню, що викликається натисканням правої кнопки мишки на вільному полі ві­кна Design Browser.

1.8 Редактор часових діаграм – Waveform Editor

Редактор часових діаграм (рис. 6) – це графічний редактор, призначений для пере­гляду і редагування часових діаграм. Зокрема, у цьому редакторі можна створювати форми сигналів-стимулів, що подаються на входи схем при моделюванні, а також пере­глядати результати моделювання.

При редагуванні часових діаграм можна застосовувати переміщення, копіювання, склеювання, тощо. Редактор часових діаграм дозволяє також порівняти між собою два сигнали і виділити кольором їх відмінності.

1.9
Подпись:  
Рис. 6. Вікно редактора часових діаграм

Вікна List, Watch, Process

У вікні List (рис. 26) результати моделювання відображаються у вигляді таблиці, кожний рядок якої описує одну зміну значень сигналів і містить інформацію про час, коли відбулася ця зміна і про значення сигналів, які встановились у результаті.

У вікні Watch (рис. 27) відображаються поточні значення вибраних корис­тувачем сигналів, час їх встановлення, а також значення, які вони мали до цього моменту.

У вікні Process (рис. 28) відображається інформація зв'язок між процесами, та сигналами, які у них беруть участь.

1.10 Вікно Console

Консоль – це вікно для виводу текстових повідомлень програмного середовища Active-HDL, наприклад повідомлень про виконання і результати компіляції. Сюди ж можна вво­дити з клавіатури команди управління цим середовищем. Вікно консолі показане у правому нижньому кутку на рис. 1.

2 Створення проекту

Проектом в програмі Active-HDL, називають набір пов‘язаних між со­бою файлів, що описують будову і функ­ціонування схеми, а також за­безпечу­ють моделювання її роботи, тощо. У кожний мо­мент часу в програмі може бути відкрито не більше одного проекту.

Подпись:  
Рис. 7. Вікно запуску Active-HDL
Створення проекту від­разу після запуску Active-HDL на екран виводи­ться ві­кно діалогу (рис. 7), що пропонує від­крити один з існуючих проектів чи ство­рити но­вий. Вже після запу­ску про­грами відкрити інший про­ект чи створити новий можна за до­помогою опцій Open Design та New Design у меню File. Для створення проекту вико­ристовується описаний нижче Майстер.

 

 

 

2.1 Використання Майстра нового проекту – New Design Wizard

Подпись:  

Рис. 8. Перше вікно Design Wizard
Майстер нового прое­кту – це програма, що допо­магає створити шаблони файлів проекту та папки, де вони зберігатимуться.

В першому вікні про­грами (рис. 8) треба ввести ім‘я створюваного проекту, папку де він зберігатиметься, а також ім‘я робочої бібліо­теки.

У другому - обирають спосіб створення файлів:

·                    Create new Source files now - створити нові файли зараз;

·                    Add existing resources files - додати існуючі файли проектів;

·                    Import design from Active-CAD - імпортувати проект із Active-CAD;

·                    Create an empty design - створити пусті файли проекту.

Подпись:  
Рис. 9. Створення шаблонів файлів
Якщо вибрати Create new Source files now, то в третьому вікні (рис. 9) в колонку Entity Name треба ввести імена фай­лів, що створюватиму­ться, а  у ко­лонці Source Type вибрати типи цих файлів:

¨       VHDL Codeпро­грама мовою VHDL;

¨      State Diagramграф ав­томата;

¨      Block Diagramблок-схема;

¨      Verilog Source Codeпрограма мовою Verilog[1].

Подпись:  

Рис. 10. Визначення портів
Кнопки New та Delete служать для дода­вання і ви­лучення рядків у списку файлів, а кнопка Ports від­криває вікно (рис. 10), що дозволяє ввести ін­формацію про порти створюваних файлів.

Кнопки New та Delete служать для дода­вання і ви­лучення рядків у списку портів. Кнопка Type дозво­ляє задати тип порту (bit, std_logic тощо), у поля Name та Array Index вво­дять ім‘я та розрядність порту, а на панелі Port di­rection вибирають його ре­жим: in, out, input чи buffer.

В міру введення ін­формації про порти у лівій частині вікна формуються їх графічні зображення.

У останньому вікні Майстра нового проекту виводиться список підготовлених ним шаблонів файлів. При потребі можна повернутись до виконання попередніх етапів роботи з Майстром, або за­вершити створення нового проекту, натиснувши кнопку Готово, або відмовитись від створення проекту і завершити роботу з Майстром, натиснувши кнопку Отмена.

На завершення зазначимо, що створені за допомогою даного Майстра файли поки що містять лише декларації сутностей, портів і пусте тіло опису архітектури. Для по­дальшої роботи з проектом і внесення змін і доповнень у сформовані Майстром файли застосовуються відповідні редактори, а саме, тек­стовий HDL-редактор та графічні - Редак­тор автоматів і Редактор блок-схем.

2.2 Використання Майстра нового файла - New Source File Wizard

Подпись:  
Рис. 12. Введення імен файла, сутності та архітектури
Подпись:  
Рис. 11.  Додавання нового файла

Якщо під час ство­рення проекту у вікні Майстра нового проекту, показаному на рис. 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) для введення інформації про порти.

2.3 Робота з HDL-редактором

Подпись:  
Рис. 13.  HDL-редактор

HDL-редактор (рис. 11) – це  інструмент для введення VHDL-коду, файлів випробувального стенда, та інших текстових файлів. Щоб перейти до редагування існуючого файла треба клацнути мишкою на його закладці у вікні редактора, або двічі клацнути на імені файла у вікні Design Browser, або скористатися опцією Open у контекстному меню. Створення нового файла коду описане у попередньому розділі.

Як уже відзначалось, HDL-редактор розпізнає і автоматично виділяє відповідними кольорами ключові слова, коментарі, ідентифікатори та інші елементи мови VHDL чи інших мов, з якими він може працювати. Це полегшує сприйняття тексту програми і є засобом додаткового синтаксичного контролю. Для вибору кольорів і шрифтів служить опція Preferences контекстного меню редактора.

В лівій частині вікна HDL-редактора знаходяться такі функціональні кнопки:

 - робить відступ виділеного фрагмента тексту (коду);

 - видаляє відступ в виділеному тексті;

 - перетворює обраний текст на коментар;

 - знiмає ознаки коментарів з обраного тексту;

 -  генерує для виділеного тексту символ структури (прямокутник зі значком “+” або “-“), натиснувши на який можна згортати до одного рядка та знову розгортати даний фрагмент  тексту;

  - видаляє  символи структур з усіх груп;

 - аналізує будову пограми, знаходить у ній специфічні групи операторів, виділяє їх різними кольорами фону та генерує для них символи структури;

 - автоматично встановлює відступи у відповідності до вкладеності операторів;

  - додає посилання (у формі коментарів);

 - розміщує у тексті програми іменовану закладку, перехід до якої можна буде виконати за допомогою кнопки .;

 управляє відображенням символів кінця рядка;

 - відповідно: вирізає та копіює в буфер обміну виділений фрагмент тексту, і вставляє текст із буфера;

 - відповідно: відміняє попередню операцію редагування та відновлює відмінену операцію;

 - відповідно: активізує вікно діалогу для пошуку і заміни тексту за введеним зразком, дозволяє вибрати один із раніше введених зразків для пошуку, виконує перехід до наступного і попереднього екземпляра даного зразка;

 - відповідно: встановлює або знімає неіменовану закладку, що відображається у вигляді прапорця, виконує перехід до наступної чи попередньої закладки, відміняє всі неіменовані закладки.

Подпись: case <expression> is
	when <choices> =>
		<statements>
	when <choices> =>
		<statements>
	when others =>
		<statements>
end case;
Рис. 14
HDL-редактор дозволяє прискорити і полегшити написання програм, використову­ючи автоматичне введення закінчень ключових слів. При наборі ключового слова можна вводити тільки його початкові літери доти, доки справа від курсору не з‘явиться закінчення. Якщо ви пого­джуєтесь з таким закінченням, натисніть клавішу переміщення курсору вправо, якщо ні – продов­жуйте набирати текст.

Подібним чином можна автоматично вводити не лише закінчення ключових слів, а й цілі шаблони мовних конструкцій. Для цього після появи справа від курсору закінчення ключового слова, треба натиснути комбінацію клавіш Ctrl+Enter.

Наприклад, для вводу оператора case достатньо  ввести лише дві перші літери "са", після чого, натиснувши Ctrl+Enter, ми одержимо у файлі шаблон для написання коду, показаний на рис. 14.

Ще одним засобом, що суттєво полегшує роботу з HDL-редактором є Мовний по­мічник, застосування якого описано нижче.

2.3.1 Використання Мовного помічника - Language Assistant

Подпись:  

Рис. 15.  Вікно Мовного помічника
Як вже відзначалось, мовний помічник дозволяє прискорити розробку програм на VHDL за рахунок використання шаблонів –  готових фрагментів коду, що містять базові конструкції мови VHDL та описи основних функціональних блоків: мультиплексорів, тригерів, лічильників, тощо. Мовний помічник містить також шаблон користувача і навчальну програму з декількома простими проектами.

Для активізації вікна Мовного помічника (рис. 15) можна скористатися кнопкою  на панелі інструментів. Ліва панель вікна Language Assistant показує ієрархічний список файлів шаблонів, згрупованих у папки, права –  відображає вміст відміче­ного на лівій панелі файла. За допомогою контекстного меню лівої панелі можна долучати, перейменовувати і видаляти файли шаблонів та вставляти їх у файл, що редагується HDL-редактором.

Для цього можна методом drag & drop перетягти ім‘я шаблона у вікно HDL-ре­дактора з вікна Мовного помічника, або скористатися кнопкою  на його інструментальній панелі чи командою Use з контекстного меню.

2.4 Робота з Редактором автоматів – State Diagram Editor

Будь-яка цифрова схема з детермінованою поведінкою може розглядатися як скінчений автомат (автомат зі скінченим числом внутрішніх станів). Отже зв‘язок між сигналами на вхідних і вихідних портах такої схеми може бути описаний графом автомата. Ця форма опису є особливо зручною і наочною для схем, що ре­алізують алгоритми управління. Її застосування дозволяє суттєво підвищити швидкість створення i верифікації проектів.

Подпись:  
Рис. 16.  Вікно Редактора автоматів
Active-HDL  має в своєму складі графічний Редактор автоматів, що дозволяє легко створювати і редагувати графи, компілювати цю форму опису в опис у вигляді файлів мовою VHDL  чи Verilog, реалізувати на графі ефекти анімації, висвітлюючи поточні стани автомата під час моделювання,, тощо.

Файли графів автоматів мають імена з розширенням *.asf. Щоб перейти до редагування існуючого файла, треба клацнути мишкою на його закладці у вікні редактора або двічі клацнути на імені файла у вікні Design Browser чи скористатися опцією Open у контекстному меню. Створення нового файла графа автомата описане у розділах  2.1 і 1.2.

Вікно Редактора автоматів (рис. 16) складається з області декларацій (у верхній частині вікна) і робочої області (обведеної контуром). Перша містить інформацію про ім‘я сутності і порти, друга призначена власне для побудови графа.

Панель інструментів Редактора автоматів містить такі функціональні кнопки:

 -  вибір та редагування;

 - додавання нової вершини (стану);

 - додавання нового ребра (переходу);

 - додавання умови переходу;

 - дії автомата під час перебування у стані і під час переходу;

 - додавання дії “Автомат-діаграма”;

 - додавання сигналу

 - додавання портів: вхідного, вихідного, двонаправленого;

 - додавання початкового стану;

 - вставка текстового рядка (коментаря), малювання кривої лінії, кола, прямокутника;

 - вирізання і копіювання в буфер обміну та вставка з буфера;

 - відміна дії та повернення до попередньої відміненої дії;

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

 - генерація VHDL–коду поточного графа автомата та перегляд згенерованого VHDL-коду;

 - трасування до наступного стану.

2.4.1 Розміщення і редагування портів та глобальних сигналів

Файл, створений Майстром нового проекту чи Майстром нового файла, як правило, уже містить імена сутності і архітектури, а також зображення портів, що були введені у діалоговому вікні, показаному на рис. 10. Якщо ж був створений порожній файл, то усі названі реквізити треба вводити вручну.

·                    Для розміщення порту, треба натиснути на панелі інструментів іконку з зобра­женням потрібного режиму  (вхід, вихід чи двонаправлений порт), потім вказати мишкою положення порту на полі декларативної частини.

·                    Переміщення порту, як і будь-яких інших елемен­тів, виконується мишкою методом drag & drop.

·                    Подпись:  
Рис. 17. Вікно реквізитів порту
Для вилучення порту, його спочатку треба виді­лити, кла­цнувши на ньому миш­кою (порт буде обра­мле­ний червоною рам­кою), а потім натиснути клавішу Delete.

·                    Для зміни режиму, роз­ря­дності, імені, типу та ін­ших реквізитів порту треба клацнути на ньому правою клавішею мишки, вибрати у контекстному меню оп­цію Properties, ввести корективи у відповідні поля вікна діалогу, показаного на рис. 17, і натиснути кнопку ОК. Зо­крема вхідний порт, сигнал якого задає відлік дискрет­ного часу, у якому функціонує автомат,  повинен мати відмітку у полі Clock.

·                    Крім того ім'я потру, як і будь-яку іншу текстову інформацію, можна коригувати без­посередньо на графі. Для цього її треба спочатку виділити, клацнувши мишкою (у ре­зультаті навколо неї з'явиться червона рамка). Потім по ній треба клацнути миш­кою вдруге. В результаті відкриється вікно редагування (чорна об'ємна рамка з кур­сором). Для завершення редагування, слід клацнути мишкою за межами рамки.

 

Розміщення та редагування глобальних сигналів виконується аналогічно розмі­щенню та редагуванню портів, але з використанням кнопки .

Серед параметрів сигналів, що задаються у вікні діалогу опції Properties контекст­ного меню, так само як і серед параметрів усіх портів крім вхідних, є інформація про спосіб формування сигналу: Registered чи Combinatorial. Перший означає, що даний сигнал формується на виході регістру, отже моменти зміни його значень прив'язані до міток дискретного часу в якому функціонує автомат. Другий варіант означає форму­вання сигналу на виході комбінаційної схеми, отже його значення можуть змінюватись внаслідок зміни вхідних сигналів у будь-який момент часу.

2.4.2 Розміщення і редагування вершин станів

Вершинам графа відповідають стани автомата.

·        Щоб розмістити вершину в на робочій області вікна Редактора автомата треба натис­нути на панелі інструментів кнопку State  (при цьому курсор набуває форми круга) i клацнути мишкою в тому місці робочої області вікна, де потрібно розташу­вати вершину.

·        Для зміни розмірів та форми вершини по­трібно клацнути на ній мишкою. В результаті навколо вершини з'являться маркери, переміщуючи які, можна надати вершині бажаної форми та розмірів.

·        Колір вершини можна обрати на закла­дці Graphics з опції Properties контекстного меню, що викликається натисканням правої клавіші мишки на зображенні вершини.

·        Створюваним вершинам автоматично надаються імена S1, S2, ... Для зміни імені можна скористатися вищезгаданою опцією Properties контекстного меню (закладка General).  Крім того ім'я можна коригувати так, як коригується будь-яка текстова інформація на графі: спочатку відмітити її, а потім, вдруге клацнувши на ній мишкою, відкрити вікно редагування.

·        Подпись:  

Рис. 18
Подпись:  
Рис. 19 Зміна дій стану
З кожним станом автомата можуть бути пов'язані його дії по наданню значень сигналам і змінним. Ці дії можуть виконуватися при входженні автомата у цей стан (Entry), його перебуванні в даному стані (State) і виході з нього (Exit). На графі дії, що виконуються при входженні, перебуванні і виході зі стану, відображаються у прямокутниках, сполучених з точками, розташованими відповідно у верхній, правій та нижній частині вершини (рис. 18). Для вводу і редагування цих дій можна скористатися закладкою Actions  з опції Properties у контекстному меню вершини (рис. 19). Крім того дії можуть редагуватися як текстова інформація безпосередньо на графі.

·        Для зміни положення вершини у вікні редактора треба навести курсор на вершину і, утримуючи ліву кнопку мишки, перетягнути вершину на нове місце розташу­вання.

·        Для вилучення вершини треба її виділити, клацнувши мишкою, і натиснути клавішу Delete

2.4.3 Розміщення і редагування ребер переходів

Ребрам, що сполучають вершини графа, відповідають переходи автомата від одного стану до іншого. 

Для побудови ребра натисніть на панелі інструментів кнопку Transition . Коли курсор набуде форми хрестика, клацніть мишкою на вершині, з якої виходить лінія ре­бра,  потім (при бажанні) на одній чи декількох точках перегину цієї лінії, і нарешті – на вершині, в яку це ребро входить.

Щоб скоригувати форму ребра його треба виділити, клацнувши мишкою, а потім перетягти на нове місце точки перегину лінії чи маркери навколо них.

Подпись:  
Рис. 20
         Вже після побудови ребра, вершину, з якої виходить чи у яку входить це ребро, можна замінити іншою. Для цього потрібно виділити ребро і перетягти маркер точки входу чи точки виходу ребра від однієї вершини до іншої. Можна також тимчасово залишити дане ребро неприєднаним  до жодної з вершин. Таке ребро матиме вигляд показаний на рис. 20. Після приєднання ребра до вершини хрестик на його кінці зникне.

Для вилучення ребра його треба виділити і натиснути кнопку Delete.

Крім переходів між вершинами, на графі автомата також повинен бути показаний перехід автомата у початковий стан, що виконується при його ініціалізації. Для цього застосовується позначення  , що відіграє ту саму роль, що і вершина "початок" на схемі алгоритму.  У контекстному меню цього позначення можна вибрати синхронний чи асинхронний характер переходу автомата у початковий стан.

2.4.4 Розміщення і редагування умов переходів

Подпись:  
Рис. 21
Як відомо, автомат виконує той чи інший перехід у залежності від значень вхідних сиг­налів. Отже, якщо з вершини виходить більше ніж одне ребро, то кожному з них повинна бути поста­влена у відпові­дність умова, при виконанні якої відбуватиметься перехід, що описує­ться саме даним ребром. Умови, що описують переходи з однієї вер­шини автомата, повинні бути взаємовиключними, а одну з них мо­жна позначити @ELSE. Остання вважається виконаною тоді, коли не виконуються всі інші умови переходу із даної вершини.

Для введення умови переходу треба натиснути на панелі інст­рументів кнопку Condition   (курсор при цьому змінить свою форму) і відмітити ним потрібне ребро. В результаті відкриється вікно редагування (рис. 21), у яке слід ввести умову переходу, дотримуючись правил синтаксису мови VHDL, і натиснути клавішу Enter  або клацнути мишкою за межами вікна.

Умова переходу відображається на графі підкресленою. Цим її вигляд відрізняється від вигляду вихідних сигналів, що відобража­ються у рамках.

Щоб змінити розташування умови на графі, її треба виділити, клацнувши миш­кою (при цьому з‘являється проблискова лінія, що показує до якого саме ребра відно­ситься  ця умова), а потім перетягти мишкою на бажане місце.

Якщо треба відредагувати сам зміст умови переходу, то виділивши її, треба вдруге клацнути по ній мишкою. В результаті відкриється вікно для редагування умови пере­ходу. Іншим способом редагування умови переходу є використання закладки HDL опції Properties у контекстному меню ребра.

Щоб вилучити умову переходу, треба виділити її і натиснути клавішу Delete.

2.4.5 Розміщення і редагування дій переходів

Дії автомата по наданню значень сигналам і змінним можуть бути пов'язані не лише з входом, перебуванням чи виходом автомата із певного стану, як це розглядалось у розділі 1.4.2, а й з його переходом із одного стану в інший.

Для введення дій переходу треба натиснути на панелі інст­рументів кнопку Transition Action  (курсор при цьому змінить свою форму) і відмітити ним потрібне ребро переходу на графі. Порядок введення і редагування дій переходів аналогічний описаному вище порядку введення і редагування умов переходів.

2.4.6 Розміщення на графі коментарів та інших елементів

На графі автомата можна розмістити також коментарі у вигляді текстів та графіки, наприклад, для визначення внутрішніх сигналів. Для цього використовуються кнопки , що розміщені на панелі редактора автоматів.

2.4.7 Компіляція графа автомата у програму на VHDL

На основі файла графа автомата *.asf, створеного у Редакторі автоматів, може бути згенерований  файл, *.vhd, що описує даний автомат мовою VHDL.

Перш ніж приступати до генерації VHDL-файла, слід записати на диск останні зміни, внесені у файл графа автомата, вибравши у меню File опцію Save або одноіменну кнопку на панелі інструментів.

Для генерації VHDL-файла треба натиснути кнопку . Повідомлення про результати генерації та виявлені помилки виводиться у вікні Console. Якщо генерація була успішною, переглянути і при потребі скоригувати створений файл можна, натиснувши кнопку .

2.5 Робота з редактором блок-схем

 Редактор блок-схем дозволяє описувати проект як схему з'єднання елементів[2] (рис. 22). Елементи, у свою чергу, можуть описуватися або безпосередньо VHDL-кодом, або графом автомата, або блок-схемою нижчого ієрархічного рівня. У кінцевому результаті увесь опис транслюється у VHDL-код.

Файли, створені у Редакторі блок-схем, мають імена з розширенням *.bde. Подібно до інших графічних редакторів схемотехнічного призначення, Редактор блок-схем дозволяє розміщувати, обертати й упорядковувати, символи, проводи, шини, тощо. Інструментальна панель з основними командними кнопками розташована у верхній частині вікна редактора, і може викликатися також з контекстного меню. Далі ми наведемо короткий опис призначення кнопок, а потім розглянемо їх застосування для побудови схем.

 переключає редактор в режим редагування з інших режимів;

 застосовується для розміщення на схемі елементів, архітектура яких вже описана у відкомпільованих файлах проекту;

 створює і розміщує на схемі порожній елемент, архітектура якого буде описана пізніше;

 

Рис. 22. Вікно редактора блок-схем

 

  застосовуються відповідно для креслення проводів, шин та надання їм імен (ці кнопки дозволяють встановлювати зв'язки між компонентами);

 дозволяють створити порти, тобто точки, якими завершуються провідники вводу, виводу, двонаправлені і буферні відповідно;

 виконують ту саму функцію для шин;

 позначають на схемі провідники з напругами живлення Vcc та землі;

 застосовуються для оголошення глобальних сигналів і шин;

 дозволяють розмістити на схемі додаткові елементи типу коментарів у вигляді тексту чи малюнків;

 використовуються для вводу фрагментів коду на VHDL.

2.5.1 Розміщення і редагування портів

Якщо файл створюється за допомогою Майстра нового проекту (див. розділи 1.7, 0,), то імена і типи портів вводяться у вікні діалогу, показаному на рис. 10, ще до початку роботи з редактором блок-схем. В такому випадку, після відкриття вікна редактора, зображення портів уже будуть присутні у файлі.

Якщо ж ви створили пустий файл, то зображення портів провідників і шин можна нанести за допомогою кнопок . Цими ж кнопками можна скористатися для розміщення на блок-схемі нових портів.

Зображення портів можна розмістити також під час креслення ліній зв'язку, як це описано у розділі 1.5.3.

Для корекції імен, розрядності та режимів існуючих портів треба клацнути правою клавішею мишки на позначенні порту та вибрати у контекстному меню опцію Properties. Крім того ім‘я та розрядність порту можна редагувати, двічі клацнувши мишкою на зображенні імені. Завершивши редагування, слід натиснути клавішу Enter.

2.5.2 Розміщення і редагування елементів

Розробка проектів у Active-HDL може виконуватись як знизу вгору, так і згори вниз.

При проектуванні знизу вгору, для нанесення на схему графічного позначення елементу, архітектура якого вже описана і відкомпільована, треба:

¨      клацнути мишкою на кнопці , що відкриває вікно Symbols Toolbox,

¨      вибрати потрібний елемент у розташованому там списку відкомпільованих файлів проекту,

¨      методом drag & drop перетягти графічне зображення обраного елемента із вікна Symbols Toolbox у вікно редактора блок-схем.

При проектуванні згори вниз, щоб нанести на схему елемент, архітектура якого буде описана пізніше[3], треба:

¨      натиснути кнопку  (після цього курсор змінить свою форму на  );

¨      намалювати прямокутник за розмірами майбутнього елемента;

¨      натиснути кнопку , щоб повернутися до звичайного режиму редагування (курсор набуте своєї попередньої форми);

¨      клацнути правою клавішею мишки у прямокутнику і вибрати із контекстного меню опцію Properties;

¨      у полях Fub name та Interface neme вказати відповідно функціональне та позиційне позначення елемента на схемі, замінивши позначення автоматично надані елементові при його створенні;

¨      користуючись кнопками , намалювати виводи елемента – прості провідники та шини;

¨      повернутися до звичайного режиму редагування, натиснувши кнопку ;

¨      клацнути правою клавішею мишки на зображенні елемента вибрати в контекстному меню команду Edit;

¨      для кожного з виводів елемента, користуючись опцією Properties із контекстного меню, замінити режими та імена виводів, а також розрядність шин, що були їм автоматично надані при створенні, на справжні режими, імена та розрядність.

Для того, щоб виконати опис архітектури створеного у такий спосіб позначення елемента, треба клацнути правою клавішею мишки у середині цього позначення і вибрати в контекстному меню опцію Push.

Після цього у вікні, подібному до показаного на рис. 11, треба вибрати тип опису: блок-схема, граф автомата, програма мовою VHDL чи програма мовою Verilog. Натиснувши кнопку ОК, ви перейдете до створення цього опису у відповідному редакторі. При цьому у створюваному файлі вже будуть присутні порти, імена й режими яких відповідають зовнішнім виводам створеного вами елемента Fub.

Після створення файла опису архітектури елемента команда Push забезпечуватиме безпосередній перехід до редагування цього файла, пропускаючи вікно, показане на рис. 11.

2.5.3 Встановлення зв‘язків

Щоб підготовити Редактор блок-схем до креслення ліній зв‘язку, треба натиснути кнопку . При цьому відповідним чином зміниться форма курсору.

Для проведення лінії зв‘язку між будь-якими двома точками на схемі, треба натиснути клавішу мишки у початковій і відпустити у кінцевій точці лінії. Звичайно редактор сам обирає раціональну траєкторію проведення лінії так, щоб вона обминала елементи та написи на схемах. Проте, якщо ви бажаєте самі задати цю траєкторію, то положення точок її перегину можна фіксувати клавішею "пробіл" під час креслення лінії.

Якщо лінія завершується портом, то для його розміщення на схемі можна натискати клавішу Tab  доти, доки зображення режиму порту (вхід, вихід чи двонаправлений порт) не набуде бажаного вигляду.

Лінії зв‘язку, як правило, проводяться, прив‘язуючись до точок координатної сітки. Для проведення ліній поза сіткою треба натиснути клавішу Alt.

Так само, але з використанням кнопки , будуються лінії групового зв‘язку (шини). Лінії зв'язку можна проводити також і в звичайному режимі редагування (з курсором  ).  Для цього достатньо натиснути клавішу мишки на одному з контактів і відпустити її на іншому. Крім того, цей режим дозволяє методом drag & drop редагувати схему, зокрема, переміщувати схемні елементи, відрізки і точки згинання ліній зв‘язку, копіювати або вилучати елементи та лінії.

Лінії зв'язку утворюють на схемі мережі з'єднань. Кожну мережу можна розуміти як окремий провідник, що з'єднує між собою дві чи більше точок на схемі. Іншими словами, якщо між двома точками існує контакт, то вони належать до однієї мережі, якщо ні – то до різних.

При створенні мереж з'єднань, Active-HDL автоматично надає їм імена за замовчуванням: NET1, NET2 і т.д. Проте ці імена на схемі не відображаються і такі мережі називають неіменованими.

Мережі можна надати довільне ім'я та розмістити його в одному чи декількох місцях схеми, користуючись кнопкою  або опцією Property у контекстному меню лінії зв'язку. Таку мережу називають іменованою. Іменованими є також мережі підключені до портів. Їм автоматично надаються імена цих портів.

Ім'я мережі може бути скоригованим безпосередньо на схемі чи у вікні діалогу Property. Можна також взагалі вилучити ім'я, виділивши його і натиснувши клавішу Delete. Тоді мережа знову стане неіменованою.

У будь-якому випадку одна мережа від іншої відрізняється іменем. Тому для з'єднання точок на схемі не обов'язково сполучати їх лінією зв'язку. Достатньо показати що вони підключені до однієї мережі, надавши однакових імен лініям зв'язку, що підведені до цих точок. Такі точки називають з'єднаними за іменем.

Це ж правило застосовується і для імен глобальних сигналів  та шин глобальних сигналів . Усі порти і непідключені виводи елементів, які матимуть імена, що співпадають з іменами глобальних сигналів вважатимуться з‘єднаними між собою.

Якщо скомпілювати блок-схему у програму на VHDL, то мережам з'єднань схеми відповідатимуть у програмі сигнали з такими самими іменами. При цьому одинарним лініям відповідатимуть сигнали скалярного типу, а шинам – сигнали типу одномірних масивів. Якщо підключити мережу до контакту   чи , то в програмі їх сигналам буде надано значень констант '0' чи '1' відповідно.

2.5.4 Включення операторів VHDL до блок-схеми

Як випливає з розглянутого вище, існує пряма відповідність між графічними зображеннями на блок-схемі і їх описом у програмі на VHDL. Проте далеко не всі елементи мови VHDL мають відповідні графічні позначення на схемах. Через це у редакторі блок-схем передбачена можливість включення до графічного файла блок-схеми певних фрагментів описів, виконаних мовою VHDL. Під час компіляції графічного файла блок схеми в програму на VHDL, ці описи будуть перенесені у відповідні місця програми.

Для включення операторів VHDL до графічного файла використовуються такі кнопки панелі інструментів або опції меню Diagram/VHDL Statements:

 - дозволяє додати оператори у заголовок проекту;

 - дозволяє додати оператори до опису сутності;

 - дозволяє додати оператори у декларацію архітектури;

 - дозволяє додати оператори у тіло архітектури;

 - дозволяє ввести узагальнення (generics);

2.5.5 Компіляція схемного файла у програму на VHDL

На основі схемного файла *.bde, створеного у Редакторі блок-схем, може бути згенерований  файл, *.vhd, що описує дану схему мовою VHDL.

Перш ніж приступати до генерації VHDL-файла, слід записати на диск останні зміни, внесені у схемний файл, вибравши в меню File опцію Save або одноіменну кнопку на панелі інструментів.

Для генерації VHDL-файла треба натиснути кнопку . Повідомлення про результати генерації та виявлені помилки виводиться у вікні Console. Якщо генерація була успішною, переглянути і, при потребі, скоригувати створений файл можна натиснувши кнопку .

2.6 Компіляція проекту

Програма моделювання проектів, що входить до складу Active-HDL, не може моделювати безпосередньо вихідний текст, написаний мовою VHDL. Тому проект, який ви бажаєте моделювати, потрібно спочатку відкомпілювати в бібліотеку проекту. Тільки дані,  збережені в бібліотеці, можуть читатися пограмою моделювання.

Перед компіляцією треба записати на диск останні зміни, внесені до файлів проекту, та вибрати у вікні Design Browser сутність верхнього рівня ієрархії (Top-level Entity). Щоб виконати компіляцію проекту, треба вибрати в контекстному меню опцію Compile all або натиснути одноіменну кнопку на панелі інструментів.

Повідомлення про результати компіляції та виявлені помилки виводиться у вікні Console, відповідні позначення про результат компіляції кожного файла виводиться біля його іконки у вікні Design Browser.  Крім того, у вхідних файлах проекту відповідним чином виділяються оператори VHDL та елементи графів і блок-схем що містять помилки.

Після виправлення помилок та успішної компіляції всього проекту можна переходити до його моделювання.

3 Моделювання проекту

Моделювання є дуже важливим етапом розробки проекту. Це етап аналогічний тестуванню програм. Його мета – вивчити функціонування проекту, виявити та виправити можливі помилки ще до того, як проект буде реалізовано у вигляді мікросхеми. Для цього Active-HDL має у своєму складі різноманітні засоби, що дозволяють програмно імітувати подачу сигналів (стимулів) на входи проекту і відтворювати та аналізувати сигнали на його виходах. Такими засобами є:

·        ручне стимулювання проектів;

·        VHDL-файли випробовувального стенда, створені вручну, або з використанням Майстра випробовувального стенда чи зовнішніх редакторів;

·        команди моделювання, що вводяться у вікно консолі;

·        файли макрокоманд моделювання;

·        файли векторів перевірки, імпортовані з Active-CAD;

·        моделювання, засноване на формах сигналу, відредагованих користувачем.

Всі ці засоби можуть використовуватись в одному проекті паралельно. Користувач обирає метод, що найкраще підходить для потреб проекту й має найкращий баланс між часом, необхідним для проведення моделювання, і складністю перевірки проекту.

3.1 Робота з Редактором часових діаграм – Waveform Editor

Редактор часових діаграм є основним засобом для створення стимулюючих сигналів і перегляду результатів моделювання. Файли часових діаграм мають імена з розширенням *.awf   і зберігаються у папці Waveforms. Щоб відкрити існуючий файл часової діаграми можна клацнути мишкою на закладці файла у вікні редакторів, або двічі клацнути на імені файла у вікні Design Browser, або вибрати у контекстному меню команду open. Для створення нового файла часової діаграми можна скористатися кнопкою  (New Waveform).

Вигляд вікна Редактора часових діаграм показано на рис. 24 і 25. В його лівій частині у колонках Name, Value, Stimulator відображаються відповідно імена сигналів, їх значення у момент, що відповідає положенню курсора, а також стимулятори, які застосовуються для формування вхідних сигналів. Натискаючи на кнопки з заголовками цих трьох колонок, можна розташувати сигнали за алфавітним порядком їх імен чи стимуляторів, у порядку зростання значень або у порядку протилежному вказаним. Якщо сигнали не впорядковані за жодною з цих ознак, то їх розташування можна обирати довільно, перетягуючи сигнали за допомогою мишки.

Масштаб зображення регулюється кнопками , які дозволяють відповідно: збільшити масштаб вдвічі; зменшити масштаб вдвічі; вивести усю діаграму на один екран; задати у вікні  діалогу часові межі зображення на екрані.

Кнопка  включає режим Zoom, у якому можна, виділивши мишкою частину зображення, показати його на весь екран. Щоб збільшити масштаб вдвічі, тут достатньо просто клацнувши мишкою по діаграмі, а для зменшення – клацнути мишкою при натиснутій клавіші Ctrl. Крім того, в будь-якому режимі зручно збільшувати і зменшувати масштаб за допомогою клавіш "+" і "–" на додатковій клавіатурі.

Векторні сигнали справа від імені мають кнопку, що дозволяє переключатись між згорнутим (єдина діаграма для всього сигналу) і розгорнутим (окрема діаграма для кож­ного біту) способом їх відображення. Опція Properties з контекстного меню сигналу до­зволяє також обрати його колір, систему числення, в якій вказується значення вектор­ного сигналу, тощо.

3.1.1 Додавання та вилучення сигналів

Щоб розмістити сигнал на часовій діаграмі, треба відкрити закладку Structure у вікні Design Browser, виділити в структурі проекту елемент, сигнали якого ви хотіли б відобразити на часовій  діаграмі та методом drag-&-drop перетягти потрібні сигнали з нижньої частини закладки Structure у ліву частину вікна Редактора часових діаграм.

Інший спосіб розміщення сигналу на часовій діаграмі – це використання опції Add Signals з контекстного меню лівої частини вікна Редактора часових діаграм. Користуючись ним, треба виділити потрібні сигнали і натиснути кнопку Add.

Сигнали можна також додавати за допомогою команди Wave <ім‘я_сигналу>, що вводиться з клавіатури у вікно Console.

Щоб вилучити сигнал зі списку сигналів часової діаграми треба, встановивши на ньому курсор, натиснути клавішу Delete чи одноіменну опцію у контекстному меню.

3.1.2 Призначення стимуляторів

Подпись:  
Рис. 23.  Вікно вибору стимулятора

Будь-якому сигналові, присутньому на часовій діаграмі, можна надати бажаних значень, скориставшись вбудованими у програму стимуляторами. Для цього треба встановити курсор на потрібному сигналі і вибрати опцію 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.

3.1.3 Переміщення по часових діаграмах та порівняння діаграм

Переміщення по часовій діаграмі може виконуватись за допомогою лінійок прокрутки, а також кнопок:

·        , що переміщують курсор відповідно до наступної чи попередньої зміни значення виділеного сигналу;

·        , що дозволяє знайти потрібне значення виділеного сигналу;

·        , що дозволяє перейти до моменту часу, що задається у вікні діалогу;

·        , що дозволяють перейти відповідно до наступної чи попередньої закладки, що відображаються на часовій осі блакитними трикутниками, які можна встановити або зняти за допомогою кнопки   або просто, клацнувши мишкою на часовій осі. Кнопка   відміняє усі закладки.

Крім того, за допомогою кнопки , розташованої на горизонтальній лінійці прокрутки, можна отримати доступ до описаних вище переходів, а також кнопок:

·        , яка забезпечує перехід до бажаного коментаря, що був введений за допомогою кнопки ;

·        , яка забезпечує перехід до моменту, коли виявлена різниця між сигналами поточної часової діаграми та діаграми, записаної у іншому файлі.

Подпись:  
Рис. 24. Порівняння часових діаграм.
Для порівняння діаграм слід натиснути кнопку  і ввести ім'я файла іншої діаграми. Приклад відображення результату порівняння діаграм показаний на рис. 24.

Якщо сигнал даної діаграми не має відмінностей від одномінного сигналу на іншій діаграмі, то у вікні результату він відображається один раз. На рис. 24 таким є сигнал RESET.

Якщо ж ці сигнали відрізняються, то вони обидва відображаються на діаграмі поруч, причому, сигнал з іншого файла виділяється червоним кольором, а до його імені додається префікс COMP_.  Інтервали часу, у які значення сигналів не співпадають,  відмічаються вгорі жирними блакитними відрізками.

Щоб вилучити з діаграми результати порівняння можна описаним вище способом порівняти її саму з собою.

3.1.4 Виміри у часових діаграмах

Активний курсор відображається на діаграмі вертикальним червоним відрізком. Його часова координата відображається в прямокутнику біля верхнього краю відрізка (на рис. 24 це 40 ns). Значення сигналів, що відповідають поточному положенню активного курсору, відображаються на діаграмі у колонці Value. Якщо курсор проходить точно через фронт сигналу, то у таблиці вказується його значення справа від курсору.

Щоб розмістити на діаграмі ще один курсор, треба клацнути у потрібному місці правою клавішею мишки і вибрати у контекстному меню опцію Add Cursor. Якщо на діаграмі є декілька курсорів, то їх координати відображаються у прямокутниках на нижніх кінцях відрізків (рис. 25). Крім того стрілками відображаються проміжки часу від даного курсору до його найближчих сусідів. Активний курсор відображається червоним кольором, решта – синім. Щоб зробити курсор активним по ньому треба клацнути мишкою.

 Для переміщення активного курсору можна скористатися будь-яким способом, описаним у попередньому розділі, або просто клацнути мишкою по діаграмі.

Для вилучення курсору треба клацнути правою клавішею мишки по прямокутнику з його координатою, а потім натиснути у контекстному меню опцію Remove.

Подпись:  
Рис. 25. Вимірювання часових інтервалів
Ще одним засобом вимірювання часових інтервалів є застосування режиму вимірювань, що включається кнопкою . У цьому режимі можна вимірювати часові інтервали тільки між фронтами імпульсів. Курсор мишки, що підводиться до фронту, набуває зеленого кольору. У цей момент треба натиснути ліву клавішу мишки і відпустити її біля іншого фронту. У такий спосіб на рис. 25 виміряно, наприклад, часовий інтервал 40 ns між встановленням у сигналах RESET і Output значень 0 та 040.

Щоб видалити стрілку з виміром, треба у звичайному режимі, що включається кнопкою , виділити цю стрілку і натиснути клавішу Delete.

3.1.5 Редагування часових діаграм

Часові діаграми можна редагувати та зберігати у файлах для подальшого використання. Щоб приступити до редагування діаграми, слід припинити моделювання командою End Simulation з меню Simulation та натиснути кнопку , що переводить редактор у режим редагування. При цьому стає доступними виконання описаних нижче операцій.

Зміна моменту переключення (фронту) сигналу виконується аналогічно регулюванню ширини колонок у таблицях Word чи Excel. Для цього треба підвести курсор до зображення фронту сигналу (вертикального відрізку на часовій  діаграмі) так, щоб курсор набув вигляду двонаправленої стрілки, потім натиснути ліву клавішу мишки і відпустити її там, де має проходити фронт.

Аналогічним чином, підвівши курсор до горизонтального відрізку діаграми, можна підняти його вгору, або опустити вниз, замінивши тим самим значення сигналу 0 на 1 чи навпаки.

Для створення нового імпульсу, треба натиснути клавішу Shift (при цьому курсор набуде форми олівця) та клацнути мишкою по часовій діаграмі. В результаті на цьому місці буде створено імпульс невеликої ширини. Потім описаним вище способом можна відредагувати ширину та положення імпульсу на часовій осі.

Щоб виділити фрагмент часової діаграми, треба натиснути клавішу Ctrl (у результаті курсор набуде форми хрестика) натиснути ліву клавішу мишки на початку і відпустити її у кінці фрагмента, що виділяється. Фрагмент може включати як одну, так і декілька сусідніх часових діаграм.

Виділений фрагмент можна:

·        вилучити натисканням клавіші Delete (при цьому за межами виділеного фрагмента значення сигналів не зміняться, а у його межах сигнали зберігатимуть ті значення, які вони мали на початку виділеного фрагмента);

·        встановити у потрібне значення (для простих сигналів достатньо просто натиснути відповідну клавішу: 0, 1, U, X тощо, а для векторних сигналів краще скористатися опцією Fill... у контекстному меню);

·        змінити масштаб часу, вибравши у контекстному меню команду Stretch... і вказавши у вікні Scale процент "розтягування" даного фрагмента у часі (дані поза межами фрагмента при цьому не змінюються);

·        скопіювати у буфер обміну натисканням кнопки  або комбінації клавіш Ctrl+C;

·        вирізати натисканням кнопки  або комбінації клавіш Ctrl+X (у результаті фрагмент буде скопійовано у буфер обміну, а з часової діаграми - вилучено);

За допомогою кнопки  або комбінації клавіш Ctrl+V, фрагмент діаграми, що міститься у буфері обміну, може вставлятися у відмічені курсором місця інших часових діаграм, якщо дані у них належать до того самого типу. Тобто у діаграму, що відображає, наприклад, векторний сигнал можна вставити лише векторний сигнал такої ж мірності. При цьому, на відміну від вставки текстових даних, присутні у діаграмі дані не зсуваються далі вправо, а заміняються даними, що вставляються з буфера.

Запис результатів редагування часової діаграми у файл виконується за допомогою команд Save та Save as... з меню File.

Крім цього, дані з часової діаграми можуть бути експортовані у файли інших форматів за допомогою команди Export Waveforms... з меню Waveform. У вікні діалогу, що після цього відкривається, треба вказати ім'я файла, а також вибрати його тип та групу сигналів, що експортуватимуться.

Тип файла може бути або VHDL Process (*.VHS), що містить опис сигналів мовою VHDL у вигляді процесу, що їх формує, або Waves vector (*.VEC), що містить опис сигналів у вигляді таблиці, де кожна зміна значень сигналів представлена одним рядком, у якому вказані значення сигналів і час, що минув від попередньої зміни та від початку моделювання.

При виборі групи сигналів, що експортуватиметься, існують такі альтернативи: All input ports – усі вхідні порти, All ports   усі порти, All signals – усі сигнали та Selected signals вибрані сигнали.

3.2 Інші вікна перегляду результатів моделювання

Крім Редактора часових діаграм, Active-HDL має інші засоби відображення результатів моделювання проекту.

3.2.1 Вікно List

Вікно List, як і Редактор часових діаграм, містить інформацію про зміну у часі значень сигналів проекту, (рис. 26). Але, на відміну від Редактора часових діаграм, у вікні 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.

3.2.2 Вікно Watch

Подпись:  
Рис. 27.  Вікно Watch
Вікно 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.

3.2.3 Вікно Process

Подпись:  
Рис. 28. Вікно Process
Вікно Process (рис. 28) від­кривається за допомогою опції Processes у меню View і відобра­жає стан процесів під час моделю­вання. Отже програма моделю­вання перед цим має бути активі­зованою. Якщо це не так, то її слід попередньо активізувати коман­дою Initialize Simulation з меню Simulation.

Подпись:  
Рис. 29. Вікно Call Stack
У колонці Label відображає­ться мітка, якою у програмі помі­чено процес, або номер рядка для процесів без мітки. Колонка Hier­archy path вказує на місце про­цесу в ієрархії проекту, а колонка Status містить інформацію про його стан. Як відомо, будь-який процес може знаходи­тись або в стані очікування (Wait), або у активному стані (Ready), тобто у стані готовому для виконання в поточному циклі моделювання. Активні процеси завжди відображаються у верхній частині вікна, а процеси у стані очікування можуть взагалі не відображатись, якщо в контекстному меню даного вікна вибрати опцію Show active.

3.2.4 Вікно стеку викликів - Call Stack

Вікно стеку викликів Call Stack дозволяє спостерігати за викликами підпрограм під час моделювання. У верхній  частині вікна (рис. 29) відображається ім'я поточної підпрограми (процесу), а у самій таблиці – імена, типи і поточні значення формальних параметрів, а також локальних змінних, констант і файлів, оголошених у даній підпрограмі.

3.2.5 Вікно потоку даних - Data Flow

Вікно потоку даних дозволяє наочно, в графічному вигляді відображати зв'язок між сигналами і процесами проекту, що моделюється. Воно викликається за допомогою опції Data Flow в меню View і має дві форми відображення інформації.

Відображення відносно процесу (рис. 30) – це малюнок, у якому даний процес зображено прямокутником. Лінії, що підведені до нього зліва, відповідають вхідним сигналам цього процесу, а лінії справа – його вихідним сигналам.

Подпись:  
Рис. 30. Вікно потоку даних. Відображення відносно процесу

Відображення відносно сигналу (рис. 31) має вигляд вертикального відрізка, яким позначається даний сигнал. Лінії, що підведені до нього зліва, показують які процеси беруть участь у формуванні даного сигналу, а лінії справа – які процеси використовують даний сигнал як вхідний.

Клацнувши мишкою по назві процесу, переходять до відображення відносно даного процесу, а клацнувши по назві сигналу, – до відображення відносно даного сигналу.

В обох формах відображення поряд з іменами сигналів вказуються їх поточні значення. 

Імена процесів і сигналів подаються з префіксами, що вказують на їх місце у ієрархії модулів проекту, наприклад: /CLKсигнал CLK з кореневого модуля проекту, UUT/CNT/line_27процес, що описаний починаючи з 27-го рядка у модулі CNT, що входить до складу модуля UUT. У відображеннях відносно процесу, префікси сигналів опускаються, якщо вони співпадають з префіксами даного процесу. Наприклад на рис. 30
Подпись:  
Рис. 31. Вікно потоку даних. Відображення відносно сигналу

сигнали, що вказані без префіксів: CLK, RESET, Q, фактично є сигналами, що мають такий самий префікс, як і процес, а саме UUT/CNT/.

Імена сигналів є локальними іменами модуля. Через це той самий сигнал може по-різному позначатись у різних модулях проекту. Це добре видно на відображеннях відносно процесу. Наприклад з рис. 30 випливає, що  сигнал Q у поточному модулі UUT/CNT є те саме, що і сигнал Internal з модуля UUT.

Опція View Source з контекстного меню, що викликається при натисканні правої клавіші мишки на імені сигналу чи процесу, дозволяє швидко переходити від вікна потоку даних до опису цих сигналів та процесів у програмах. Подібні переходи до програм і до відображень потоку даних можливі і з вікна перегляду проектів Design Browser.

Вікно потоку даних запам'ятовує відображення, які ви переглядали. Це дає змогу користуючись кнопками  повертатись відповідно до попереднього чи наступного відображення, подібно до перегляду web-сторінок у Internet.

3.3 Моделювання методом ручного стимулювання

Щоб виконати моделювання методом ручного стимулювання входів треба:

¨      проініціалізувати моделюючий пристрій 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.

3.4 Моделювання на Випробувальному стенді - Test Bench

Розглянуте вище ручне стимулювання є найбільш простим і швидким методом моделювання проектів. Воно може застосовуватись до будь-якого сигналу чи порту в ієрархії проекту. Це зручний за­сіб відлагодження процесів низького рівня. Проте його недоліками є те, що стимулятори не можуть застосовуватись у більш складних процедурах моделювання, наприклад та­ких, що включають читання файлів, тощо. Крім того стимулятори є частиною самого Active-HDL, а не розроблюваного проекту, тобто – в інші середовища розробки проектів вони не переносяться.

Вище вже відзначалось, що моделювання проектів – це процес аналогічний тесту­ванню програм. За цієї аналогії ручному стимулюванню відповідає таке тестування, де підготовку наборів вхідних даних для тестів та аналіз результатів їх виконання забезпечує сам програміст.

Відомо, що більш досконалою формою тестування є розробка спеціальних програм­них модулів, які генерують вхідні дані для програм, що підлягають тестуванню, та аналі­зують результати, які ті виробляють. Ці програмні модулі є важливою складовою частиною проекту. Вони використовуються щоразу після внесення до проекту змін і до­зволяють швидко і в повному обсязі випробовувати нові версії програм.

Подпись:  
Рис. 32.  Модель випробувального стенда

При розробці проектів на VHDL, роль вказаних службових модулів виконують файли, що називаються Файлами випробувального стенда. Зазначимо, що у стандарті мови VHDL є ряд функцій і мов­них конструкцій, розробле­них спеціально для моделю­вання. Дані для моделю­вання можна читати з текс­тового файла, створювати окремі про­цеси, що управ­ляють вхідними портами і т.п.

Типовий спосіб побу­дови випробувального стенда Test bench (рис. 32) полягає в створенні додаткових VHDL-файлів, які трактують проект, що моделюється, як компо­нент UUT (Unit Under Test – Піддослідний пристрій) і включають також програму Гене­ратор стимулів (Stimulus Generator), що виробляє тес­тові вектори, а також програму Ве­рифікатор (Verifier), що аналізує результати моделювання.

Така методологія забезпечує найбільш повну перевірку проекту при мінімальній вза­ємодії з користувачем.

Розрізняють три конфігурації випробувальних стендів.

¨      У автономній конфігурації (off-line configuration) тестові вектори і еталони верифіка­тора записані у файлі, отже моделювання проекту зводиться до подачі на вхід UUT сигналів, що зчитуються з файла і порівняння вихідних сигналів UUT з да­ними у файлі.

¨       У неавтономній конфігурації (on-line configuration) замість еталонного файла засто­совують еталонний піддослідний пристрій UUTе, на вхід якого подають ті самі тес­тові вектори, що і на вхід основного UUT. При цьому функція верифікатора зводи­ться до порівняння сигналів на виходах основного і еталонного піддослідних при­строїв.

¨      Якщо у двох попередніх конфігураціях послідовність тестових векторів, що подає­ться на вхід UUT, відома наперед, то у адаптивній конфігурації наступні тестові век­тори вибираються з урахуванням результатів попереднього тестування та стану са­мого піддослідного пристрою.

3.4.1 Створення і використання випробувальних стендів

З огляду на стандартну структуру випробувального стенда 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.

3.5 Макрокоманди моделювання

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 с.

Інтернет

1.      www.aldec.com

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

 


 



[1] В програмі Active-HDL версії 3.5 можливість використання мови Verilog ще не реалізована.

[2] За іншою термінологією елементи називають також символами.

[3] У Active-HDL такі елементи називаються Fub.

Moodle Appliance - Powered by TurnKey Linux