
- •Мова опису апаратури 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.7.2. Арифметичні оператори
У
табл. 7 перераховані арифметичні
оператори, які можуть бути використані
в логічних виразах.
Таблиця 7.
Оператор |
Приклад |
Опис |
+ (унарний) |
+1 |
Плюс |
- (унарний) |
-a[4..1] |
Мінус |
+ |
count[7..0] + delta[7..0] |
Додавання |
- |
rightmost_x[] – leftmost_x[] |
Віднімання |
Правила використання операторів додавання й віднімання:
Операндами даних операторів можуть бути групи (група змінних, група виводів модуля) і числа.
Якщо обидва операнди — групи, то вони повинні мати однакове число розрядів, що збігається із числом розрядів результату.
Якщо обидва операнди — числа, то автоматично здійснюється вирівнювання числа розрядів їхніх двійкових подань шляхом збільшення числа розрядів у двійковому поданні меншого операнда.
Якщо один операнд — число, а інший — група, то число перетвориться у двійкове число (групу двійкових розрядів). Якщо число розрядів у цій групі менше числа розрядів в іншому операнді, то вона автоматично розширюється. Якщо ж більше, то процесор повідомлень (Message Processor) пакета MAX+plus II видає повідомлення про помилку.
1.7.3. Оператори порівняння
У табл. 8 перераховані оператори порівняння, які можуть бути використані в логічних виразах.
Таблиця 8.
Оператор порівняння |
Приклад |
Опис |
= = (логічне) |
addr[19..4] = = H”B800” |
Дорівнює |
!= (логічне) |
b1 != b3 |
Нерівно |
< (арифметичне) |
fame[] < power |
Менше |
<= (арифметичне) |
money[] <= power[] |
Менше або дорівнює |
> (арифметичне) |
love[] > money[] |
Більше |
>= (арифметичне) |
delta >= 0 |
Більше або дорівнює |
Результат операції порівняння:
логічний нуль (GND), якщо умови порівняння не виконані;
логічна одиниця (VCC), якщо умови порівняння виконані.
Виділяються два типи операторів порівняння:
оператори логічного порівняння (Logical comparator);
оператори арифметичного порівняння (Arithmetic comparator).
Операндами оператора логічного порівняння можуть бути:
однорозрядні змінні й виводи модуля;
групи змінних і групи виводів модуля;
числа (у двійкових числах не повинен використовуватися символ "х" - символ невизначеного значення розряду).
При логічному порівнянні здійснюється побітове порівняння операндів, тому вони повинні мати однакове число розрядів. Якщо один операнд число, а інший - група, то число перетвориться у двійкове число (групу двійкових розрядів). Якщо число розрядів у цій групі менше числа розрядів в іншому операнді, то вона автоматично розширюється. Якщо ж більше, то процесор повідомлень (Message Processor) пакета MAX+plus II видає повідомлення про помилку.
Оператори арифметичного порівняння дозволяють порівнювати групи (змінних і виводів модуля) і числа.
При арифметичному порівнянні група інтерпретується як додатне двійкове число без знака, число розрядів в якого відповідає числу розрядів у групі. Тому операнди повинні мати однакове число розрядів. Якщо один операнд число, а іншої - група, то число перетвориться у двійкове число (групу двійкових розрядів). Якщо число розрядів у цій групі менше числа розрядів в іншому операнді, то вона автоматично розширюється. Якщо ж більше, то процесор повідомлень (Message Processor) пакета MAX+plus II видає повідомлення про помилку.