Configuration configuration_name of entity_nameis

-- configuration declarations (подраздел деклараций)

forarchitecture_name --начало конфигурирующего блока

for instance_label:component_name -- оператор спецификации конфигурации (выбора описания комп.)

use entity library_name.entity_name(arch_name);

end for;

-- other for clauses

end for; --конец конфигурирующего блока

end configuration_name;

 

Каждый внедряемый компонент ассоциируется с некоторым субпроектом (некоторой парой entity/architecture) и эта ассоциация определена спецификацией конфигурации (configuration specification). Обычно, Выбор конкретного внедряемого компонента (Спецификация Компонента) появляется в декларативной части модуля (проекта в который внедряется компонент), где используются образцы (экземпляры) компонента. Если по некоторым причинам, такую ассоциацию желательно отложить (или задерживать) на позже, то объявлениеконфигурации может использоваться для определения таких задержанных спецификаций компонента.

Объявление конфигурации начинается с ключевого слова configuration за которым следуют: имя (идентификатор) конфигурации, ключевое слово of (для), имя конфигурируемого проекта и ключевое слово of. Декларативная часть оператора декларации конфигурации может содержать: классы использования (use clauses), спецификации атрибута (attribute) и объявления группы (group).

Главная часть оператора объявления конфигурации содержит так называемый конфигурационный блок (block configuration ). Конфигурационный блок (block configuration ) начинается с ключевого слова forи заканчивается парой ключевых слов end for;. Он указывает, какая архитектура будет использоваться с создаваемым конфигурируемым VHDL проектом (с entity которые следует конфигурировать), а также какие описания (определения- исходные проекты) компоненты будут использоваться в конфигурации при внедрении компонента.

Оператор объявления конфигурации может содержать другие конфигурационные блоки, позволяя этим способом определить иерархические структуры. Такая конфигурация может называться иерархической (hierarchical), в то время как конфигурация без иерархии может называться простой (simple).

Простая конфигурация содержит ссылку только на одно тело архитектуры того проекта который подлежит конфигурированию (Пример 1).

Иерархические конфигурации, с другой стороны, позволяют вкладывать конфигурационные блоки. (Пример 2).

Конфигурационный блок (block configuration ) позволяет также связывать операторы внедрения компонента с проектами содержащие определения (описания) компонента.

Когда порты и общие параметры (generics) в объявлении компонента не соответствуют их дубликатам в объявлении внедряемого объекта, так называемая индикация явного связывания (binding indication) может быть применена. Просто как говорят явное уведомление о том, как порты и generics в объекте должны быть связаны с портами и generics образца компонента. Для явного уведомления о связи общих параметров и портов используются операторыgeneric mapи port map.Эта методика используется в Примере 1. Однако, ее рекомендуется использовать всегда, поскольку ее применение повышает разборчивость и читабельность проектов.

 

Два главных метода связывания, которые могут быть применены в спецификациях конфигурации: связывание объектов (entity) и связывание конфигураций. Они иллюстрируются в Примерах 1 и 3, соответственно.