VHDL- МОВА ОПИСУ АПАРАТНИХ ЗАСОБІВ КОМП'ЮТЕРА
(курсоваробота)
АНОТАЦІЯ
У даному програмному документі представлені загальнівідомості про мови, які використовуються для створення програмного продукту, їїелементи, способи структуризації програми, принципи об’єктно-орієнтованогопрограмування, засоби налагоджування.
Програмний документ містить 2розділи, 7 джерел, 3 рисунка.
ЗМІСТ
1. ПЕРЕЛІК СКОРОЧЕНЬ
2. VHDL — МОВА ОПИСУ АПАРАТНИХ ЗАСОБІВКОМП'ЮТЕРА
2.1 Процес проектування цифрових схем
2.2 Рівні опису апаратних засобів
2.2.1 Інтерфейсний опис
2.2.2 Архітектурний опис
2.2.2.2 Архітектурний опис наповедінковому рівні.
2.2.2.3 Архітектурний опис на рівнічасової діаграми
2.3 VHDL як мова програмування.
2.3.1 Лексеми
2.3.1.1 Коментарі
2.3.1.2 Ідентифікатори.
2.3.1.3 Числові константи
2.3.1.4. Символи
2.3.1.5 Рядки
2.3.1.6 Бітові рядки.
2.3.2 Типи даних та об’єкти
2.3.2.1 Цілочисельні типи.
2.3.2.2 Типи фізичних величин..
2.3.2.3 Тип з рухомою крапкою
2.3.2.4 Перелічувальні типи.
2.3.2.5 Масиви
2.3.2.6 Записи.
2.3.2.7 Підтипи
2.3.2.8 Об’єкти
2.3.3 Вирази та оператори
2.3.4. Конструкції
2.3.4.1 Присвоєння значень змінним
2.3.4.2 Умовна конструкція if
2.3.4.3 Умовна конструкція case
2.3.4.4 Конструкція циклу loop
2.3.4.5 Порожня конструкція
2.3.4.6 Конструкція підтвердження
2.3.5 Підпрограми та пакети
2.4 Структурний опис мовою VHDL
2.4.1 Декларування елемента
2.4.2 Декларування архітектуриелемента
2.4.2.1 Декларування сигналів
2.4.2.2 Блоки
2.4.2.3 Декларування компонентів
2.4.2.4 Використання компонентів
2.5 Функціональний опис мовою VHDL
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ
1. ПЕРЕЛІК СКОРОЧЕНЬ
VHDL − VeryHigh Speed Integrated Circuit Hardware Description Language.
ОЗП –об’єктно-зорієнтоване програмування.
/>2. VHDL — МОВА ОПИСУ АПАРАТНИХ ЗАСОБІВКОМП'ЮТЕРА
VHDL є мовою дляопису цифрових електронних систем [6,7]. Вона з’явилась в результаті виконанняпрограми Уряду США по створенню надшвидкісних інтегральних схем НШІС (Very HighSpeed Integrated Circuits), яка була ініційована в 1980 році. В ході виконанняцієї програми виникла необхідність в стандартній мові для опису структур іфункцій інтегральних схем (ІС). В результаті аналізу вже існуючих мов описуапаратних засобів AHPL, CDL, CONLAN, IDL, ISPS, TEGAS, HDL, ZEUS, використовуванихпровідними фірмами комп’ютерного профілю, була розроблена мова VHDL (VHSICHardware Description Language). В 1987 році ця мова була адаптована в якостістандарту в США інститутом інженерів-електриків та електроніків (IEEE).
VHDL спроектованадля всього спектру потреб, які виникають в процесі проектування. По перше, вонадозволяє описати структуру проекту, тобто його поділ на складові частини та їхвзаємозв’язок. По друге, вона дозволяє описати функцію проекту використовуючиподібні до мови програмування форми. По третє, як результат, вона дозволяєзмоделювати проект перед початком виготовлення, так що проектувальники можутьшвидко порівняти альтернативи та перевірити правильність функціонування беззатримки та витрат на апаратне макетування./>2.1 Процес проектування цифрових схем
В найбільшспрощеному вигляді процес проектування цифрових систем можна представити ввигляді наступної схеми (рис.2.1).
Як видно, засобимоделювання використовуються на всіх етапах для перевірки результатів розробкита проведення відповідних змін, доробок, уточнень.
ЗАСОБИ МОДЕЛЮВАННЯ ЕТАПИ ПРОЕКТУВАННЯ ОТРИМУВАНІ РЕЗУЛЬТАТИ Симулятор поведінки Ідея — Проект — Моделювання роботи Потоковий граф, коди, та ін. Симулятор потоків даних Розробка функціональної схеми Функціональна схема на регістровому рівні Симулятор роботи на вентильному рівні Логічне проектування Схема електрична принципова Симулятор пристрою Фізичне проектування Інформаційний файл для виготовлення Тестування пристрою Виготовлення Кристал або плата Рис.2.1. Процес проектування цифрових систем. /> 2.2 Рівні описуапаратних засобів/> 2.2.1 Інтерфейсний опис
Мова VHDLвикористовується для опису апаратних засобів комп’ютера. Для цього вона маєспеціальні засоби. В найбільш спрощеній формі опис апаратних компонентів наVHDL включає інтерфейсну і архітектурну специфікації. Інтерфейсний описпочинається з ключового слова ENTITY і включає вхідні та вихідні портикомпоненти. Інші зовнішні параметри компоненти, такі як часові і температурнізалежності, також можуть бути включені в її інтерфейсний опис. Ім’я компонентистоїть після ключового слова ENTITY і супроводжується іншим ключовим словом IS.Інтерфейсний опис закінчується ключовим словом END, яке супроводжується ім’ямкомпоненти.
ENTITY ім’я_компоненти IS
вхідні і вихідні порти,
фізичні і інші параметри.
END ім’я_компоненти; />2.2.2Архітектурний опис
Архітектурнийопис починається з ключового слова ARCHITECTURE, яке описує функціональнепризначення компоненти. Виконувані компонентою функції залежать від значеньвхідних сигналів і інших параметрів, що вказуються в інтерфейсному описі.Заголовок архітектурного опису включає ідентифікатор і ім’я компоненти.
ARCHITECTURE ідентифікатор OF ім’я_компоненти IS
декларація
BEGIN
опис виконуваних компонентою функцій
через її входи та виходи з врахуванням
впливу фізичних та інших параметрів.
END ідентифікатор;
Опис виконуванихкомпонентою функцій починається з ключового слова BEGIN.
/>2.2.2.1 Архітектурний опис наструктурному рівні
Цифроваелектронна система може бути описана як модуль з входами і/або виходами.Електричні значення на виходах є деякою функцією від значень на входах. Нарис.2.2(а) показано приклад цього типу цифрової системи. Модуль F має двавходи, A і B, і вихід Y. Використовуючи VHDL-термінологію ми називаємо модуль Fоб’єктом проектування (компонентою), а входи і виходи — портами.
Одним з шляхівопису функції модуля є опис його побудови із субмодулів. Кожний із субмодулів єскладовою компоненти, а порти складових об’єднуються використовуючи сигнали. Нарис.2.2(b) показано, як компонента F може бути побудована із складових — об’єктів G, H та I. Цей тип опису називається структурним описом. Зауважимо, щокожний із об'єктів G, H та I повинен також мати структурний опис.
/> (a) (b) Рис.2.2. Архітектурний опис на структурному рівні /> 2.2.2.2 Архітектурний опис на поведінковомурівні
Опис виконуваноїмодулем функції, без розкриття його внутрішньої структури названофункціональним або поведінковим описом.
Для ілюстраціїцього приймемо, що функція компоненти F на рис.2.2(а) є функцією “виключаючеАБО”.
Тоді поведінковийопис F може бути булевою функцією:
/>.
Більш складніповедінки не можуть бути описані тільки функцією від входів. В системах зоберненими зв’язками виходи є також функцією від часу. VHDL розв’язує цюпроблему, допускаючи опис роботи в формі виконуваної програми./>2.2.2.3 Архітектурний опис на рівні часової діаграми
Коли структура івиконувані функції модуля визначені, стає можливим моделювання його часовоїдіаграми роботи. Це робиться шляхом моделювання його роботи по ходу часудискретними кроками. В деякий час моделювання вхід модуля може стимулюватисьзміною значення на вхідному порті. Модуль реагує зміною коду його поведійногоопису і планує нові значення сигналів на вихідних портах в дещо пізніший часмоделювання. Це називається плануванням реакції на сигнал. Якщо нове значеннявідрізняється від попереднього, то і інші модулі, вхідні порти яких під’єднанідо виходу цього, можуть активуватися.
Моделюванняпочинається з фази ініціалізації, а в подальшому відбувається повтореннядвохстадійного циклу моделювання. На фазі ініціалізації всі сигнали отримуютьпочаткові значення, час моделювання встановлюється в нуль і виконуєтьсяпрограма поведінки кожного модуля./>2.3 VHDL як мовапрограмування/> 2.3.1. Лексеми/>2.3.1.1Коментарі
Коментар в VHDL — це рядок, що починається з двох коротких тире (‘--’)./> 2.3.1.2 Ідентифікатори
Ідентифікатори вVHDL — це резервовані слова та визначені програмістом імена. Їх опис повинензадовільняти правилу:
::={||}
Мова VHDLнечутлива до регістру літер./> 2.3.1.3 Числові константи
Числа можутьвиражатись в десятковій формі або в системі числення від 2 до 16. Якщо число усвому записі містить крапку, воно представляє число з рухомою крапкою (float),інакше воно представляє ціле (integer).
Числа вдесятковій формі запису:
::=[.][]
::={|}
::=Е[|]
Числа, що записанів системі числення з певною основою:
::=#
Основа системичислення та експонента записуються десятковим числом. Літери від A до Fозначають відповідно числа від 10 до 15./>2.3.1.4Символи
Символьнілітерали представляються як символ ASCII в одиночних лапках./>2.3.1.5Рядки
Рядкові літерали- це набір символів ASCII в подвійних лапках. Щоби представити знак подвійнихлапок в рядковому літералі, потрібно повторити його двічі. Рядок також можерозглядатись як масив символів./>2.3.1.6Бітові рядки
Описуютьпослідовність бітів:
::=“”
::=В|О|Хвідповідно для двійкових, вісімкових та шістнадцяткових значень.
::=/>2.3.2 Типи даних та об’єкти
VHDL надає великукількість головних типів (скалярних типів) та засоби для утворення складенихтипів. Скалярні типи включають числові, фізичні величини та перелічувальнітипи. Є також велика кількість наперед визначених стандартних типів.
Складені типивключають масиви та записи. VHDL також має тип покажчика (access) та файловийтип (files).
Визначення типупроводиться директивою TYPE:
TYPEIS ;/>2.3.2.1Цілочисельні типи
Це типи, для якихзадається діапазон значень:
TYPE IS RANGE TO|DOWNTO;
Максимальнийдіапазон від -2147483647 до +2147483647 визначений як тип integer./>2.3.2.2Типи фізичних величин
Це числові типи,які описують якусь фізичну величину, таку як маса, довжина, час, напруга тощо.Опис такого типу дуже схожий на опис цілочисельного типу, в якому задаютьсябазові одиниці, що утворюються множенням коефіцієнту на базові одиниці.
TYPE IS RANGE TO|DOWNTO
UNITS
;
{;}
END UNITS;
Важливим напередвизначеним типом в VHDL є час. Він використовується при описі затримок часу, щоє необхідним для процесу симуляцій./>2.3.2.3Тип з рухомою крапкою
Цей тип єдискретним наближенням до множини чисел з рухомою крапкою у вказаномуінтервалі. Точність наближення не вказується в стандарті VHDL, але вона маєбути хоча б 1E-6. VHDL має наперед визначений тип real в діапазоні від -1Е-38до +1Е38.
Опис типу зрухомою крапкою такий самий як і опис цілочисельного типу./> 2.3.2.4 Перелічувальні типи
Перелічувальнийтип — це впорядкований набір ідентифікаторів або символів. В межах цього наборуідентифікатори та символи повинні відрізнятись:
TYPE IS({|,});
VHDL має кільканаперед визначених перелічувальних типів:
TYPE severity_levelIS (note, warning, error, failure);
TYPE boolean IS(false, true);
TYPE bit is(’0’,’1’);
TYPE character IS(… koi-7...);
Символи ‘0’ та‘1’ є одночасно членами типів bit та character. VHDL сам визначає тип ‘0’ та‘1’ в залежності від контексту, де вони використовуються./>2.3.2.5Масиви
Масив у мові VHDL- це набір індексованих елементів одного типу. Масиви можуть бути одновимірні(з одним індексом) та багатовимірні (з багатьма індексами). Масиви також можутьбути обмеженими та необмеженими.
Декларування типумасив:
TYPE IS ARRAY | RANGE OF ;
Індекси дляпосилання на елементи масиву вказуються в круглих дужках./>2.3.2.6Записи
Запис є набороміменованих елементів однакового або різних типів:
TYPE IS RECORD {,} ENDRECORD;
При посиланні наполя ім’я запису та ім‘я поля відокремлюються крапкою./>2.3.2.7Підтипи
Підтипивикористовуються для декларування ідентифікатора як підмножини деякого базовоготипу:
SUBTYPE IS ;
VHDL має дванаперед визначених підтипи:
SUBTYPE naturalIS integer RANGE 0 TO ;
SUBTYPE positiveIS integer RANGE 1 TO ;/>2.3.2.8Об’єкти
Об’єкт — цеспеціальний тип в VHDL. Є три класи об’єктів: константи, змінні та сигнали.
Константа — цеоб’єкт, що ініціалізується вказаним значенням в момент створення. Далі цезначення не змінюється.
CONSTANT:[:=];
Константи безприсвоєного їм значення використовуються при декларуванні пакетів. Це значеннябуде присвоюватись у відповідному тілі пакета.
Змінна — цеоб’єкт, значення якого може змінюватись після його створення.
VARIABLE:[:=];
Якщо присвоюванезначення відсутнє при декларації змінної, то змінна набуває значення за замовчуванням./> 2.3.3 Вирази таоператори
Вирази в VHDL, які в більшості мов програмування, включають імена об’єктів, літералів,оператори, виклики функцій та операції з дужками.
VHDL має наступніоператори (в порядку зменшення приоритету):
** ABS NOT
* / MOD REM
+(sign) -(sign)
+ - &
= /= >=
AND OR NAND NOR XOR
Логічні операториAND, OR, NAND, NOR, XOR і NOT працюють над значеннями типу bit або boolean, атакож одновимірний масив з елементів вказаних типів. Для операндів-масивівоперація виконується над відповідними елементами масивів.
Розмірністьвхідних та вихідного масивів однакова. AND, OR, NAND використовують свій другийоперанд, якщо перший операнд не визначає результату. Так AND і NANDвикористовує другий операнд, якщо перший дорівнює true (‘1’), а OR та NORвикористовує другий операнд, якщо перший дорівнює false (‘0’).
Операціїпорівняння =, /=, та >= повинні мати два операториоднакового типу. Тип результату порівняння завжди boolean. Операториеквівалентності (= та /=) можуть мати операнди будь-якого типу. Два складенихтипи вважаються однаковими, якщо однаковими є усі відповідні елементи. Рештаоператорів порівняння вимагають, щоб їх операнди були скалярного типу або одновимірногомасиву.
Знакові оператори(+ та -), а також оператори додавання (+) та віднімання (-) опрацьовуютьчислові операнди.
Операторконкатенації (&) опрацьовує одновимірні масиви та дає результат — масив, щоскладається з елементів першого, за яким слідують елементи другого. Він можетакож під’єднати один новий елемент до масиву або два незалежних елементиоб’єднати в масив. Найчастіше цей оператор використовується з рядками.
Операторимноження (*) та ділення (/) працюють над цілими числами, числами з рухомоюкрапкою та з типами фізичних величин. Операції ділення без остачі (MOD) таостача від ділення (REM) працюють лише з цілими.
Операціяабсолютного значення (ABS) працює лише з числовими типами.
Піднесення достепеню (**) може мати цілочисельний або тип з рухомою крапкою першого операндута цілочисельній тип другого операнду. Від’ємний другий операнд дозволяєтьсялише за умови, коли перший операнд є число з рухомою крапкою./>2.3.4 Конструкції
Мова VHDL міститьспеціальні конструкції, які дозволяють змінювати стан об’єктів та контролюватипотік виконання моделі./> 2.3.4.1 Присвоєння значень змінним
Змінна набуваєнового значення за допомогою конструкції присвоєння:
| := ;
Об’єкт та виразповинні бути однакового типу.
Алгоритмвиконання такого присвоєння наступний: спочатку обраховуються значенняелементів агрегату та значення виразу, а далі відбувається присвоєння значеннявиразу агрегату./>2.3.4.2.Умовна конструкція if
Дозволяєвиконання інструкцій в залежності від виконання умов.
IF THEN
{ ELSE IF THEN }
[ ELSE]
END IF;
Умовою є вираз,що дає результат типу boolean./> 2.3.4.3 Умовна конструкція case
Дозволяє виконатипослідовність конструкцій в одній з гілок.
CASE IS
{ WHEN { | } | OTHERS =>
}
END CASE;
та мають бути виразами дискретного типу або одновимірними масивамисимволів.
Всі значення мають буті різними. OTHERS повинна включатись як останняальтернатива. Якщо результат виразу — масив, то має бути рядкомабо бітовим рядком./> 2.3.4.4 Конструкція циклу loop
VHDL має базовуконструкцію LOOP, яка може бути у формі WHILE чи у формі FOR. Це дві, такзвані, ітераційні схеми.
[:]
[|]LOOP
[];
[NEXT[] [WHEN ];
[EXIT[] [WHEN ];
END LOOP[];
Якщо ітераційнасхема пропущена, то отримаємо нескінчний цикл.
Ітераційна схемаWHILE тестує умову, що обчислюється перед кожною ітерацією.
Ітераційна схемаFOR вводить змінну циклу, яка приймає послідовні значення у вказаних межах. Утілі циклу ця змінна розглядається як костанта (їй не можна присвоювати значення).Після закінчення циклу значення цієї змінної не існує./>2.3.4.5 Порожня конструкція
Не виконує ніякихдій. Використовується лише у випадках, коли необхідно явно вказати, що ніякадія не виконується. Найчастіше застосовується в конструкції CASE у гілці, привиборі якої не віконується жодна дія./>2.3.4.6Конструкція підтвердження
Конструкціяпідтвердження використовується для перевірки певних умов і для видачі певногоповідомлення в разі, коли ці умови заборонені.
ASSERT
[REPORT]
[SEVERITY];
Якщо присутнійREPORT, результат виразу повинен бути рядковим. Це буде повідомлення, якщоумова є хибною. Якщо REPORT відсутній, то повідомлення за замовчуванням буде“Assertion violation”. Якщо присутній SEVERITY, вираз повинен мати типseverity_level; якщо його нема, то значення за замовчуванням є error. Симуляторможе закінчити своє виконання, якщо умова не виконалась і значення SEVERITY єбільшим за якесь порогове значення, величина якого залежить від реалізації. Якправило, величина порогового значення регулюється користувачем./>2.3.5 Підпрограми та пакети
Як і інші мовипрограмування, VHDL підтрімує підпрограми у формі процедур та функцій. VHDLтакож підтримує пакети для групування декларувань та об’єктів в окремі модулі.Пакети також забезпечують деяку абстракцію даних та приховування певних блоківінформації./> 2.3.5.1 Процедури та функції
Декларуванняфункцій та процедур відбувається за такими правилами:
PROCEDURE[]
|FUNCTION[]
RETURN;
Для функцій такожвказується тип результату, що буде повертатись коли функція виконається. Такаформа декларування підпрограм (не вказуючи їх тіла) часто використовується впакетах, де тіло підпрограми дається в тілі пакету, а також при визначеннівзаємно рекурсивних процедур.
В спискуформальних параметрів можуть бути константи, змінні та сигнали./>2.4Структурний опис мовою VHDL/> 2.4.1Декларування елемента
Цифрова схемапроектується, як правило, ієрархічним набором елементів. Кожен елемент маєнабір портів для реалізації інтерфейсу із зовнішним світом. При цьому коженелемент в свою чергу може складатись з інших елементів.
Синтаксисдекларації елемента наступний:
ENTITY IS
;
BEGIN
;
END ;
Заголовокелементу може використовуватись для декларування речей, які потім будутьвикористовуватись у тілі елемента. В заголовку також можуть записуватисьспеціальні пункти, що допомогають при симуляції.
Тут можутьвказуватись константи, що описують поведінку елемента GENERIC CONSTANT, таканали вводу/виводу PORT.
GENERIC CONSTANTописуються так само, як і декларація підпрограм. Всі вони повинні мати класконстант. Дійсні значення констант передаються тоді, коли елемент будевикористано. PORTS описуються так само, як і GENERIC CONSTANT, але їх класповинен бути SIGNAL. Це є новий клас, тому покажемо його синтаксис:
SIGNAL:[] [BUS][:=]
Так, як класповинен бути SIGNAL за замовчуванням, слово SIGNAL може бути пропущене.
Слово BUS (шина)показує, що порт буде під’єднано до кількох виходів./>2.4.2 Декларування архітектури елемента
Після того, якелемент було декларовано за допомогою ENTITY, потрібно описати його архітектурув розділі ARCHITECTURE. Кожен елемент може мати кілька таких описів.
ARCHITECTURE OF IS
;
BEGIN
;
END;
В тіліархітектури вказуються пункти, що описують елемент конструктивно./> 2.4.2.1 Декларування сигналів
Сигналивикористовуються для з’єднання піделементів між собою. Вони описуються занаступним синтаксисом:
SIGNAL :[REGISTER| BUS] [:=];
Значення виразу вдекларуванні сигналу використовується для надання сигналу початкового значенняпід час фази ініціалізації при моделюванні. Якщо вираз не вказано, то будевикористовуватись значення за замовчуванням. Порти елемента слід розуміти яксигнали в межах цього елементу./>2.4.2.3Декларування компонентів
В тіліархітектури дозволяється описувати окремі елементи та поміщати їх до бібліотекдля подальшого використання. Для цього в тілі архітектури потрібно декларуватикомпоненту. Її можна розуміти як тимчасове в межах даної архітектури визначеннявіртуального елементу.
COMPONENT
[GENERIC (...)];
[PORT (… .);
END COMPONENT;/> 2.4.2.4. Використання компонентів
:
[]
[];/> 2.5 Функціональний опис мовою VHDL
Функціональнийопис передбачає запис засобами мови програмування VHDL законів зміни сигналів.
Присвоєннязначень сигналам диспетчеризує одну або кілька транзакцій на сигнал (або порт)в наступний спосіб:
|
[AFTER | NULL]{,… };
Цільовий сигналможе бути представлений агрегатом сигналів. Якщо час пропущений, то зазамовчуванням береться затримка 0fs. Це означає, що транзакція будедиспетчеризована в той самий час, коли відбулось присвоєння, але в наступний циклсимуляції.
Коженсигнал асоціюється з хвильовою проекцією виходу (далі проекція). Це є фактичноперелік транзакцій майбутніх значень сигналу. Кожне присвоєння сигналу додаєтранзакцію до проекції.
СПИСОКВИКОРИСТАНИХ ДЖЕРЕЛ
1. БобровскийС. Delphi 7. Учебный курс. – СПб.: Питер,2004. – 735 с.
2. Энго Ф.Как программировать на Delphi 4.0. Пер. с англ – К.: ДиалСофт, 1999. – 430 с.
3. Архангельський А.Я…Программирование в Delphi 6. – М.: Бином, 2002. – 823 с.
4. КультинН.Б… Delphi 6.0. Программирование на Object Pascal. – СПб.: Питер ,2004. –526с.
5. Лишнер Р.Секреты Delphi 2. Пер. с англ. – К.: НИПФ ДиаСофтЛтд, 1996. – 800 с.
6. Проектуванняцифрових систем з використанням мови VHDL: Навч. посібник/ В.В. Семенець, І.В.Хаханова, В.І. Хаханов. – Харків: ХНУРЕ, 2003. – 492 с.
7. СергиенкоА.М. VHDL для проектирования вычислительных устройств. – К.: ТИД ДС, 2003. –208 с.