Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
derzh.docx
Скачиваний:
10
Добавлен:
17.09.2019
Размер:
10.8 Mб
Скачать

46. Послідовні та паралельні оператори мови vhdl

У мові VHDL існує низка засобів для зміни стану об'єктів даних і керування пото­ком виконання поведінкового опису об'єкта.

Оператор присвоювання змінній

Змінній можна присвоїти но­ве значення за допомогою оператора присвоювання:

оператор _присвоювання_змінній ::= адресат := вираз;

адресат ::= ім'я_змінної | агрегат

Якщо адресат є ім'ям змінної, то її значення замінюється новим значенням, що задається виразом. Об'єкт, якому присвоюється нове значення, і вираз повинні мати один базовий тип. Якщо ліворуч від знака ::= стоїть агрегат, то його елементи мають бути іменами об’єктів даних, а значення виразу праворуч від ::= того самого типу, що й агрегат.

Умовний оператор

Умовний оператор дозволяє вибрати групу операторів, що виконуватиметься за­лежно від однієї чи кількох умов.

умовний_оператор ::=

if умова then

посдідовність_операторів

{ elsif condition then

послідовність_операторів }

[ else

послідовність_операторів ]

end if;

Умови повинні мати значення типу boolean. Вони обчислюються послідовно, до­ки не зустрінеться така, значення якої буде істинним (true).

Оператор вибору

Оператор вибору case дозволяє вибрати групу операторів, що виконуватиметься залежно від значення виразу вибору. Синтаксис оператора case:

оператор_вибору ::=

case вираз is

альтернатива_оператора_вибору

{альтернатива _.оператора_ вибору}

end case ;

альтернатива_оператора_вибору ::=

when список_виборів =>

послідовність операторів

список_виборів ::= вибір { | вибір }

вибір :: =

простий_вираз

| дискретний діапазон

| просте_ім'я_елементу

| others

Значення виразу вибору має бути дискретного типу або одномірним масивом си­мволів

Оператор цикл використовується для створення циклів while, until та for

оператор_циклу ::=

[ мітка_циклу : ]

[ схема_ітерацій ] loop

послідовність_операторів

end loop [ мітка_циклу ] ;

схема_ітерацій ::=

while умова

| for специфікадія_параметра_циклу

специфікація_параметра ::=

ідентифікатор in дискретний_діапазон

Якщо схема ітерацій відсутня, то цикл повторюватиметься нескінченно

Оператор повідомлення

Використовується для перевірки вказаної умови та по­відомлення, якщо вона порушена. Його синтаксис:

оператор_повідомлення ::=

assert умова

[ report вираз ]

[ severity вираз ];

Коли слово report присутнє, то, якщо умова помилкова, буде виведено вираз, який стоїть після слова report. Якщо слово report відсутнє, то виводиться стандартне повідомлення

Часто процес, що створює драйвер сигналу, містить тільки оператор присвою­вання сигналу. У VHDL існує зручний засіб для опису таких процесів. Це оператор паралельного присвоювання сигналу:

паралельний_оператор_присвоювання_сигналу ::=

[ мітка : ] оператор_умовного_присвоювання_сигналу

| [ мітка : ] опєратор_вибіркового_присвоювання_сигналу

Для кожного виду паралельного присвоювання сигналу існує відповідний еквіва­лентний процес.

Умовне присвоювання сигналу

Це короткий запис процесу, який мі­стить лише один умовний оператор, у гілках якого стоять тільки оператори присво­ювання одному і тому самому сигналу. Його синтаксис:

оператор_умовного__присвоювання_сигналу ::=

адресат <= опції умовна_форма_сигналу ;

опції ::= [ guarded ] [ transport ]

умовна_форма_сигналу ::=

{ форма_сигналу when умова else }

форма_сигналу

Якщо цей оператор містить слово transport, то присвоювання сигналу в еквівалентному процесі виконувати­меться із транспортною затримкою.

Розглянемо таке умовне присвоювання сигналу:

s <= форма_сигналу_1 when умова_1 else

форма_сигналу_2 when умова_2 else

…форма_ сигналу_n;

Еквівалентний процес має вигляд:

process

if умова_l then

s <= форма_сигналу_1;

elsif умова_2 then

s <= форма_сигналу_2;

elsif .. else

s <= форма_сигналу_п;

wait [ список_чутливості ];

end process;

Якщо жодна із форм сигналів чи умов не містить посилання на сигнал, то після присвоювання процес зупиняється назавжди.

Вибіркове присвоювання сигналу

Оператор вибіркового присвоювання сигналу - це короткий запис процесу, що містить тільки один оператор вибору, у гілках якого стоять тільки оператори при­своювання одному сигналу. Його синтаксис:

оператор_вибіркового_присвоювання_сигналу : :=

with вираз select

адресат <= опції вибіркова форма_сигналу;

вибіркова_форма_сигналу ::=

{ форма_сигналу when список_виборів, }

форма_сигналу when список_виборів

список_виборів ::= вибір { | вибір }

Специфікатори присвоювання (опції) у цьому операторі такі самі, як і в операторі умовного присвоювання сигналу. Якщо оператор містить слово transport, то при­своювання сигналу в еквівалентному процесі виконуватиметься з використанням транспортної затримки.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]