
- •Мова опису апаратури 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.4. Групи
Група - набір однотипних змінних або виводів. Порядковий номер змінної (виводу) у групі - індекс. Максимальне число змінних (виводів), об'єднаних в одну групу, не повинне перевищувати 256. У мові AHDL визначені три типи груп:
одновимірні (Single-range);
двовимірні (Dual-range);
послідовні (Sequential) або, що за змістом більш точно, часові.
Одновимірні групи задають, указуючи:
ім'я групи (символічне ім'я або ім'я виводу);
діапазон зміни індексів групи.
Двовимірні групи задають, указуючи:
ім'я групи (символічне ім'я або ім'я виводу);
пари діапазонів зміни індексів.
Послідовні (часові) групи задають списком, укладеним у круглі дужки. Елементами списку можуть бути змінні, виводи модуля, одновимірні групи, двовимірні групи. Елементи списку відділяються один від одного комами.
Індекси одновимірних і двовимірних груп повинні бути цілими додатними числами. Діапазон зміни індексів вказується в наступному форматі:
[ границя А.. границя В ].
Кожна із границь може бути визначена: числом, арифметичним виразом, константою або параметром.
Типовий порядок задання індексів - спадна зліва направо послідовність: границя А - більше ціле, границя В - менше. Якщо ж вони задані в зростаючій зліва направо послідовності або ж у рамках одного логічного файлу, використовуються обидва способи задання індексів, то рекомендується встановити опцію BITO=MSB або BITOANY відповідно. У протилежному випадку компілятор видасть попередження.
Приклади:
А[5. .0] - одновимірна група. Індекси задані спадною, зліва направо, послідовністю. Члени групи А5, А4, A3, А2, А1, А0.
CONSTANT UPPER=H"4"; B[UPPER..1] - одномірна група. Верхня границя діапазону зміни індексів визначена константою. Індекси задані спадною, зліва направо, послідовністю. Члени групи В4, ВЗ, В2, В1.
С[2*2. .0][3. .2] - двовимірна група. Верхня границя діапазону зміни першої групи індексів задана арифметичним виразом. Індекси задані спадною, зліва направо, послідовністю. Члени групи С43, С42, СЗЗ, С32, С23, С22, С13, С12, С0З, С02.
D[1..4] - одновимірна група. Індекси задані зростаючою зліва направо послідовністю. Члени групи: D1, D2, D3, D4.
(А, Е[2.. 1], F); - часова група. Члени групи: А, Е2, Е1, F.
1.5. Числа
Мова AHDL допускає можливість використання десяткових, двійкових, вісімкових та шістнадцяткових чисел. Правила задання чисел:
Десяткове число - сукупність цифр від 0 до 9.
Двійкове число - В "сукупність символів 0, 1, х", або b "сукупність символів 0, 1, х".
Вісімкове число - О "сукупність цифр від 0 до 7", або о "сукупність цифр від 0 до 7", або Q "сукупність цифр від 0 до 7", або q "сукупність цифр від 0 до 7".
Шістнадцяткове число - Н "сукупність цифр від 0 до 9 і букв від А до F", або h "сукупність цифр від 0 до 9 і букв від А до F", або X "сукупність цифр від 0 до 9 і букв від А до F", або х "сукупність цифр від 0 до 9 і букв від А до F".
Приклади:
В "10x01"; х "А1"; О"73".
Число не може бути присвоєно однорозрядній змінній або виходу. Замість числа варто використовувати константну одиницю (b”1” або VCC) або константний нуль (b"0", або GND).
Приклади:
out = b”1”; -- правильне присвоєння
out = 0; -- неправильне присвоєння
out = GND. -- правильне присвоєння.