
- •Мова опису апаратури ahdl
- •1. Елементи мови
- •1.1. Ключові слова й ідентифікатори
- •1.2. Символи
- •1.3. Імена
- •1.4. Групи
- •1.5. Числа
- •1.6. Вирази
- •1.6.1. Арифметичні вирази
- •1.6.2. Логічні вирази
- •1.7. Оператори
- •1.7.1. Логічні оператори
- •1.7.2. Арифметичні оператори
- •1.7.3. Оператори порівняння
- •1.8. Пріоритет виконання операцій
- •1.9. Примітиви
- •1.9.1. Примітиви буферів
- •1.9.2. Буфер ланцюгового переносу (carry)
- •1.9.3. Буфер каскадного нарощування логічної функції (cascade)
- •1.9.4. Буфер логічного розширювача (ехр)
- •1.9.5. Буфер глобального ланцюга поширення управляючого
- •1.9.6. Буфер розміщення логічного осередку (lcell),
- •1.9.7. Буфер виходу з відкритим колектором (opndrn)
- •1.9.8. Буфер розміщення логічного осередку (soft),
- •1.9.9. Буфер виходу з z станом (tri)
- •1.10. Примітиви тригерів
- •2. Структура текстового опису
- •2.1. Загальна структура
- •Include Statement.
- •2.2. Розділ оголошення операторів
- •2.2.1. Title Statement
- •2.2.2. Parameters Statement
- •2.2.3. Include Statement
- •2.2.4. Constant Statement
- •2.2.5. Define Statement
- •2.2.6. Function Prototype Statement
- •2.2.7. Options Statement
- •2.2.8. Assert Statement
- •2.3. Subdesign Section
- •2.4. Variable Section
- •2.5. Logic Section
- •3. Застосування конструкцій мови
- •3.1. Логічні рівняння
- •3.2. Змінні типу node
- •3.3. Іменовані оператори
- •3.4. Групи
- •3.4.1. Одновимірні й часові групи
- •3.4.2. Двовимірні групи
- •3.5. Таблиця істинності
- •3.6. Оператор if then
- •3.7. Оператор case
- •3.8. Базові значення логічних функцій
- •3.9. Константи
- •3.10. Оператор for generate
- •3.11. Параметри
- •3.12. Оператор if generate
- •3.13. Оператор assert
- •3.14. Примітиви
- •3.15. Прототип модуля
- •Часть 1. Основы языка ahdl. М. 2005.- 50 с.
2.3. Subdesign Section
Subdesign Section (розділ опису інтерфейсу) дозволяє задати ім'я модуля й перелічити його виводи. Ім'я модуля повинно збігатися з ім'ям логічного файлу, у якому зберігається його текстовий опис. Якщо модуль є модулем верхнього рівня ієрархії, то його ім'я є й ім'ям проекту, а отже, це ім'я будуть мати і всі допоміжні файли проекту.
Приклад:
SUBDESIGN First_project
( А, В[4..0] : INPUT=VCC;
D : INPUT=GND;
С[7..1] : OUTPUT;
Е[3..2] : BIDIR; )
Ім'я файлу, у якому повинен зберігатися текстовий опис даного модуля - First_project. tdf
Правила використання розділу:
Розділ починається із ключового слова SUBDESIGN, за яким слідує ім'я модуля. Максимальна довжина імені 32 символу. Ім'я модуля повинне збігатися з ім'ям файлу, у якому зберігається його текстовий опис.
Після імені модуля слідує укладений у круглі дужки список його виводів.
Типи виводів: INPUT - вхід, OUTPUT - вихід, BIDIR - двонаправлений вивід, MACHINE INPUT - вхід імпортованих станів автомата, MACHINE OUTPUT - вихід експортованих станів автомата. Виводи MACHINE INPUT і MACHINE OUTPUT не можуть бути використані в текстовому описі верхнього рівня ієрархії, тобто при описі модуля, виводи якого є виводами НВІС.
Виводи перераховуються через кому в одному або більше рядках. Наприкінці переліку однотипних виводів ставиться двокрапка, потім ключове слово, що вказує тип виводів, і далі - крапка з комою.
Після ключового слова INPUT може бути зазначене базове значення (GND - логічний нуль, VCC - логічна одиниця) вхідного сигналу. Базове значення - значення, що буде подаватися на вхід у тому випадку, якщо він виявиться непідключеним при використанні даного модуля як компонента при описі модуля більш високого рівня ієрархії. Якщо непідключеним виявиться вхід, для якого не зазначене базове значення, то компілятор пакета MAX+plus II видасть повідомлення про помилку.
У файлі з текстовим описом даний розділ може використовуватися тільки один раз.
2.4. Variable Section
Variable Section (розділ змінних) дозволяє задавати внутрішні змінні модуля, призначені для використання в розділі опису логіки (Logic Section).
Змінна - це символічне ім'я:
лінії зв'язку;
лінії зв'язку із трьома станами;
модуля, використовуваного в текстовому описі як компонент (примітива, скінченого автомата).
Приклад:
INCLUDE halfadd. inc";
VARIABLE
a, b, c : NODE; -- a,b,c - іменовані лінії зв'язку
add : halfadd;
-- halfadd - модуль, використовуваний у даному текстовому описі -- як компонент, add - ім'я компонента.
ts_node : TRI_STATE_NODE; -- ts_node - лінія зв'язку зі Z станом
ff[3..0] : DFF; -- ff[3], ff[2], ff[1] - група змінних, що позначає тригери
АА : MACHINE OF BITS (Q1, Q2, Q3)
WITH STATES (A0=B"000",
A1=B"001", A2=B"011"); -- АА - скінчений автомат
Правила використання розділу:
Розділ починається із ключового слова VARIABLE. Далі вказується: символічне ім'я змінної, символ двокрапка, тип змінної, крапка з комою. Імена однотипних змінних можуть бути перераховані через кому.
Припустимі типи змінних: NODE - лінія зв'язку; TRI_STATE_NODE - лінія зв'язку із трьома станами; модуль більш низького рівня ієрархії; примітив; скінчений автомат; псевдонім скінченого автомата.
Розділ змінних може також містити оператор IF GENERATE, що дозволяє, залежно від значення оцінюваного в операторі арифметичного виразу, управляти заданням змінних.
У файлі з текстовим описом даний розділ може використовуватися тільки один раз.