Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пособие_VHDL.doc
Скачиваний:
59
Добавлен:
13.11.2019
Размер:
3.18 Mб
Скачать
    1. Переменные и сигналы

Язык VHDL основан на концепции строгой типизации данных, т. е. любой единице информации в программе должно быть присвоено имя, и для нее должен быть определен тип. Определение информационной единицы размещается в разделе деклараций программного модуля, в котором оно используется, или иерархически предшествующего модуля. Тип данных определяет набор значений объектов, отнесенных к этому типу, а также набор допустимых преобразований этих данных. Данные разных типов несовместимы в одном выражении.

Как уже указывалось ранее, для описания взаимодействия между параллельными операторами в язык VHDL введена специальная категория данных – сигналов (SIGNAL). Сигналы кроме значения несут информацию о временных и причинно следственных связях в моделируемой системе.

Аргументами параллельного оператора могут быть сигналы или константы. Такой оператор исполняется при изменении значения любого аргумента (в том числе сигнала из списка чувствительности оператора PROCESS).

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

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

Различие «сигналов» и «переменных» состоит в порядке фиксации значения этих данных при исполнении операторов присваивания. Переменная принимает новое значение сразу после исполнения оператора присваивания. При исполнении операторов, которые должны присваивать значения сигналам (параллельным и последовательным), вычисленное значение, как было указано выше, сохраняется во временном буфере, называемом драйвером сигнала. Окончательное присваивание же значения сигналу (перепись из драйвера) производится только после исполнения всех операторов программы, вызванных общим событием. Значение хранящееся в драйвере последовательного оператора присваивания может изменяться в ходе исполнения следующего ряда последовательных операторов присвоения и перезаписываться будет то значение, которое установится последним. Отсюда часто используемое программистами присвоение в начале процесса значение сигнала по умолчанию. В частности при исполнении последовательного оператора присваивания некоторому сигналу этот сигнал сохраняет старое значение не только до исполнения всех операторов процесса или до оператора останова WAIT, а в общем случае и до всех других операторов, инициированных общим событием. Реакция на предсказанное изменение сигнала (новое событие) будет воспроизводиться системой моделирования либо через явно указанный в операторе присваивания временной интервал, либо – в случае «нулевой» задержки после отработки всех событий, предсказанных на этот момент времени ранее выполненными операторами. Правила изменения значений на выходных портах совпадают с правилами изменения сигналов.

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