Oб’єкти мови VHDL
Назад | Зміст | Наступна |
Вивчення VHDLOб’екти мови VHDLСигнали, змінні, константи та інші об’єкти мови VHDL служать для змісту і переносу деяких значень. Ці значення можуть бути присвоєні об’єктам в одному місці і потім використані в іншому місці програми, як операнди у виразах, функціях і т.п. На цій сторінці наведені об’єкти мови і синтаксис їхнього оголошення (декларації). Сигнал.Сигналом є об’єкт, що переносить значення від одного процесу до іншого і, разом з ним, – синхронізуючий вплив. Сигнал може запам’ятовуватися у своїй історії і відтворюватися в симуляторі у вигляді графіка або таблиці. Оголошення сигналу виглядає як: signal : \ідентифікатор\{,\ідентифікатор\}:=[\початкове значення\]; де – \початкове значення\ – вираз, що представляє константу, значення якої приймає сигнал перед першим запуском процесу. Константа.Константою є об’єкт, що не змінює своє значення при обчисленнях. Після оголошення константи присвоювання їй значення заборонено (крім випадку відкладеної константи). Приклад оголошення константи: сonstant thousand: integer:=1000; Змінна.Змінною є об’єкт, що зберігає значення в межах операторів процесу, функції або процедури. На відміну від сигналу, присвоювання змінної виконується негайно. Спрощений синтаксис оголошення змінної: \оголошення змінної\::= Приклад оголошення змінної: variable tmp: integer range -128 to 127:=0; Порт.У структурі програми VHDL виділяються об’єкти проекту, що називаються entity. Не плутати об’єкти мови з об’єктом проекту. Це пов’язане з тим, що, по-перше, object і entity перекладаються однаково, по-друге, в Language Reference Manual сигнали, змінні та ін. у деяких декларативних місцях обзиваються як entities. У цьому слові є щось філософське, як в афоризмі: “Електрон невичерпний, як і атом”. Порт являє собою інтерфейсний сигнал об’єкта проекту. Як і в декларації сигналу, у декларації порту вказується його ідентифікатор, тип, початкове значення. Додатково вказується режим роботи: in – прийом, out – передача, inout – прийом і передача, buffer – передача і використання як сигнал-операнд всередині об’єкта проекту та link – двонаправлене з’єднання з іншим портом з таким же режимом. Спрощений синтаксис оголошення портів об’єкта проекту наступний: \оголошення портів\::= port (\оголошення порту\ {; \оголошення порту\}); \оголошення порту\ :: = Настроювальна константа generic.Настроювальна константа generic кодує певну властивість об’єкта проекту. Вона використовується, наприклад, для завдання розрядності ліній зв’язку, кодування структури пристрою, що моделюється. Спрощений синтаксис оголошення настроювальних констант наступний: \оголошення настроювальних констант\::= generic( \оголошення настроювальної константи\ \оголошення настроювальної константи\::= \ідентифікатор\: \тип\[:=\початкове значення\] Змінна циклу.Змінна циклу – це спеціальний об’єкт у тому розумінні, що він не вимагає оголошення. Детальніше про неї сказано при описі оператора циклу loop. Початкове значення об’єкта.Початкове значення об’єкта в його оголошенні – це те значення, яке приймає об’єкт перед першим циклом моделювання. Якщо початкове значення не присвоєне, то симулятор присвоює найменше значення даного типу, якщо тип числовий, або – найлівіше значення, якщо тип перелічний. Наприклад, багато хто спочатку дивуються, чому проект, написаний із сигналами стандартного типу STD_LOGIC, відмовляється поводитися як задумано – на всіх виходах моделі – значення U (не ініціалізовано). Пояснення просте: U – це найлівіше значення перелічного типу STD_LOGIC, а якимсь сигналам у моделі не дали очікуваного початкового значення або на них не поширився сигнал встановлення в 0. І значення U поширилося до виходів моделі згідно з логікою STD_LOGIC. Початкове значення може бути виразом. Але значення виразу повинне бути обчисленим до моменту трансляції даного оголошення. Наприклад, перше оголошення: signal bb:bit:=aa; невірно, тому що при його розгляді компілятор ще не має відомостей про ідентифікатор аа. В апаратній моделі обчислювача VHDL початкове значення об’єкта еквівалентне стану тригерів і шин відразу після вмикання живлення до приходу сигналів встановлення в 0, тобто воно не визначено. Тому часто компілятори – синтезатори не допускають або ігнорують початкові значення всіх об’єктів, крім констант, або об’єктів, які не змінюють своє значення при обчисленнях.
Анатолій Сергієнко |
Назад | Зміст | Наступна |