Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПЛИС_20_01_15 / Учебное пособие Основы VHDL_3.doc
Скачиваний:
38
Добавлен:
12.02.2015
Размер:
84.48 Кб
Скачать

Процессы

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

[метка_процесса :] process [(список сигналов)] is

{декларация}

begin

{тело процесса}

end process [метка_процесса];

Список сигналов посл ключевого слова process называется списком чувствительности. Если список чувствительности задан при описании, то процесс начинает выполнение действий при изменении любого из описанных сигналов. Если список чувствительности отсутствует, то процесс активируется при изменении любого сигнала. В секции декларация включаются описания локальных констант, типов и переменных, используемых в процессе. В секции тело процесса раполагаются последовательные операторы, которые выполняются начиная с первого. Метка процесса облегчает отладку программы, но не является необязательной.

Операторы назначения сигнала

Операторы назначения сигнала можно разделить на непосредственно выполняемые в архитектурном теле проекта и выполняемые в теле процесса. Ко второму типу относятся операторы if и case.

Синтаксис оператора if выглядит следующим образом:

If [условие1] then

{выполняемые действия}

elsif [условие2] then

{выполняемые действия}

elsif [условие3] then

{выполняемые действия}

else

{выполняемые действия}

end if;

Выполнение оператора состоит в последовательном вычислении условий после if и каждого elsif до тех пор пока одно из них не возвратит значение true, либо все не возвратят false. В случае возвращения условием значения true, соответствующая последовательность действий будет выполнена.

Синтаксис оператора case выглядит следующим образом:

case [выражение] is

when [значение1 выражения] =>

{выполняемые действия}

when [значение2 выражения] =>

{выполняемые действия}

when others =>

{выполняемые действия}

end case;

Оператор выбирает ту последовательность операторов, которой соответствует значение выражения. Если выражение не совпадает ни с одним из значений, выполняется последовательность операторов, задаваемых others.

В операторе case используется только одно выражение, поэтому для него при синтезе используется только один мультиплексор, в отличии от оператора if, где каждое условие elsif задействует мультиплексор. Использование мультиплексоров увеличивает аппаратные затраты на реализацию и увеличивает временные задержки, понижая предельную частоту работы устройства, поэтому во всех случаях, где возможно использование оператора case, его надо предпочесть оператору if.

К первому типу относятся оператор условного присваивания when и оператор выборочного присваивания withselect.

Синтаксис оператора with выглядит следующим образом:

[сигнал] <= [значение1] when [условие1] else

[значение2] when [условие2] else

[значение3];

синтаксис оператора withselect

with [выражение] select

[сигнал] <= [значение1] when [значение1 выражения],

[значение2] when [значение2 выражения],

[значение3] when others;