Проектування цифрових пристроїв на основі САПР QUARTUS II: Практикум, страница 35

в) у необов’язковій частині WHEN OTHERS (коли інше) після стрілки – значення функцій за інших значень виразу (не перелічених у п. б);

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

Приклад: 500case.tdf, .vwf.

TITLE  "Мультиплексор 3:1 (оператор вибору)";

SUBDESIGN 500case 

(

        a[1..0], d[2..0]        : INPUT;

        y                            : OUTPUT;

)

BEGIN

      CASE a[] IS

WHEN 0 => y=d[0];

     WHEN 1 => y=d[1];

WHEN 2 => y=d[2];       

WHEN OTHERS => y=X;

END CASE;

END;

2. Засвоїти запровадження макрофункцій, символів та мегафункцій до проекту за його текстового введення.

2.1 Засвоїти включення до проекту макрофункції (на прикладі виконання завдання 5.5): створити новий проект 5XXmacro і однойменний текстовий файл (.tdf) із включенням його до проекту, відтак виконати такі дії (для наочності див. графічний файл 3ХХ_7seg.bdf, схема 1 з лаб. роботи №3).

а) ввести заголовок Title Statement (нижче подається приклад).

TITLE "Спец. дешифратор 7-сегментного коду на макрофункції";

б) до шаблону секції Function Prototype Statement вставити прототип макрофункції двійкового дешифратора (описати використовувані входи і виходи згідно із синтаксисом мови безпосередньо за графічним символом або повністю скопіювати з довідки Help пакета MAX+PLUS II).

FUNCTION 74139о (g1n, b1, a1)

        RETURNS (y10n, y11n, y12n, y13n);

в) у секції Subdesign Section повторити ім’я проекту 5XXmacro та оголосити вхідні і вихідні порти.

SUBDESIGN 500macro

(

        a1, a0                             : INPUT;

        a, b, c, d, e, f, g, dp        : OUTPUT;

)

г) ввести секцію змінних Variable Section.

VARIABLE

д) вставити підсекцію оголошення зразка Instance Declaration і надати ім’я зразку (для наочності у прикладі 300_7seg.bdf позначено: dc – ім’я зразка дешифратора) та через двокрапку ввести ім’я макрофункції (74139о).

        dc      :    74139о;

е) ввести логічний блок Logic Section, між ключовими словами (BEGIN та END;) розташувати курсор (з відступом Tab), вставити підсекцію Boolean Equation та з'єднати рівняннями зразок функції з оголошеними портами INPUT і OUTPUT.

BEGIN

        dc.a1 = a0; dc.b1 = a1; a=!dc.y11n; b=!dc.y11n # !dc.y12n;

        c=!dc.y12n; d=!dc.y10n; e=GND; f=GND; g=!dc.y12n; dp=VCC;

END;

FПримітки:

1. Логічні зв’язки між виходами та входами макрофункції містяться в її прототипі (п. 2.1.2), тому в булевих рівняннях достатньо лише з'єднати входи і виходи зразка, що репрезентує макрофункцію в проектованому пристрої, з вхідними і вихідними портами пристрою. Входи і виходи зразка мають такі самі назви, як у макрофункції, але позначаються через крапку після імені зразка. У лівій частині рівнянь ставляться невідомі величини, а в правій – відомі, задані вхідними портами INPUT або визначені у прототипі (у нас – yі). У разі потреби, додаткові з'єднання виконуються через зовнішні відносно макрофункції логічні операції, наприклад, інвертор на виході: a = !dc.y11n.

2. Імена макрофункції та її параметрів мають строго відповідати формату: FUNCTION <ім’я функції> (вхідні порти через кому) RETURNS (вихідні порти через кому) <крапка з комою>, про який можна дізнатися з прототипу функції в довідці пакета MAX+PLUS II (Help > Old-Style Macrofunctions > Категорія > Iм'я макрофункції > AHDL Function Prototype) або з графічного файлу в тому ж пакеті (натиснути кнопку В2 по символу > Edit Ports/Parameters > Help on “Iм'я макрофункції” > AHDL Function Prototype).

ж) виконати компіляцію, функціональне моделювання і переконатися в правильності проектування.

Приклад: файли 500macro.tdf, .vwf.

2.2 Засвоїти включення до проекту символа (на прикладі виконання завдання 5.6): створити новий проект 5XXsymb і однойменний текстовий файл (.tdf), включити до проекту цей файл і текстовий файл символа 5ХХtab.tdf  та виконати такі самі дії, як і в п. 2.1 (для наочності див. графічний файл 3ХХ_7seg.bdf, схема 2 з лаб. роботи №3) із такими відмінностями: