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

F Примітка. Для обчислення кількості розрядів пристроїв широко застосовується операція LOG2. Тому якщо її підсумок є неціле число, підсумок автоматично округляється до більшого цілого числа. Приклади: LOG2(8) = 3; LOG2(9) = 4 – демонструють, зокрема, розрядність повного дешифратора 3:8 і неповного 4:9. Для операцій LOG2 і DIV застосовуються також оператори CEIL (стеля) і FLOOR (підлога). CEIL – те саме, що й зазначене округлення до більшого цілого числа: CEIL(LOG2(9)) = 4, а FLOOR – округлення до меншого цілого числа: FLOOR(LOG2(9)) = 3.

3.1.6 Основні складники проекту текстового редактора

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

Структурно проект (Design) складається із секцій (Section), багато з яких в свою чергу поділяються на оператори або підсекції (Statement). Кожний такий структурний блок (їх біля трьох десятків) має суворо відповідати правилам свого синтаксису. Аби пришвидшити складання текстового файла (з розширенням .tdfабо TDF-файла) і, головним чином, уникнути чи зменшити кількість синтаксичних помилок, введення здійснюється за допомогою шаблонів (Template) для певної мови, зокрема, мови AHDL (AHDL-Template). У шаблоні позначено комірки для введення тексту і, що є важливим, містяться необхідні за синтаксисом розділові знаки. Помилки виявляються під час компіляції і локалізуються процесором повідомлень (Message Processor).

Обов’язковими для кожного TDF-файла є дві секції:секція підпроекту (Subdesign Section), призначена для оголошення вхідних та вихідних портів, і логічна секція (Logic Section), яка визначає залежність вихідних сигналів від вхідних з використанням інших змінних, оголошених у файлі. Логічна секція складається з низки операторів, найважливішими серед яких є операторбулевих рівнянь (Boolean Equation), оператор таблиці відповідності(Truth Table Statement), умовний оператор (If Then Statement ) таоператор вибору (Case Statement). Оператори If Then і Case подібні і в багатьох випадках може використовуватися будь-який з них. Проте в операторі If Then діють вирази, а в операторі Case – константи, які порівнюються з єдиним виразом умови.

Інші секції використовуються, здебільшого, залежно від вибраної елементної бази та вибраних засобів проектування. Оператор прототипу функцій (Function Prototype Statement) у текстовому файлі відіграє роль, аналогічну символу в графічному файлі з тими ж самими іменами входів і виходів. Наприклад, прототип макрофункції дешифратора 74139 на ІС серії 74 повторює його символ (див. рис. 3.3): FUNCTION 74139 (g1n, b1, a1, g2n, b2, a2) RETURNS (y10n, y11n, y12n, y13n, y20n, y21n, y22n, y23n); на графічних символах макрофункцій входи і виходи позначаються великими літерами, а в прототипах – маленькими, проте компілятор такої різниці не помічає.

Секція змінних (Variable Section) складається з низки підсекцій для оголошення змінних різного типу. Змінна мовою програмування високого рівня може означати як просто сигнал, так і деякий внутрішній щодо програмного забезпечення логічний модуль, наприклад, макрофункцію з бази даних або символ, створений користувачем. Підсекція оголошення вузла (Node Declaration) дозволяє ввести, зокрема, проміжні вузли (сигнали, особливо якщо вони використовуються неодноразово) для застосування в логічних рівняннях з метою їх спрощення. Підсекціяоголошення модуля (Instance Declaration) дозволяє розрізнити окремі екземпляри функціональних вузлів, кожному з них надається символічне власне ім’я, наприклад, двом дешифраторам dc1 та dc2.

Булеві вирази компонуються мовою AHDL за допомогою операторів, черговість виконання яких визначається пріоритетом (табл. 3.3).