logo search
mat_mod

51. Понятия сигнала и переменной в vhdl.

Существуют два основных вида объектов, используемых для хранения данных. Первый вид, используемый в основном в структурных данных и описания потоков, это сигнал. Второй, который может быть использован только в процессах называется переменной. Переменная ведет себя, как можно было бы ожидать на языке, программирование, которое сильно отличается от поведения сигнала.

Хотя переменные представляют данные как сигнал, что у них нет или вызвать события и изменяется по-разному. Переменные изменяются с присваивания. Например,

а: = b;

присваивает значение b в a. Значение просто копируются немедленно. Поскольку переменные могут быть использованы только в процессах, оператор присваивания может появиться только в процессе. Задание выполняется, когда процесс выполняется, как описано в предыдущем разделе.

Следующий пример показывает, как переменная используется в процессе.

count: process (x)

variable cnt : integer := -1;

begin

cnt:=cnt+1;

end process;

Объявления переменных предстать перед ключевым словам begin процесса заявлением, как в примере. Объявление переменной так же, как сигнал декларации, кроме ключевой variableслово используется вместо signal. Объявление в данном примере включает необязательную часть, которая определяет начальное значение переменной, когда моделирование начинается.Инициализации часть включены, добавив:= и некоторые постоянные выражения по типу частью декларации. Эта инициализация часть также может быть включен в сигнал деклараций.Переменная cnt объявлен типа число. Целочисленный тип представляет отрицательные и положительные целые значения.

Процесс в этом примере содержит один оператор, оператор присваивания. Это назначение вычисляет значение cntплюс один, и сразу же сохраняет новое значение в переменной cnt. Таким образом, кол-во будет увеличиваться на один каждый раз, этот процесс будет выполнен. Помните, что из предыдущего раздела, что процесс выполняется один раз в начале моделирования, а затем каждый раз, когда событие происходит на любой сигнал в списке чувствительности. Так как значение инициализации -1, а процесс выполняется один раз перед началом моделирования, значение cnt будет равен 0, когда моделирование начинается. После моделирования начинается, cnt будет увеличиваться на один каждый раз изменения сигнала х, так как х в списке чувствительности. Если х битный сигнал, то этот процесс будет подсчитать количество передний и задний фронты, которые происходят на сигнал х.