Применение языка VHDL при проектировании специализированных СБИС. Ивченко В.Г. - 22 стр.

UptoLike

Составители: 

23
...
use full_p.all -- подключаются все описания, введенные
-- в пакете full_p
...
1.7. Процессы
Оператор процесса определяет независимый последовательный процесс, представляющий поведение
некоторой части проекта. Выполнение оператора процесса состоит из повторяющегося выполнения
последовательности операторов. После того, как последний оператор в этой последовательности будет
выполнен, выполнение оператора процесса продолжается, начиная с первого оператора в этой
последовательности.
Процесс состоит из объявлений и операторной части, следующей за словом begin. В объявлениях процесса
можно создавать переменные, в то время как объявлять сигналы в этой части не допускается. Внутренние
переменные имеют область видимости только внутри процесса, в котором они объявлены.
Предложения внутри процесса называются последовательными предложениями (sequential statements). В
отличие от выражений конкретизации компонентов в структурном стиле описания и параллельного назначения
в потоковом стиле, выполняемых одновременно, предложения в процессе (потоковое описание) выполняются
одно за другим подобно тому, как это происходит в языках программирования. Предложение выполняется
только тогда, когда процесс выполнения достигает этого предложения. Типы предложений, допустимые в
процессах, включают все условные предложения и предложения циклов, которые встречаются в языках
программирования высокого уровня.
В языке VHDL существует два варианта оператора-процесса
process(X,Y,Z) process
______________ _______
______________ _______
end process; end process;
Вариант А Вариант В
Вариант А - это процесс, который активизируется, когда меняет свое значение некоторый сигнал в его
списке чувствительности (сигналы X, Y, Z). Вариант В не имеет списка сигналов запуска и предполагает, что
процесс всегда активен. Вариант А фактически эквивалентен следующему:
process
________
________
WAIT on X,Y,Z
end process;
После начала моделирования процесс выполняется только один раз, а затем переходит в состояние
ожидания (в конце выполнения), пока не изменятся сигналы, которые его перезапустят. При использовании
процесса варианта А нельзя использовать операторы WAIT, поскольку они всегда выполнялись бы до
подразумеваемого оператора WAIT в конце процесса, т.е. был бы потерян смысл процесса варианта А. В то же
время процессы варианта В могут иметь любое необходимое число операторов WAIT.
Оператор процесса называется пассивным процессом, если ни сам процесс, ни любая процедура, для которой
этот процесс является родительским, не содержат оператор назначения сигнала. Такой процесс или любой
параллельный оператор, эквивалентный такому процессу, может использоваться в разделе операторов
объявления объекта.
1.8. Функции и процедуры
В VHDL, как и в других языках, функции используются для выполнения часто используемых операций. Для
создания функции необходимо описать ее объявление и тело:
package conv is
function IntVal(loc: adress) return integer;
package body conv is
function IntVal(loc: adress) return integer is
variable adr_tmp:integer;
begin
for i in 15 downto 0 loop
adr_tmp:=adr_tmp*2;
if loc(i)='1' then
adr_tmp:=adr_tmp+1;
end if;
end loop;
return adr_tmp;
end IntVal;