
- •1.Вводные замечания
- •2. Объявление конфигурации проекта – (Design Configuration Declaration)
- •3. Спецификация конфигурации - Configuration Specification
- •Оператор спецификации описания компонента имеет две формы синтаксиса: Форма 1:
- •4. Примеры использование оператора конфигурации (configuration …is…) при создании структурных проектов с применением компонентного стиля проектирования
- •Условное графическое обозначение головного проекта
- •Иерархическая диаграмма головного проекта
- •Описание компонента
3. Спецификация конфигурации - Configuration Specification
Проект конфигурации (конфигурирующий проект) – это конструкция, которая определяет, какие образцы (варианты) компонента в создаваемом иерархическом проекте привязаны к нему и его архитектуре, и как проекты, содержащие описания компонента, связана с компонентами, чтобы формировать полный иерархический проект.
Составной часть проекта конфигурации является Оператор спецификации описания компонента (проекта, где содержится определения компонента), которое вызывается при внедрении образца компонента в проект.
Оператор спецификации описания компонента имеет две формы синтаксиса: Форма 1:
for instance_label:component_name use entity
library_name.entity_name(arch_name);
Форма 2:
for instance_label:component_name use configuration
library_name.config_name;
Каждый внедряемый component связан с некоторым проектом (с парой entity/architecture) и эта ассоциация {связь} определена спецификацией конфигурации (specification configuration). Спецификация компонент появляются в декларативной части того иерархического проекта, где используются образцы компонент. Этим путем образцы components могут быть конфигурированы в пределах тела architecture, не используя отдельное объявление configuration. Такая Спецификация более проста, но также и менее гибка. Пример 1 содержит спецификацию configuration для того же самого component как в Примере 1 в описании объявления configuration.
Когда порты и generics в объявлении component не соответствует{не согласовываются} с их объявлениями в объявлении entity, так называемая binding indication может примениться. Просто говоря она включает явное указание на то, как порты and generics в entity должны быть связаны к портам и generics образца component. Предложения generic map и port map используются для этой цели. Эта методика используется в Примере 1. Практически, однако, рекомендуется согласовывать generics и порты components и соответствующего проекта, поскольку это улучшает четкость.
Если отсутствует configuration (или в виде объявления или спецификации) для component, то по умолчанию поддерживается, так называемое связывание по умолчанию (default binding) . Это означает для такого component, будет выбран такой entity, название которого совпадает (согласовывается) с названием объявленного компонента. Должны также совпадать названия port, типы port и параметры generics и т.д. Если entity имеет больше чем одну architecture, то последняя откомпилированная архитектура используется
Example 1
entity INVERTER is
generic (PropTime : TIME := 5 ns);
port ( IN1 : in BIT; OUT1 : out BIT);
end INVERTER;
architecture STRUCT_I of INVERTER is
begin
OUT1 <= not IN1 after PropTime;
end STRUCT_I;
entity TEST_INV is end TEST_INV;
architecture STRUCT_T of TEST_INV is
signal S1, S2 : BIT := '1';
-- INV_COMP component declaration:
component INV_COMP is -–объявление компонента
generic (TimeH : TIME);
port ( IN_A : in BIT; OUT_A : out BIT );
end component;
for LH : INV_COMP -- спецификация конфигурации (specification configuration) связывающая компонент с родительским проектом, т.е. с описанием компонента
use entity INVERTER (STRUCT_I)
-- indicates generic and port aspects:
generic map (PropTime => TimeH)
port map (IN1 => IN_A, OUT1 => OUT_A);
begin
-- instantiation of INV_COMP component (внедрение компонента):
LH : INV_COMP generic map (10 ns)
port map (S1, S2);
end STRUCT_T;
Architecture STRUCT_T entity TEST_INV использует component INV_COMP. Прикрепление component к entity INVERTER и архитектуры (architecture) STRUCT_I реализовано спецификацией configuration, которая появляется в декларативной части тела architecture.
Important notes:
Конфигурация назначает одну и только одну структуру тела архитектуры к данному объекту.
Инструментальные средства Синтеза вообще не поддерживают конфигурации.
Для конфигурации некоторого проекта, оба – объект (entity) и конфигурация configuration имя конфигурации of имя проекта is должны быть объявлены в той же самой библиотеке.