Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основи мови AHDL_частина1.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
669.7 Кб
Скачать

1.6.2. Логічні вирази

Логічні вирази (Boolean expressions) містять операнди, об’єднані:

  • логічними операторами;

  • арифметичними операторами;

  • операторами порівняння.

Логічні вирази використовуються:

  • у логічних рівняннях (Boolean Equations);

  • у логічних рівняннях, що задають керуючі сигнали (Boolean Control Equations);

  • в операторі CASE;

  • в операторі IF THEN.

1.7. Оператори

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