Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lekz8_Stru_Metod_Oper_Configur.doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
3 Мб
Скачать
☆

2. Объявление конфигурации проекта – (Design Configuration Declaration)

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

Базовыми операторами при создании проекта Конфигурации являются оператор объявление конфигурации (Configuration Declaration) и оператор спецификации конфигурации (configuration specification).

Оператор объявления конфигурации имеет следующий синтаксис:

configuration configuration_name of entity_name is

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

    for architecture_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, соответственно.

Пример 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;

begin

  -- instantiation of INV_COMP component (внедрение компонента):

  LH:INV_COMP generic map (10 ns) port map (S1,S2);

end STRUCT_T;

-- объявление простой конфигурации для внедряющего проекта

configuration CONFIG_TINV of TEST_INV is

--Подраздел объявлений объявленной конфигурации CONFIG_TINV чист

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

for STRUCT_T -- indicates architecture body of TEST_INV (объявление тела

--архитектуры внедряющего проекта, в которую будет

-- внедряться компонент

  -- indicates design entity for LH instantiation statement:

-- (объявление внедряемого компонента и связывание компонента с его описанием):

  for LH : INV_COMP use entity WORK.INVERTER (STRUCT_I)

-- связывание общих параметров и портов описания внедряемого

-- проекта с общими параметрами и портами компонента

    -- (indicates generic and port aspects):

    generic map (PropTime => TimeH)

    port map (IN1 => IN_A, OUT1 => OUT_A);

  end for;

-- Конец конфигурирующего блока ???????

end for ;

end CONFIG_TINV;

Объявление конфигурация CONFIG_TINV для проекта TEST_INV позволяет ассоциировать компоненту LH : INV_COMP с проектом INVERTER и его телом архитектуры STRUCT_1

Объявление конфигурации с именем CONFIG_TINV может использоваться как пример типового объявления конфигурации. В объявлении конфигурации CONFIG_TINV имеется только один конфигурирующий блок. Этот блок содержит объявление внедряемого компонента INV_COMP. В операторе объявления внедряемого компонента с меткой LH указано, что проект INVERTER назначен компоненту INV_COMP.

В объявлении конфигурации CONFIG_TINV имеется один конфигурируемый блок, в котором указано, что тело архитектуры STRUCT_T будет использоваться (подлежать конфигурации). Конфигурируемая (ющая!!!!!!!!) компонента INV_COMP появляется в конфигурирующем блоке.

.

Рис.1. Пример декларации конфигурации

Пример 2.

-- block configuration for architecture body STRUCT:

-- конфигурирующий блок для тела архитектуры STRUCT:

for STRUCT

-- component configuration specified in architecture body STRUCT:

-- спецификация конфигурируемого (встраиваемого) component в тело архитектуры STRUCT:

  for SPEECH_CPU: SPEECH

    use entity SP_LIB.DIG_REC(ISD)

    generic map (TimeRec => 20 sec);

      -- block configuration for architecture body ISD of DIG_REC:

-- конфигурирующий блок for архитектурного тела для DIG_REC:

      for ISD

      -- component configuration specified in architecture body ISD:

-- спецификация конфигурируемого (встраиваемого) component в тело архитектуры ISD:

        for AD_CONV : ADC_1 -- relates to instance AD_CONV of ADC_1

          use entity ANALOG_DEV.ADC;

        end for; -- for AD_CONV

      end for; -- for ISD

  end for; -- for SPEECH_CPU

end for; -- for STRUCT

Конфигурирующий блок for с указанием тела архитектуры STRUCT содержится в объявлении конфигурации. Затем, в Конфигурирующем блоке for STRUCT имеется конфигурируемая компонента SPEECH_CPU: SPEECH, которая также содержит конфигурирующий блок for ISD. Конфигурирующий блок for ISD конфигурирует тело архитектуры ISD, которое содержит оператор внедрения с меткой AD_CONV. В целом конфигурирующий блок for STRUCT определенный здесь является иерархическим!!!!!!.

Пример 3.

configuration Conf_Test of Test is

  for STRUCTURE_T

    for T_1 : DEC use configuration CONF_E;

    end for;

  end for;

end configuration Conf_Test;

В этом примере, объявлена конфигурация Conf_Test для проекта EXAMPLE. Она связывает субпроект EXAMPLE с компонентом T_1 : DEC, используя его конфигурацию CONF_E , как аспект проекта for T_1 образца компонента тела архитектуры STRUCTURE_T.

Рисунок 2. Пример объявления конфигурации Conf_Test

Важные примечания:

  • Конфигурация назначает одну и только одну структуру тела архитектуры проекту, который она конфигурирует (к данному объекту!!!).

  • Инструментальные средства Синтеза вообще не поддерживают конфигурации.

  • Для конфигурации некоторого проекта, оба – объект (entity) и конфигурация configuration имя конфигурации of имя проекта is должны быть объявлены в той же самой библиотеке.

  • Объявление конфигурации начинается с ключевого слова configuration

  • Объявление конфигурации содержит также оператор спецификации компонента

  • Объявление конфигурации может располагаться в отдельном конфигурационном файле или в файле проекта, который она конфигурирует

  • Оператор спецификации компонента содержащийся в объявление конфигурации четко устанавливает связь между объявленным компонентом и используемым при внедрении компонента его описанием (с проектом в котором содержится определение компонента)

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]