За допомогою логічних рівнянь здійснюється зв’язок між вихідними і вхідними сигналами через всі примітиви, макрофункції, мегафункції та інші складники проекту. Ліва сторона рівняння містить сигнали, що визначаються логічним виразом правої сторони (який у найпростішому випадку може бути змінною).
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 у власній теці;
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.