![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Структурное описание интерпретирует устройство как набор компонентов, связанных между собой сигналами. Грубо говоря - это таблица соединений (netlist). Рассмотрим простую схему управления (рис.1.8) и ее структурную модель.
Рис. 1.9. Устройство местного управления
entity ctr_lck is
port (data, mr, clk, din: in BIT; rdy, ctrla:out Bit);
end ctr_lck;
architecture str_view of ctr_lck is
component AND2 -- декларируется компонент AND2
port (x,y in BIT; z: out BIT);
end component;
component DFF -- декларируется компонент DFF
port (d, clock: in BIT; Q,NOTQ: out BIT);
end component;
component NOR2 -- декларируется компонент NOR2
port (a,b: in BIT; z: out BIT);
end component;
signal s1,s2: BIT;
begin
D1: DFF port map (data, clk, s1,s2); -- выражение 1
A1: AND2 port map (s2, din, ctrla); -- выражение 2
N1: NOR2 port map (s1, mr, rdy); -- выражение 3
end str_view;
Здесь декларируются три компонента: AND2, DFF и NOR2. В тело архитектуры экземпляры компонентов вводятся с помощью выражений 1, 2 и 3. Компоненты связаны между собой сигналами s1 и s2. В декларации называется имя компонента и его интерфейс, что очень схоже с декларацией интерфейса устройства. Выражение для экземпляра компонента должно в первую очередь дать имя экземпляру или ярлык. Например, D1 – это ярлык для экземпляра триггера DFF. Далее следует список связей (association list). Он устанавливает связь между портами компонента и портами и сигналами устройства. Существует два варианта связи: позиционный и поименный. В позиционном списке первый порт декларации (слева направо) компонента соответствует первому порту экземпляра компонента (слева направо), второй – второму и так далее. Именно такой вариант списка был использован в приведенном выше примере. Вместо этого можно было использовать поименный вариант списка связей, например, выражение 3 можно было бы записать так:
N1: NOR2 port map (a=>s1, b=> mr, z=>rdy);
Рассмотрим еще пример. На рис.1.2 была приведена схема полусумматора. Его структурная модель должна предстать как набор следующих компонентов: XOR на два входа (например, 7486 или отечественный аналог ЛП5) и AND на два входа (например, 7408 или отечественный аналог ЛИ1).
entity half_adder is
port(a, b: in BIT; sum, cur: out BIT);
end half_adder;
architecture h_a_str of half_adder is
component a_7486
port (a_2: in BIT;
a_3: in BIT;
a_1: out BIT);
end component;
component a_7408
port (a_2: in BIT;
a_3: in BIT;
a_1: out BIT);
end component;
begin
X1: a_7486 port map (a, b, sum);
A1: a_7408 port map (a, b, cur);
end h_a_str;
Названия компонентов и их портов приведены такими, какими они даны в библиотеке фирмы ALTERA – известного производителя программируемых логических схем.
Декларации компонентов, использованные в архитектуре h_a_str полусумматора half_adder, можно упаковать в отдельный файл, например, maxplus2.vhd:
package maxplus2 is
component a_7486
port (a_2: in BIT;
a_3: in BIT;
a_1: out BIT);
end component;
component a_7408
port (a_2: in BIT;
a_3: in BIT;
a_1: out BIT);
end maxplus2;
Файл maxplus2 при компиляции может быть помещен в библиотеку, например, с названием altera. Ссылка на библиотеку позволит не декларировать компоненты в архитектуре:
library altera;
use altera.maxplus2.all;
entity half_adder is
port(a, b: in BIT; sum, cur: out BIT);
end half_adder;
architecture h_a_str of half_adder is
begin
X1: a_7486 port map (a, b, sum);
A1: a_7408 port map (a, b, cur);
end h_a_str;
Дата публикования: 2015-03-29; Прочитано: 199 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!