![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Architecture STRUCT_T entity TEST_INV использует component INV_COMP. Прикрепление component к entity INVERTER и архитектуры (architecture) STRUCT_I реализовано спецификацией configuration, которая появляется в декларативной части тела architecture.
Important notes:
· Конфигурация назначает одну и только одну структуру тела архитектуры к данному объекту.
· Инструментальные средства Синтеза вообще не поддерживают конфигурации.
· Для конфигурации некоторого проекта, оба – объект (entity) и конфигурация configuration имя конфигурации of имя проекта is должны быть объявлены в той же самой библиотеке.
4. Примеры использование оператора конфигурации (configuration …is…) при создании структурных проектов с применением компонентного стиля проектирования
При построении иерархических VHDL проектов часто проходится уточнять какой именно вспомогательный VHDL проект будет использоваться в качестве компонента в головном проекте. Причем, часто требуется уточнять не только имя (entity) вспомогательного проекта, а также имя архитектуры, связанной в текущий момент с именем вспомогательного проекта. Это обстоятельство возникает по той причине, что в языке VHDL одному имени entity проекта могут соответствовать несколько архитектур, Каждая из которых содержит свой вариант описания работы проектируемого цифрового устройства. Эта задача решается при помощи оператора конфигурации. Этот оператор имеет сложное конструктивное устройство.
Таким образом, Оператор конфигурации (configuration …is) дает возможность уточнить, какой реально существующий вспомогательный проект будет внедряться в качестве компонента в головной проект. Наличие оператора конфигурации расширяет возможность маневра при разработке проектов. Дело в том, что интерфейсы используемых для внедрения разных компонентов могут быть одинаковыми, т.е. могут совпадать с интерфейсами многих других проектов, причем работа каждого отдельного проекта может также описываться разными архитектурами. В то же время один и тот же проект VHDL может иметь несколько архитектур. Поэтому оператор конфигурации дает возможность уточнить какой конкретно проект вы желаете использовать в качестве компонента, и какая архитектура должна ему соответствовать в текущем головном проекте.
Итак, пусть требуется разработать VHDL проект цифрового устройства, содержащего некоторые компоненты (см. рис. 5.5). Причем, при создании VHDL проекта требуется уточнить, какие именно компоненты (подпроекты) и с какими архитектурами будут использованы при построении цифрового устройства. (Обратите внимание, что все компоненты, содержащиеся в структурной схеме рис. 5.5, имеют одинаковые интерфейсы.)
Рис. 5.5
Головной проект (Вариант 1. - Списочное связывание портов) Головной проект entity conf_gat сохранен в поддиректории conf_gat_dir.
library work;
entity conf_gat is
port (A, B: in bit;
Y: out bit);
end conf_gat;
architecture conf_gat_a of conf_gat is
component and_e is
port (x1, x2: in bit;
y: out bit);
end component and_e;
component nand_e is
port (x1, x2: in bit;
y: out bit);
end component nand_e;
signal Y_s1, Y_s2: bit;
Begin
U1: and _e port map (A, B, Y_s1);
U2: nand _e port map (A, B, Y_s2);
U3: and _e port map (Y_s1,Y_s2, Y);
end conf_gat_a;
-- оператор конфигурации проекта
configuration conf_gat_c of conf_gat is
for conf_gat_a
for U1: and_e use entity work.and_e (and_a);
end for;
for U2: nand_e use entity work.nand_e (nand_a);
end for;
for U3: and_e use entity work.and_e (and_a);
end for;
end for;
end configuration conf_gat_c;
Головной проект (Вариант 2. Именованное связывание портов)
Library work;
entity conf_gat is
port (A, B: in bit;
Y: out bit);
end conf_gat;
architecture conf_gat_a of conf_gat is
component and_e is
port (x1, x2: in bit;
y: out bit);
end component and_e;
component nand_e is
port (x1, x2: in bit;
y: out bit);
end component nand_e;
signal Y_s1, Y_s2: bit;
Begin
U1: and _e port map (x1 => A, x2 => B, y => Y_s1);
U2: nand _e port map (x1 => A, x2 => B, y => Y_s2);
U3: and _e port map (x1 => Y_s1, x2 => Y_s2, y => Y);
end conf_gat_a;
-- оператор конфигурации проекта
configuration conf_gat_c of conf_gat is
for conf_gat_a
for U1: and_e use entity work.and_e (and_a);
end for;
for U2: nand_e use entity work.nand_e (nand_a);
end for;
for U3: and_e use entity work.and_e (and_a);
end for;
end for;
end configuration conf_gat_c;
Дата публикования: 2014-11-03; Прочитано: 313 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!