Лабораторний практикум з дослідження цифрових пристроїв на основі САПР MAX+PLUS II, страница 30

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

3.2.5.1 Засвоїти включення макрофункції: у новому проекті 3XX_7macro створити текстовий файл (.tdf), відтак виконати такі дії (для наочності див. файл 3ХХ_7seg.gdf).

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

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

2) У секції Function Prototype Statement ввести прототип макрофункції дешифратора (можна скопіювати з довідки Help).

FUNCTION 74139 (g1n, b1, a1, g2n, b2, a2)

        RETURNS (y10n, y11n, y12n, y13n, y20n, y21n, y22n, y23n);

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

SUBDESIGN 300_7macro                      

(

        a1, a0                       : INPUT;

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

)

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

VARIABLE

5) Вставити підсекцію оголошення зразка Instance Declaration і надати ім’я зразку (для наочності у прикладі d:\max2work\tutorial\3lab\300_7seg.gdf позначено: dc – ім’я зразка дешифратора) та через двокрапку ввести ім’я макрофункції (74139).

        dc      :    74139;

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

BEGIN

        dc.a1 = a0; dc.b1 = a1;

        a = dc.y11n; b = !dc.y10n; c = dc.y12n; d = dc.y10n;

        e = VCC;  f = VCC;  g = dc.y12n;

END;

F  Примітки:

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

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

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

< Приклад: файли d:\max2work\tutorial\3lab\300_7macro.tdf, .scf.

3.2.5.2 Засвоїти включення символу: у новому проекті 3XX_7symbol створити текстовий файл (.tdf), відтак виконати такі самі дії, як і в п. 3.2.3.2 (для наочності див. файл d:\max2work\tutorial\3lab\ 3ХХ_7seg1.gdf) із такими відмінностями:

а) у п. 3.2.5.1 до шаблону секції Function Prototype Statement ввести із заздалегідь створеного текстового файла символу 3ХХcase.tdf  (п. 3.2.4.3) назву і параметри із секції підпроекту; наприклад, із файла d:\max2work\tutorial\3lab\300case.tdf

SUBDESIGN 300case 

(

        a[1..0]                    : INPUT;

        yN[2..0]       : OUTPUT;

)

вводимо до нашого файла, дотримуючись шаблона, дані:

FUNCTION 300case(a[1..0])

        RETURNS (yN[2..0]);

б) у секції змінних так само оголошуємо зразок з іменем символу, наприклад:

VARIABLE

        dc      : 300case;

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

BEGIN

     dc.a[1..0]=a[1..0];

     a=dc.yN1; b=!dc.yN0; c=dc.yN2; d=dc.yN0; e=VCC; f=VCC; g=dc.yN2;

END;

< Приклад: файли d:\max2work\tutorial\3lab\300_7symbol.tdf, .scf.

F Примітка. У SCF-файлі дані зручно вводити у вигляді групи (шини): як звичайно виділити ділянку курсором, на палітрі натиснути кнопку групи G і в діалоговому віконці ввести значення коду в шістнадцятковій системі числення.