Проектування цифрових пристроїв на основі САПР QUARTUS II: Практикум, страница 31

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

11. Оператор таблиці відповідності (Truth Table Statement)

Як і в звичайній таблиці відповідності, таблиця мовою AHDL містить комбінації вхідних змінних і значення вихідних функцій. Для частково ви­значених функцій частина вхідних наборів може подаватися за допомогою невизначених станів Х (через це символ х без індексу не можна застосову­вати в текстових файлах для позначення змінної). 

12. Умовний оператор (If Then Statement )

Оператор логічної секціїIf Then Statement (якщо, тоді) містить умову для подальшого розгалуження алгоритму роботи пристрою. За виконання цієї умови активізуються одні інструкції у вигляді списків логічних виразів, а за її невиконання – інші інструкції.

13. Оператор вибору (Case Statement)

Операторвибору (Case – випадок) містить булів вираз (у найпростішому випадку групу змінних), від значень якого залежить дія пристрою. У тілі оператора наводяться постійні значення цього виразу і інструкції (булеві рівняння, інші оператори, наприклад, таблиця відповідності), які діють за наведених значень. За невиконання жодного з цих значень можуть подаватися альтернативні інструкції.

Оператори If Then і Case подібні і в багатьох випадках може використовуватися будь-який з них. Проте в операторі If Then діють вирази, а в операторі Case – константи, які порівнюються з єдиним виразом умови.

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

Операнди логічних рівнянь з’єднуються логічними операторами, черговість виконання яких визначається пріоритетом (табл. 5.1).

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

Приклад:

,

де

Таблиця 5.1

Операція

Пріоритет

Приклад

Знак

Назва

Булів вираз

Вираз AHDL

! (оклику)

НЕ (NOT)

1

!x1

& (амперсанд)

І (AND)

2

x1 & x2

!&

І-НЕ (NAND)

2

x1 !& x2

$ (долар)

Виключне АБО

 (XOR)

3

x1 $ x2

!$

Виключне АБО-

НЕ (XNOR)

3

x1 !$ x2

# (фунт)

АБО (OR)

4

x1 # x2

!#

АБО-НЕ (NOR)

4

x1 !# x2

У складних випадках вираз доцільно поділити на частини, завдяки чому спрощується запис мовою AHDL:

y1 = a !& (x2 # (b !# c)) = (x1 # x3 # !x4) !& (x2 # (x1&x4 !# x1$x4)).

Останній вираз зв’язує безпосередньо вихідний порт (функцію) y1 з вхідними портами (змінними) x1... x4, які є зовнішніми виводами мікросхеми і оголошуються в секції підпроекту (Subdesign Sektion). Проте з метою уникнути помилок і забезпечити легкість для читання складні вирази можна вводити до логічної секції (Logic Sektion) частинами

a = x1 # x3 # !x4;  b = x1 & x4;  c = x1 $ x4; y1 = a !& (x2 # (b !# c))

за умови, що проміжні вузли a, b, c було попередньо оголошено оператором Node Declaration секції змінних Variable Section. 

Змінити порядок виконання операцій можна, як звичайно, за допомогою дужок. Припускається також ліву частину зображати в інверсному вигляді, наприклад,

!y1 = a & (x2 # (b !# c)).

ЛАБОРАТОРНЕ ЗАВДАННЯ

1. Засвоїти основи створення проекту за його текстового введення апаратною мовою АHDL.

1.1 Засвоїти синтез із використанням основних секцій і оператора оголошення вузлів на прикладі виконання завдання 5.1 (як зразок див. файл 500node.tdf):

а) дати ім’я новому проекту: 5XXnode у власній теці;