Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Короткі відомості про мову VHDL.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
166.91 Кб
Скачать

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’;.

Звернемо увагу на те, що після декларації сигналів і змінних (без привласнення ним яких-небудь значень) їх первинні значення за умовчанням є нульовими.