Программирование на зыке VHDL: Конспект лекций, страница 6

3.3. Переменные - Variables

3.3.1. Объявление переменных - Variable Declarations

-  Переменные объявляются внутри процесса Process

-  Значения переменных присваиваются с помощью символов  :=

-  Объявление переменных:

VARIABLE <name> : <DATA_TYPE> := <value>;

VARIABLE temp : STD_LOGIC_VECTOR (7 downto 0);

-  Присвоение переменной значения обрабатывается незамедлительно – задержки не возникает

3.3.2. Присвоение значений переменным - Assigning values to Variables

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 (")

Пример А:

Пример В:

3.3.3. Сравнение сигналов и переменных

SIGNALS (<=)

VARIABLES (:=)

Присвоение

Приемник <= Источник

Приемник:= Источник

Применение

Отображает соединения в схеме

Отображает локальную память

Видимость

Глобально доступны (взаимодействие между процессами)

Являются локальными (внутри процесса)

Поведение

Обновляются в конце выражения Process (новое значение внутри процесса недоступно)

Обновляются незамедлительно (новое значение доступно сразу)

3.4. Последовательные операторы - Sequential Statements

К последовательным операторам относятся

-  Оператор IF-THEN

-  Оператор CASE

-  Оператор организации цикла Loop

3.4.1. Оператор If-Then

-  Условия проверяются в порядке записи, сверху вниз. Приоритет при выполнении.

-  Первое условие, имеющее значение true, вызывает на исполнение соответствующую последовательность операторов.

-  Если все условия имеют значение false, выполняется последовательность опреаторов в блоке "ELSE".

-  Аналогично установке значения сигналов.

 

3.4.2. Оператор Case

-  Условия обрабатываются одновременно. Приоритет отсутствует.

-  Должны быть рассмотрены ВСЕ возможные варианты условий

БлокWHEN OTHERS обрабатывает все оставшиеся варианты условий, которые явно не описаны в операторах Case.

-  Аналогично установке значения сигналов.

3.4.3. Последовательные циклы Sequential LOOPS

-  Бесконечный цикл

·  Повторяется бесконечно, пока не будет выполнен оператор 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;

3.4.3.1. Цикл FOR с использованием переменной. Устройство сдвига влево на 4 бита

4. Иерархическое проектирование

4.1. Особенности структурного моделирования

4.2. Использование библиотечных моделей компонентов

Пусть требуется создать модель схемы:


Пусть в пакете САПР имеется библиотека PS, при просмотре которой мы нашли описание компонентов:


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