- •Короткі відомості про мову 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.4. Типи даних в мові vhdl
Даними в мові VHDL є сигнали, порти (вхідні і вихідні сигнали), змінні і константи. Тип даних – це пойменована множина значень з деякими загальними характеристиками. Типи визначаються зазвичай в описі архітектури (див. 6.2).
У
табл. 5 вказані основні типи даних для
мови VHDL.
Багато з типів, вказаних в табл. 5, не вимагають яких-небудь пояснень. Деякі з них пояснимо.
Тип BOOLEAN – це дані, які можуть приймати одне з двох значень: TRUE (істина), FALSE (брехня). Відмітимо, що значення TRUE і FALSE даних типу BOOLEAN не еквівалентні значенням 1 і 0 даних типу BIT.
На відміну від типу BIT – безліч однорозрядних двійкових величин, тип BIT_VECTOR відповідає багаторозрядним (у загальному випадку) двійковим числам. Наприклад, запис BIT_VECTOR (0 to 7) визначає восьмирозрядні двійкові числа, в яких молодші розряди записуються зліва. BIT_VECTOR (7 downto 0) – восьмирозрядні двійкові числа, в яких молодші розряди записуються справа. Даний тип уживається, зокрема, для опису даних, передаваних в паралельному двійковому коді по якій-небудь шині.
Тип CHARACTER є безліч символів коди ASCII, що включає у тому числі і ті символи, які набираються з клавіатури порівняно складними способами.
Тип STRING – це задані масиви яких-небудь значень. Наприклад, запис STRING (“101”, “111”, “001”, “110”); або STRING (“5”, “7”, “1”, “6”); визначає масив з чотирьох 3-бітових чисел: 101, 111, 001, 110. Запис STRING (“G2”, “EXIT”, “RUN”); визначає масив з трьох комбінацій символів: G2, EXIT, RUN.
Крім того, користувачеві надається можливість вводити і використовувати свої власні типи даних.
При визначенні арифметичних, а також деяких типів даних, що вводяться користувачем, в VHDL-тексті необхідно за допомогою оператора range указувати межі можливих змін даних в проектованому пристрої. Так, запис
signal s : integer range -5 to 5;
або
signal s : integer range 5 downto -5;
визначає
тип (INTEGER) сигналу s, що представляється
4-бітовим паралельним додатковим кодом
(старший з чотирьох розрядів знаковий)
на деякій шині пристрою, при діапазоні
значень сигналу від
до
.
Аналогічно можна описувати передавані
по шинах сигнали, визначаючи ці сигнали
як дані інших арифметичні типів.
Наприклад, тип NATURAL може відповідати
паралельним двійковим кодам без знакових
розрядів.
Запис
type bit_index range 0 to 31;
служить для введення користувачем (декларації) нового типу (bit_index) даних – безліч цілих чисел від 0 до 31 (ознакою цілих чисел є їх уявлення за відсутності крапки). Після такого запису в VHDL-тексті може зустрітися рядок
signal g : bit_index range 5 to 18;
Такий
рядок визначає тип (bit_index) сигналу g, що
представляється, наприклад, 5-бітовим
паралельним кодом на деякій шині
пристрою, при діапазоні значень сигналу
від
до
.
Строга типізація в мові VHDL припускає, що змішення різних типів в одній операції є помилкою.
6.5. Декларація констант, сигналів, змінних
Декларації констант відповідають наступні приклади (для констант з іменами PI і DEFAULT):
constant PI : real := 3.14159;
constant DEFAULT : bit_vector (0 to 3) := “0101”;
Відмітимо, що для типів даних BIT_VECTOR і STRING значення записуються в лапках (див. останній рядок VHDL-тексту), а значення даних всіх арифметичних типів, даних типів BOOLEAN і CHARACTER записуються без використання лапок і подібних до них елементів.
Приклади декларації сигналів приведені в кінці 6.4.
Приклади декларації змінних:
-- декларація двох змінних з іменами
-- ROW і COLUMN
variable ROW, COLUMN : integer range 0 to 31;
-- декларація змінної f з привласненням їй значення
-- логічної одиниці
variable f : bit := ‘1’;
Відмітимо, що для типу даних BIT значення записуються в апострофах (див. останній рядок VHDL-тексту). Крім того, необхідно відзначити можливість зміни значення змінної після її декларації. Так, за останньою з рядків VHDL-тексту може слідувати текст, що містить рядок
f:=’0’;.
Звернемо увагу на те, що після декларації сигналів і змінних (без привласнення ним яких-небудь значень) їх первинні значення за умовчанням є нульовими.
