Головна

Оператори

1.7.1. Логічні оператори

У таблиці. 2 перераховано логічні оператори, використовувані в логічних виразах.

Таблиця 6

Оператор Приклад Опис
! NOT ! tob NOT tob Інверсія
& AND bread & butter bread AND butter І
!& NAND a[3..1] !& b[5..3] a[3..1] NAND b[5..3] І-НІ
# OR trick # treat trick OR treat АБО
!# NOR c[8..5] !# d[7..4] c[8..5] NOR d[7..4] АБО-НІ
$ XOR foo $ bar foo XOR bar Виключаюче АБО
!$ XNOR x2 !$ x4 x2 XNOR x4 Виключаюче АБО-НІ

Оператор інверсія (NOT) може застосовуватися до одного із трьох типів операндів:

■ Однорозрядної змінної (іменованої лінії зв'язку), однорозрядного виводу модуля, а також до константної логічної одиниці й константного логічного нуля. При цьому здійснюється інвертування аргументу операнда,

■ Групі змінних (групі іменованих ліній зв'язку), групі виводів модуля. У цьому випадку інвертується кожний член групи.

Приклад:

!(а, b[2..1]) відповідає !а, ! b2, !b1.

■ Числу. У цьому випадку інвертується кожний розряд двійкового еквівалента даного числа.

Приклад:

!9 = (!В"1001"=В"0110") = 6.

Оператори AND, NAND, OR, NOR, XOR, NXOR допускають використання наступних комбінацій операндів:

§ Обидва операнди однорозрядні: однорозрядна змінна, однорозрядний вивід модуля, логічний нуль або логічна одиниця.

§ Обидва операнди групи: група змінних або група виводів модуля. У цьому випадку логічний оператор застосовується порозрядно а, отже, операнди повинні мати однакове число розрядів, що збігається із числом розрядів результату.

Приклад:

R[4..1]=(A,B,C,D)#OP[3..0]; при цьому: R4=A#ОP3; R3=B#ОP2; R2=C#ОP1; R1=D#OP0;

§ Один операнд група (група змінних, група виводів модуля), а інший операнд однорозрядний (однорозрядна змінна, однорозрядний вивід модуля, логічний нуль, логічна одиниця). У цьому випадку однорозрядний операнд тиражується й формується група, число розрядів у якій дорівнює числу розрядів в іншому операнді. Потім до двох груп порозрядно застосовується логічний оператор.

Приклад:

R[3. . 1]=(а, b[2.. 1])&D; при цьому: R3=a&D; R2=b2&D; R1=b1&D.

§ Обидва операнди числа. Оскільки природною формою подання чисел для виконання процедури синтезу комбінаційної схеми є двійкова форма, то в цьому випадку обидва операнди розглядаються компілятором як двійкові числа (групи двійкових розрядів). Якщо для двійкового подання операндів потрібне різне число розрядів, то автоматично здійснюється нарощування числа розрядів двійкового подання меншого операнда. Логічний оператор застосовується до сформованих груп порозрядно.

Приклад:

3$14 = В"0011 $ В"1110"=В"1101"=13.

§ Один операнд число, а інший операнд або однорозрядний, або група. У цьому випадку число перетвориться у двійкове число (групу двійкових розрядів). Логічний оператор застосовується до цих груп порозрядно. Якщо число розрядів у цій групі менше числа розрядів в іншому операнді, то вона автоматично розширюється. Якщо ж більше, то процесор повідомлень (Message Processor) пакету MAX+plus II видає повідомлення про помилку.

Приклади:

R[3..1] = (a,b,c) & 3;

-- при цьому R3 = (a & B"0") = 0; R[2] = (b&B"1")=b; R[1] = с&В"1") = с.

R[3. .1]=(a,b, с) & 9. -- при цьому буде сформоване повідомлення про помилку.

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 видає повідомлення про помилку.

1.8. Пріоритет виконання операцій

У таблиці 9 зазначений пріоритет виконання (порядок виконання) операцій, використовуваних у логічних виразах.

Таблиця 9. Пріоритет виконання операцій

Пріоритет виконання Оператор Опис
- мінус
! НІ
+ Додавання
- Віднімання
= = Рівність
!= Нерівність
< Менше
<= Менше або дорівнює
> Більше
>= Більше або дорівнює
& І
!& І-НІ
$ Виключаюче АБО
!$ Виключаюче АБО-НІ
# АБО
!# НІ

Примітка: Чим менше число, що позначає пріоритет, тим вище пріоритет операнда.

1.9. Примітиви

Примітив - вбудований в пакет MAX+plus II і мову AHDL функціональний опис того або іншого внутрішнього ресурсу НВІС ПЛ фірми ALTERA .

У мові AHDL визначено два типи примітивів:

§ примітиви буферів;

§ примітиви тригерів: синхронних тригерів (Flipflop) і тригера засувки (Latch).

1.9.1. Примітиви буферів

У мові AHDL використовуються наступні примітиви буферів:

§ CARRY - буфер ланцюгового переносу;

§ CASCADE - буфер каскадного нарощування логічної функції;

§ ЕХР - буфер логічного розширювача;

§ GLOBAL - буфер глобального ланцюга поширення керуючого сигналу;

§ LCELL - буфер розміщення логічного осередку (макроосередку), що не видаляється ;

§ OPNDRN - буфер виходу з відкритим колектором;

§ SOFT - буфер розміщення логічного осередку (макроосередку), що видаляється;

§ TRI - буфер виходу зі Z станом.



  1   2   3   4   5   6   7   8   9   10   11   12   13   14   15   16   Наступна

МОВА ОПИСУ АПАРАТУРИ AHDL | Частина 1 | Сигналу (GLOBAL) | Буфер виходу з Z станом (TRI) | Parameters Statement | Include Statement | Constant Statement | Define Statement | Function Prototype Statement | Assert Statement |

© 2016-2022  um.co.ua - учбові матеріали та реферати