
- •Мова опису апаратури 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 с.
1.8. Пріоритет виконання операцій
У таблиці 9 зазначений пріоритет виконання (порядок виконання) операцій, використовуваних у логічних виразах.
Таблиця 9. Пріоритет виконання операцій
Пріоритет виконання |
Оператор |
Опис |
1 |
- |
мінус |
1 |
! |
НІ |
2 |
+ |
Додавання |
2 |
- |
Віднімання |
3 |
= = |
Рівність |
3 |
!= |
Нерівність |
3 |
< |
Менше |
3 |
<= |
Менше або дорівнює |
3 |
> |
Більше |
3 |
>= |
Більше або дорівнює |
4 |
& |
І |
4 |
!& |
І-НІ |
5 |
$ |
Виключаюче АБО |
5 |
!$ |
Виключаюче АБО-НІ |
6 |
# |
АБО |
6 |
!# |
НІ |
Примітка: Чим менше число, що позначає пріоритет, тим вище пріоритет операнда.
1.9. Примітиви
Примітив - вбудований в пакет MAX+plus II і мову AHDL функціональний опис того або іншого внутрішнього ресурсу НВІС ПЛ фірми ALTERA .
У мові AHDL визначено два типи примітивів:
примітиви буферів;
примітиви тригерів: синхронних тригерів (Flipflop) і тригера засувки (Latch).
1.9.1. Примітиви буферів
У мові AHDL використовуються наступні примітиви буферів:
CARRY — буфер ланцюгового переносу;
CASCADE — буфер каскадного нарощування логічної функції;
ЕХР — буфер логічного розширювача;
GLOBAL — буфер глобального ланцюга поширення керуючого сигналу;
LCELL — буфер розміщення логічного осередку (макроосередку), що не видаляється ;
OPNDRN — буфер виходу з відкритим колектором;
SOFT — буфер розміщення логічного осередку (макроосередку), що видаляється;
TRI — буфер виходу зі Z станом.
1.9.2. Буфер ланцюгового переносу (carry)
Буфер ланцюгового переносу дозволяє явно вказати компіляторові на необхідність використання схеми ланцюгового переносу логічного елемента НВІС сімейства FLEX 6000, FLEX 8000, FLEX 10K |1].
Буфер має один вхід (IN) і один вихід (OUT). Правила використання буфера ілюструються на рис. 1.
Відмітимо, що:
вихідний сигнал буфера може надходити на вхід тільки одного логічного елемента;
чотиривходова таблиця перекодувань (LUT) логічного елемента, на вхід якого надходить сигнал з виходу буфера CARRY, перетвориться компілятором у дві тривходові таблиці. Тому такий логічний елемент має ще два інформаційних входи;
якщо в логічному елементі використовуються дві тривходові таблиці перекодувань, то вихід другої таблиці повинен подаватися на вхід наступного буфера CARRY;
якщо буфер CARRY використовується неправильно, то компілятор пакета ігнорує його, а процесор повідомлень (Message Processor) видає попередження.
Рис.1.
1.9.3. Буфер каскадного нарощування логічної функції (cascade)
Буфер каскадного нарощування дозволяє явно вказати компіляторові на необхідність використання схеми каскадного нарощування логічного елемента НВІС сімейств FLEX 6000, FLEX 8000, FLEX 10K. Буфер має один вхід (IN) і один вихід (OUT). Використання буфера ілюструються на рис. 2.
Рис.2.
Відмітимо, що:
на вхід буфера CASCADE повинен надходити сигнал з виходу двовходового елемента «І» або «АБО»;
вихідний сигнал буфера CASCADE повинен подаватися на вхід одного двовходового елемента «І», чи «АБО», на другий вхід якого повинен надходити сигнал з виходу таблиці перекодувань даного логічного елемента;
ланцюжок каскадного нарощування повинен бути логічно однорідний, тобто містити або двовходові елементи «І», чи «АБО». Дане правило визначається вимогам, що і в НВІС ПЛ;
апаратно реалізовані схеми 2І. Отже, схема 2АБО буде перетворена в схему 2І за законом де Моргана;
якщо буфер CASCADE використовується неправильно, то компілятор пакета ігнорує його, а процесор повідомлень (Message Processor) видає попередження.