
- •Мова опису апаратури 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.6. Вирази
У мові AHDL визначені два типи виразів (Expressions):
Арифметичні вирази (Arithmetic Expressions);
Логічні вирази (Boolean Expressions).
1.6.1. Арифметичні вирази
Арифметичні вирази використовуються для задання:
позначуваного виразу в операторі позначення (Define Statement);
констант в операторі задання констант (Constant Statement);
границь діапазону зміни індексів одновимірних і двовимірних груп;
границь діапазону зміни внутрішньої змінної в операторі FOR GENERATE;
оцінюваного вирази в операторах IF GENERATE, ASSERT.
Приклади:
DEFINE Min (a,b) = ((a<b) ? a:b); -- ((a<b) ? a:b) - арифметичний вираз.
CONSTANT Const = 1+2DIV3+LOG2(256); -- 1+2DIV3+LOG2(256) – арифметичний вираз;
A[2+4^2..3-2] : INPUT; -- 2+4^2 і 3-2 – арифметичний вираз.
Значення арифметичних виразів оцінюється й підставляється компілятором на етапі перевірки синтаксису проекту і тому для реалізації не потрібні логічні ресурси НВІС ПЛ. У табл. 5 перераховані арифметичні, логічні оператори й оператори порівняння, які можуть використовуватися в арифметичних виразах Так само в табл. 5 зазначений пріоритет виконання операторів: чим менше число, тим вище пріоритет.
Результат арифметичного виразу повинен бути цілим додатним числом. У протилежному випадку він, за замовчуванням, округляється до найближчого більшого цілого.
Таблиця 5.
Оператор |
Приклад |
Опис |
Пріоритет виконання |
+ (unary) |
+1 |
Плюс |
1 |
-(unary) |
-1 |
мінус |
1 |
! |
!a |
Заперечення |
1 |
^ |
a^2 |
Степінь |
1 |
MOD |
4 MOD 2 |
Модуль |
2 |
DIB |
4 DIV 2 |
Ділення |
2 |
* |
a*2 |
Множення |
2 |
LOG2 |
LOG(4-3) |
Логарифм за основою 2 |
2 |
+ |
1+1 |
Додавання |
3 |
- |
1-1 |
Віднімання |
3 |
= =(numeric) |
5= =5 |
Рівність чисел |
4 |
= = (string) |
“a”= = “b” |
Рівність рядків |
4 |
!= |
5!=4 |
Не дорівнює |
4 |
> |
5>4 |
Більше |
4 |
>= |
5>=5 |
Більше або дорівнює |
4 |
< |
a<b+2 |
Менше |
4 |
<= |
a<=b+2 |
Менше або дорівнює |
4 |
& або AND |
a&b або a AND b |
І |
5 |
!& або NAND |
1 !& 0 або 1 NAND b |
І-НІ |
5 |
$ або XOR |
1 $ 1 або 1 XOR 1 |
Виключаюче АБО |
6 |
!$ або XNOR |
1 !$ 1 або 1 XNOR 1 |
Виключаюче АБО-НІ |
6 |
# або OR |
a # b або a OR b |
АБО |
7 |
!# або NOR |
a!# b або a NOR b |
АБО-НІ |
7 |
? |
(5<4) ? 3:4 |
Тернарна операція |
8 |
Крім того, у мові AHDL визначені дві функції, які можуть використовуватися в арифметичних виразах для явного задання правила округлення:
CEIL — округлення до найближчого більшого цілого;
FLOOR — округлення до найближчого меншого цілого.
Приклади:
CEIL (LOG2(255)) = 8.
FLOOR (5DIV3) = 1.