- •Короткі відомості про мову vhdl
- •6.1. Поняття про інтерфейс і архітектуру об'єкту
- •6.2. Прості приклади опису об'єктів на мові vhdl
- •6.3. Основні елементи мови vhdl
- •6.4. Типи даних в мові vhdl
- •6.5. Декларація констант, сигналів, змінних
- •6.6. Зумовлені атрибути
- •6.7. Поняття про паралельні і послідовні оператори
- •6.8. Паралельний оператор процесу (process)
- •6.9. Послідовні оператори
- •6.9.1. Оператор привласнення значення змінній
- •6.9.2. Привласнення значень сигналам (призначення сигналів)
- •6.9.3. Оператор "якщо" (if)
- •6.9.4. Оператор "випадок" (case)
- •6.9.5. Оператор "компонент" (component)
6.2. Прості приклади опису об'єктів на мові vhdl
Пристрій (рис. 12) можна описати таким чином:
entity ANDOR is
port(e0, e1, e2 : in bit; -- декларація вхідних і
z : out bit); -- вихідних портів, визначення
-- їх типів як двійкових
end ANDOR;
architecture RTL1 of ANDOR is
begin
-- призначення вихідному сигналу (порту) z результату -- логічного перетворення сигналів e0, e1, e2
z <= (not (e0 and e1) or e2);
end RTL1;
У приведеному тексті тіло архітектури, очевидно, є поведінковий опис об'єкту – опис логічного перетворення, складеного з використанням операцій І (and), АБО (or), НІ (not).
Прикладом використання структурного опису є опис, складений для схеми (мал. 13):
entity Cascade_Circuit is
port (x0, x1, x2, x3, x4 : in bit;
у : out bit);
end Cascade_Circuit;
architecture example of Cascade_Circuit is
-- декларація описаного раніше компоненту
-- відповідного схемі (мал. 12)
component ANDOR
-- декларація вхідних і вихідного портів компоненту -- визначення їх типів як двійкових
port (e0, e1, e2 : in bit; z : out bit);
end component;
-- декларація внутрішнього сигналу F і визначення його
-- типу як двійкового
signal F : bit;
begin
-- мітка (а1) і опис використання компоненту ANDOR
-- як лівою обведеною штриховою лінією частини
-- схеми (мал. 13), тобто опис використання портів
-- компоненту як порти об'єкту (x0, x1, x2
-- x3,x4, у) і передачі внутрішнього сигналу F між
-- частинами схеми
a1 : ANDOR port map (x0, x1, x2, F);
-- аналогічний опис для правої частини схеми
a2 : ANDOR port map (F, x3, x4, у);
end example;
М
ітки
(тут a1 і a2), що є одним з окремих випадків
ідентифікаторів, відповідно до синтаксису
VHDL, відділяються двокрапками. Причому
окремі версії мови VHDL припускають
обов'язкове використання міток, а для
деяких версій (зокрема, для версії,
відповідної текстовому редакторові
тієї, що вивчається САПР) використання
міток можливо, але не обов'язково. Мітки
теж відносять до згаданих в 6.1 призначеним
для користувача іменам.
Останній текст опису складений з урахуванням того, що схема (мал. 13) складається з двох частин (обведених штриховими лініями), кожна з яких (компонент) є схемою (мал. 12), описаною раніше. При цьому пристрій (мал. 13) описується сукупністю двох приведених вище текстів, а не тільки останнім з них. Відмітимо, що ім'я і декларація портів компоненту (див. другий текст) повинні повністю співпадати з відповідними рядками опису, зробленого раніше (див. перший текст).
У двох складених текстах описів ідентифікатори інтерфейсу і архітектури записані по-різному (з використанням великих і малих букв). Це не є помилкою: компілятор САПР сприйме однаково великі і малі букви в текстах VHDL.
Відзначимо, що після компіляції відповідних VHDL-текстів і програмування кристала ПЛИС, в нім утворюються структури, побудовані, наприклад, по схемах (мал. 7, 10-13).
6.3. Основні елементи мови vhdl
Текст на мові VHDL є послідовність окремих лексичних елементів, таких як коментар, роздільник, оператор, ідентифікатор, абстрактний і символьний літерали.
Згодне 6.2 коментарі служать для документування описів об'єктів.
Суміжні лексичні елементи розділяються кінцями рядків або особливими лексичними елементами – роздільниками, такими як пробіл, кома або крапка з комою. Причому кому і крапку з комою відносять також до операторів.
Оператор в мові VHDL може бути представлений:
– символом;
– композицією (комбінацією) символів;
– зарезервованим ключовим словом;
– призначеним для користувача ключовим словом;
– комбінацією перерахованих вище варіантів представлення операторів.
Символи, що є операторами, такі (кожен з них указуємо в лапках): "&" "( )", "*", "+" "?", "–", ".", "/" ":", ";", "<", "=", ">", "|". Круглі дужки, як завжди, використовуються для усунення неоднозначностей трактування старшинства операцій (див. 6.2).
Деякі з цих символів можуть об'єднуватися в пару. Композиція символів, що виходить при цьому, називається складеним оператором. У мові VHDL є наступні складені оператори: "**", ":=", "/=", ">=", "<=", "<>".
Зарезервовані ключові слова – це заздалегідь складені комбінації букв, що мають певне значення: abs, begin, case, downto, is, port, variable, xor, architecture, component, else, not, or signaltype, elsif, for, if, other, process, when, end, range, then, all, entity, loop, next, on, to і ін.
Список деяких операторів приведений в табл. 4. Відмітимо, що виходячи з контексту VHDL-коду, слід розрізняти вживання оператора "<=" в сенсі призначення сигналу (див. 6.2) і вживання цього оператора в іншому сенсі (менше або рівно).
П
ризначене
для користувача ключове слово складається
користувачем. Воно не повинне співпадати
ні з одним із зарезервованих ключових
слів і може використовуватися, наприклад,
для позначення якої-небудь логічної
функції, описаної користувачем.
Комбінацією перерахованих варіантів представлення операторів є паралельні і деякі з послідовних операторів. Надалі будуть приведені додаткові відомості про операторів мови VHDL, зокрема, будуть розглянуті паралельні і послідовні оператори.
Ідентифікатори вживаються як призначені для користувача імена (імена об'єктів і описів, позначення портів і сигналів, міток і ін.) і призначені для користувача ключові слова.
Приклад. У рядку
A<=B and C;
присутньо шість лексичних елементів: A, “<=”, B, and, C “;”. Три з них є операторами: “<=” (складений оператор призначення сигналу), and (зарезервоване ключове слово) “;” (символ – роздільник). Решта елементів (A, B, C) може бути, наприклад, призначеними для користувача іменами сигналів. При виборі ідентифікатора користувач не повинен допускати збіг ідентифікатора з будь-яким із зарезервованих ключових слів.
Абстрактний
і символьний літерали –
це значення сигналів, змінних і констант.
Абстрактний літерал має три форми:
десяткову (десяткові числа, наприклад,
100, 13.67
і т. д.), базову (двійкові, вісімкові і
шістнадцятиричні числа), фізичну
(значення фізичних величин з вказівкою
одиниць вимірювання, наприклад, 10 ns
– значення часового інтервалу). Символьні
літерали – це складені з букв і/або цифр
символічні найменування значень
сигналів, змінних і констант. Символьні
літерали в VHDL-текстах беруть в лапки
(наприклад, x = ”error”).
