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

6.9. Послідовні оператори

У VHDL послідовні оператори подібні до операторів мов високого рівня. Вони можуть використовуватися усередині паралельних операторів або самостійно (без паралельних операторів) усередині тіла архітектури.

6.9.1. Оператор привласнення значення змінній

Оператор привласнення значення змінній ":=" використовується для заміни поточного значення змінної новим значенням. Така заміна здійснюється по схемі:

ім’я_змінної := нове_значення_змінної;

Зрозуміло, такому рядку повинна передувати декларація змінної. Як нове значення може виступати число, запис логічного перетворення або яке-небудь інший вираз. У 6.5. приведені як приклади декларації змінних, так і приклади використання даного оператора привласнення. Один з цих прикладів показує, що привласнення значень змінній може здійснюватися безпосередньо при її декларації.

Відзначимо, що змінні в мові VHDL є локальними. Це означає, зокрема, що якщо яка-небудь змінна задекларована, наприклад, усередині опису певного процесу, то при її використанні під тим же ім'ям усередині опису іншого процесу або в іншому місці тіла архітектури вона сприйматиметься компілятором як нова змінна і тому повинна заново декларуватися.

6.9.2. Привласнення значень сигналам (призначення сигналів)

Оператор привласнення значення сигналу “<=” використовується (після декларації сигналу) в наступній схемі:

имя_сигнала <= значение_сигнала;

Як і для змінній, значенням сигналу може бути число, запис логічного перетворення або яке-небудь інший вираз. Деякі приклади використання даного оператора приведені в 6.2 і 6.8. Як додаткові приклади приведемо наступні:

...

signal z_bus : bit_vector (3 downto 0);

signal c_bus : bit_vector (0 to 4);

...

z_bus (3 downto 2) <= "00";

c_bus (1 to 2) <= z_bus (3 downto 2);

...

Сигнали і змінні одного і того ж типу можуть бути привласнені один одному (див. приклад в 6.8).

6.9.3. Оператор "якщо" (if)

Оператор if мови VHDL подібний до операторів if в інших мовах програмування. Розглянемо лише той випадок, коли даний оператор розміщується усередині оператора процесу. В цьому випадку для оператора if використовується наступна схема:

if (умова) then

...; -- оператори

elsif (умова) then

...; -- оператори

else

...; -- оператори

end if;

Вираз умови має тип BOOLEAN. Перехід до операторів, записаних після деякої умови, здійснюється, якщо ця умова виконується (має значення TRUE). У вказаному випадку реалізується також перехід від даних операторів до рядка end if (ігноруються інші попередні нею оператори). У одному операторові if може бути одна (жодної) або більш частин elsif. Ключове слово elsif слід відрізняти від слів else if. Частина else може бути тільки одна (або жодної). Перехід до операторів, записаних в цій частині, здійснюється, якщо жодне із записаних вище (після оператора if) умов не виконується.

Об'єкт (мал. 12) при використанні оператора if можна описати таким чином:

entity ANDOR is

port (e0,e1,e2 : in bit;

z : out bit);

end ANDOR;

architecture RTL1 of ANDOR is

begin

process (e0,e1,e2)

begin

if ((e0 and e1) = '0') then

z <= '1';

elsif (e2 = '0') then

z <= '0';

else

z <= '1';

end if;

end process;

end RTL1;