Изучение VHDLАрхитектура объекта.
Архитектура объекта представляет собой отдельную часть, в которой описано, каким образом реализован объект. Ее синтаксис:
\тело архитектуры\::= architecture \идентификатор\ of \имя объекта\ is
{\объявление в блоке\}
begin
{ \параллельный оператор\}
end [architecture][\идентификатор\];
Идентификатором обозначается имя конкретного тела архитектуры, а имя объекта указывает, который из объектов описан в этом теле. Одному объекту проекта может соответствовать несколько архитектур, в каждой из которых описан один из вариантов реализации объекта.
Объявление в теле архитектуры такое же, как в блоке и им может быть: объявление и тело процедуры или функции, объявление типа и подтипа, объявление файла, псевдонима, константы, глобальной переменной, объявление и спецификация атрибута, объявление группы, описание use, а также объявление компонентов. Объявленные в теле архтектуры типы, сигналы, подпрограммы видимы только в пределах этой архитектуры.
Исполнительную часть архитектуры составляют параллельные операторы, такие как процесс, блок, параллельное присваивание сигналу и др. Эти операторы исполняются параллельно.
Так как все операторы в исполнительной части тела архитектуры – параллельные, их взаимный порядок – безразличен. Хорошим стилем считается, когда параллельные операторы ставятся в последовательности, соответствующей цепочкам вершин граф-схемы алгоритма, реализуемого в архитектуре.
Примером тела архитектуры служит архитектура для объявления объекта RS – триггера:
entity RS_FF is --объявление объекта
generic(delay:time);
port(R, S: in bit;
Q: out bit:='0';
nQ: out bit:='1');
begin
assert (R and S) /='1' report" In RS_FF R=S=1" severity error;
end entity RS_FF;
architecture BEHAV of RS_FF is --описание архитектуры объекта
begin
process(S,R)
variable qi: bit;
begin
if S='1' then
qi:='1' ;
elsif R='1' then
qi:='0';
end if;
Q<=qi after delay;
nQ<=not qi after delay;
end process;
end architecture BEHAV;
Данную программу, включающую объявление объекта и тело архитектуры можно транслировать и моделировать. Если из объявления объекта удалить исполнительную часть и описание generic, то программа будет написана синтезируемым стилем и ее можно также компилировать в логическую схему.