- Переменные объявляются внутри процесса Process
- Значения переменных присваиваются с помощью символов :=
- Объявление переменных:
VARIABLE <name> : <DATA_TYPE> := <value>;
VARIABLE temp : STD_LOGIC_VECTOR (7 downto 0);
- Присвоение переменной значения обрабатывается незамедлительно – задержки не возникает
VARIABLE temp : STD_LOGIC_VECTOR (7 downto 0);
• All bits:
temp := "10101010";
temp := x"AA"; (1076-1993)
• Single bit:
temp(7) := ‘1’
• Bit-slicing:
temp (7 downto 4) := "1010";
• Single-bit: single-quote (')
• Multi-bit: double-quote (")
Пример А:
Пример В:
SIGNALS (<=) |
VARIABLES (:=) |
|
Присвоение |
Приемник <= Источник |
Приемник:= Источник |
Применение |
Отображает соединения в схеме |
Отображает локальную память |
Видимость |
Глобально доступны (взаимодействие между процессами) |
Являются локальными (внутри процесса) |
Поведение |
Обновляются в конце выражения Process (новое значение внутри процесса недоступно) |
Обновляются незамедлительно (новое значение доступно сразу) |
К последовательным операторам относятся
- Оператор IF-THEN
- Оператор CASE
- Оператор организации цикла Loop
- Условия проверяются в порядке записи, сверху вниз. Приоритет при выполнении.
- Первое условие, имеющее значение true, вызывает на исполнение соответствующую последовательность операторов.
- Если все условия имеют значение false, выполняется последовательность опреаторов в блоке "ELSE".
- Аналогично установке значения сигналов.
- Условия обрабатываются одновременно. Приоритет отсутствует.
- Должны быть рассмотрены ВСЕ возможные варианты условий
БлокWHEN OTHERS обрабатывает все оставшиеся варианты условий, которые явно не описаны в операторах Case.
- Аналогично установке значения сигналов.
- Бесконечный цикл · Повторяется бесконечно, пока не будет выполнен оператор EXIT |
[loop_label]LOOP --sequential statement EXIT loop_label; END LOOP; |
- Цикл While · Проверка условия в конце цикла |
WHILE <condition> LOOP --sequential statements END LOOP; |
- Цикл FOR · Цикл с фиксированным числом проходов |
FOR <identifier> IN <range> LOOP --sequential statements END LOOP; |
Пусть требуется создать модель схемы:
-- Inverter
-- Philips CPLD Applications
-- Aug 26, 1998
library ieee ;
use ieee.std_logic_1164.all ;
entity INV is
port ( IN0 : in std_logic ;
Z : out std_logic ) ;
end INV ;
architecture v1 of INV is
begin
Z <= not IN0 after 1 ns ;
end v1 ;
-- 3-input NAND
-- Philips CPLD Applications
-- Aug 26, 1998
library ieee ;
use ieee.std_logic_1164.all ;
entity ND3 is
port ( IN2,IN1,IN0 : in std_logic ;
Z : out std_logic ) ;
end ND3 ;
architecture v1 of ND3 is
begin
Z <= not (IN2 and IN1 and IN0) after 1 ns ;
end v1 ;
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.