Лабораторна робота №7
Тема:Опис логічних схем з допомогою мови AHDL в середовищі MAX+plus II
Конструкції мови ahdl»
Мета роботи: знайомство з мовою опису апаратури AHDL і правилами опису логічних схем в середовищі MAX+plus II.
1. Знайомство з мовою опису апаратури ahdl Теортичні відомості
Мова AHDL розроблена фірмою ALTERA та призначена для опису комбінаційних і послідовних логічних пристроїв, групових операцій, цифрових автоматів (state machine) і таблиць істинності з урахуванням архітектурних особливостей ПЛІС фірми ALTERA. Вона повністю інтегрується з системою автоматизованого проектування ПЛІС MAX+PLUS ІІ. Файли опису апаратури, написані на мові AHDL, мають розширення *.tdf (text design file). Для створення tdf-файлу можна використовувати, як текстовий редактор системи MAX+PLUS II, так і будь-який інший. Проект, виконаний у вигляді tdf-файлу, компілюється, відлагоджується і використовується для формування файлу програмування чи завантаження ПЛІС фірми ALTERA.
Оператори та елементи мови AHDL є достатньо потужним та універсальним засобом опису алгоритмів функціонування цифрових пристроїв зручним у використанні. Мова опису апаратури AHDL дає можливість створювати ієрархічні проекти в рамках однієї цієї мови або ж в ієрархічному проекті використовувати як tdf-файли, розроблені на мові AHDL, так і інші типи файлів.
При розподілі ресурсів пристроїв розробник може користуватися командами текстового редактора або операторами мови AHDL для того, щоб зробити призначення ресурсів і пристроїв. Крім того, розробник може тільки перевірити синтаксис або виконати повну компіляцію для відладки і запуску проекту. Будь-які помилки автоматично виявляються процесором повідомлень і висвічуються у вікні текстового редактора.
Елементи мови AHDL. Зарезервовані ключові слова.
Зарезервовані ключові слова використовуються для наступних цілей:
-
для позначення початку, кінця та переходів в оголошеннях мови AHDL;
-
для позначення визначених констант, тобто GND і VCC.
Ключові слова можна використовувати як символічні імена, тільки якщо вони розміщені в одинарних лапках ('). Їх можна також використовувати в коментарях.
Для того, щоб одержати контекстну допомогу по ключовому слову необхідно переконатися, що файл збережений з розширенням *.tdf, потім натискати одночасно дві кнопки Shift+F1 у вікні текстового редактора Text Editor і клацнути лівою кнопкою миші на ключовому слові.
ALTERA рекомендує всі ключові слова набирати великими буквами.
Список всіх зарезервованих ключових слів мови AHDL приведений в таблиці 2.1
Символи
Нижче в таблиці 2.2 приведені символи, що мають певне значення в мові AHDL. В цей перелік не включені символи, що використовуються в булевих виразах як оператори і для операцій порівняння.
Таблиця 2.1- Зарезервовані ключові слова мови AHDL
FUNCTION |
AND |
OTHERS |
GLOBAL |
|
OUTPUT |
|
CASE |
BEGIN |
TABLE |
GND |
JKFFE |
RETURNS |
|
BITS |
BURIED |
SRFFE |
INPUT |
NCLUDE |
SOFT |
|
DFF |
BIDIR |
VCC |
IF |
NODE |
SRFF |
|
DFFE |
CARRY |
WHEN |
IS |
NOR |
STATES |
|
ELSE |
CASCADE |
WITH |
JKFF |
NOT |
SUBDESIGN |
|
END |
CLIQUE |
XNOR |
LATCH |
OPTIONS |
TFF |
|
EXP |
CONNECTED_PINS |
XOR |
LCELL |
OR |
TFFE |
|
CONSTANT |
DEVICE |
MACHINE |
NAND |
THEN |
VARIABLE |
|
DEFAULTS |
ELSIF |
MACRO |
OF |
TITLE |
X |
|
DESIGN |
|
MCELL |
|
TRI |
|
|
Таблиця 2.2 - Символи в мові AHDL
Символ |
Функція |
|
_ (підкреслення) |
Ідентифікатори, що використовуються користувачем |
|
-(тире) |
Символи в символічних іменах. |
|
-- (два тире) |
Починає коментар в стилі VHDL, який продовжується до кінця рядка. |
|
% (відсоток) |
Поміщає з двох сторін коментар в стилі AHDL. |
|
() (круглі дужки) |
Поміщають і визначають послідовні імена груп. Поміщають імена виводів в секції підпроекту (Subdesign Section) і в прототипах функцій. Поміщають (необов'язково) входи і виходи таблиць в оголошенні Truth Table. Поміщають стани в оголошенні цифрового автомата State Machine. Поміщають більш пріоритетні операції в булевих виразах. Поміщають необов'язкові варіанти в секції проекту Design Section (усередині оголошення призначення ресурсів Assignment). |
|
[ ](квадратні дужки) |
Поміщають діапазон значень в десятковому імені групи. |
|
' ' (одинарні лапки) |
Поміщають символічні імена. |
|
.(крапка) |
Відділяє символічні імена змінних в макрофункції чи примітиві від імен портів. Відділяє ім'я файлу від розширення. |
|
... (трикрапки) |
Розділяє найменше і найбільше значення в діапазонах. |
|
“ (подвійні лапки) |
Поміщають рядок в оголошенні назви Title. Поміщають цифри в не десяткових номерах. Поміщають шлях в оголошенні Include. Можуть (необов'язково) поміщати ім'я проекту і пристрою в секції проекту Design Section. Можуть (необов'язково) поміщати ім'я в оголошенні призначення кліки графа Clique Assignment. |
|
;(крапка з комою) |
Закінчує оголошення і секції в мові AHDL. |
|
, (кома) |
Розділяє елементи послідовних груп і списків. |
|
:(двокрапка) |
Відділяє символічні імена від типів в оголошеннях і призначеннях ресурсів. |
|
@ «собака» |
Присвоює символічні вузли виводам пристрою і логічним коміркам в оголошеннях призначення ресурсів Resource Assignment. |
|
= (рівність) |
Присвоює значення за замовчуванням GND і VCC входам в секції підпроекту Subdesign. Присвоює встановлені значення у варіантах. Присвоює значення станам в машині станів. Присвоює значення в булевих рівняннях. |
|
=> (стрілка) |
Відділяє входи від виходів в оголошеннях таблиці істинності Truth Table. Відділяє вирази з When від булевих виразів в операторі Case. |
Імена в лапках і без лапок В мові AHDL є три типи імен:
-
символічні імена - це визначені користувачем ідентифікатори.
Вони використовуються для позначення наступних частин TDF.
-
внутрішніх і зовнішніх вузлів (вершин);
-
констант;
-
змінних цифрового автомата, бітів станів, імен станів,
-
прикладів (Instance).
-
імена підпроекту - це визначені користувачем імена для файлів проекту більш низького рівня, Ім'я підпроекту повинне бути таким самим, як ім'я tdf-файлу.
-
3) імена портів - це символічні імена, що ідентифікують вхід або вихід примітиву чи макрофункції.
У файлі .fit проекту можуть з'явитися імена виводів, що генеруються компілятором, з символом «тильда» Цей символ зарезервований для імен, що генеруються компілятором, користувачу забороняється його використовувати для позначення імен виводів, вузлів (вершин), груп (шин). Існують дві форми запису для всіх трьох типів імен (символічних, підпроекту і портів): в лапках (') і без лапок.
Якщо розробник створює символ за замовчуванням для tdf-файлу, який включає імена портів в лапках, власне лапки не входять в імена виводів.
Числа в мові AHDL У мові AHDL можна використовувати десяткові, двійкові, вісімкові і шістнадцяткові числа в будь-якій комбінації. В таблиці 2.3 приведений синтаксис запису чисел в мові AHDL для кожної системи числення.
Таблиця 2.3 - Синтаксис запису чисел в мові AHDL
Система числення |
Значення |
Десяткова |
<послідовність цифр 0-9> |
Двійкова |
В”<послідовність з 0, 1, Х>”, де символ X позначає невідоме значення |
Вісімкова |
0”< послідовність цифр 0-7>” чи Q”< послідовність цифр 0-7>” |
Шістнадцяткова |
Х”< послідовність цифр 0-9, букв А-F>” чи Н”< послідовність цифр 0-9, букв А-F>” |
Булеві вирази Булеві вирази складаються з операндів, розділених логічними і арифметичними операторами і компараторами і (необов'язково) згрупованих за допомогою круглих дужок вирази використовуються в булевих рівняннях, а також в інших конструкціях мови, таких як оператори Case і If.
Існують наступні застосування булевих виразів:
- операнд. Приклад: а, b[5..1], 7, VCC
-
вбудоване в текст (in-line) посилання (reference) на примітив чи макрофункцію.
-
префіксний оператор (! або -), застосований до булевого виразу. Приклад: !с
-
два булеві вирази, розділені двійковим (не префіксним) оператором.
Приклад: d1 $ d3
-
поміщений в круглі дужки булевий вираз. Приклад: (!foo & bar)
Результат кожного булевого виразу повинен мати ту ж ширину, що і вузол або група (в лівій стороні рівняння), якому він присвоюється
Логічні оператори
Таблиця 2.4 - Логічні оператори для булевих виразів
Оператор |
Приклад |
Опис |
! |
!tob |
Доповнення |
NOT |
NOT tob |
-//- |
& |
bread & butter |
Логічне I |
AND |
bread AND butter |
-//- |
!& |
a|3..1]!& b[5..3] |
Обернення логічного І |
NAND |
a[3..1] NAND b[5..3] |
-//- |
# |
trick # treat |
Логічне АБО |
OR |
trick OR treat |
-//- |
!# |
c[8..5]!# d[7..4] |
Обернення логічного АБО |
NOR |
c[8..5] NOR d[7..4] |
-//- |
$ |
foo $ bar |
Викпючне АБО |
XOR |
too XOR bar |
-//- |
!$ |
x2 !$x4 |
Обернення виключного АБО |
XNOR |
x2XNOR x4 |
-//- |
Кожний оператор є логічним вентилем з двома входами; виняток становить оператор NOT, що є префіксним інвертуванням. Для запису логічного оператора можна використовувати його ім'я або символ.
Вирази, в яких використовуються ці оператори, інтерпретуються по-різному залежно від того, які операнди: одиночні вузли (вершини), групи або числа. Крім того, вирази з оператором NOT інтерпретуються не так як інші логічні оператори.
Методичний приклад
Розглянемо роботу з текстовим редактором САПР MAX+PLUS II, в якому потрібно описати принцип роботи схеми, згідно логічного виразу.
(1)
В САПР MAX+PLUS II за допомогою меню File->New створюємо файл текстового редактора (рис. 7.1).иу
Рис. 7.1 - Меню File->New
У створеному tdf-файлі на мові AHDL описуємо цифрову схему. Після закінчення введення тексту програми (рис. 7.2) зберігаємо файл Через меню File->Save As зберігаємо файл під тим же іменем, яке має назва підпроекту (наприклад: lаb7), при цьому розширення присвоюється автоматично.
Рис. 7.2 - Tdf-файл з текстом програми
Після збереження необхідно ім'я файлу прив'язати до імені проекту - це робиться при виборі пункту Set Project to Current File в підменю Project меню File головного меню робочого вікна. Проводимо перевірку введеної схеми.
Створюємо include-файл і символ за замовчуванням. Для цього виконуємо пункти Create Default File і Create Default Symbol в меню File головного меню робочого вікна. Include-файл і символ будуть тепер можна використовувати в інших проектах.
Створюємо в Graphic Editor схему, в якій використовуємо створений символ (рис. 7.3). Аналогічним чином зберігаємо файл, виконуємо перевірку і компіляцію проекту.
Рис. 7.3 - Схема з власним символом
Перевірку роботи схеми робимо за допомогою сигнального редактора (Waveform Editor). Для цього відкриваємо сигнальний редактор і створюємо в ньому файл з розширенням .scf. В створеному файлі за допомогою меню File- >End Time задаємо час моделювання, а в меню Options->Grid Size - крок сітки моделювання. Далі подвійним клацанням правої кнопки миші на полі Name викликаємо меню Insert Node, за допомогою якого вибираємо входи і вихід схеми.
Для вхідних виводів задаємо їх значення на протязі необхідного часу моделювання. Після того, як вхідні значення задані відкриваємо вікно симулятора (Simulator Window) і запускаємо його натискаючи кнопку START.
Результати моделювання роботи схеми лабораторної роботи представлені на рисунку 7.4.
Рис. 7.4 - Результати моделювання роботи схеми в сигнальному редакторі