Конспект лекций по предмету "Психология"


Лекция №8 5-тый курс Тема: Структурная методология описания проектов цифровых систем устройств посредством оператора configuration

Файл: Lekz8_Stru_Metod_Oper_Configur.doc

Лекция №8 (5-тый курс)
Тема: Структурная методология описания проектов цифровых систем (устройств) посредством оператора configuration
Вопросы по теме:
1. Вводные замечания
2. Объявление конфигурации проекта – (Design Configuration Declaration)
3. Спецификация конфигурации – (Configuration Specification)
4. Примеры использование оператора конфигурации (configuration …is…) при создании структурных проектов с применением компонентного стиля проектирования
5. Приложение 1: Метод прямого внедрения субпроекта (компонента)

1.Вводные замечания
Язык VHDL поддерживает два варианта структурной методологии описания проектов цифровых устройств.
Первый вариант структурной методологии базируется на использовании компонентного (component) стиля описания проекта. Компонентный (component) стиль описания проекта предполагает наличия в создаваемом проекте явно заданного объявления конструкций языка VHDL вида component name_component is (…) end component; (Объявление видаcomponent name_component is (…) end component;может содержаться также в библиотеке.Существуют специальные компонентные библиотеки).При этом предполагается, определение субпроекта с которым ассоциируется объявленныйкомпонент уже существует или будет создан попозже. (((элементов (моделей) из которых создается проект))) . Затем объявленный компонент явным образом внедряется в проект посредством оператора внедрения компонента вида: метка : component имя_компонента port map( ...);.Компонентный (component) стиль описания проекта поддерживается практически всеми существующими САПР.
В традиционном компонентный (component) стиле описания проекта применяется технология жесткого связывания (связь по именам) объявленного в проекте компонента с его описанием (с субпроектом, где содержится определение компонента). Технология жесткого связывания (связь по именам) часто затрудняет проведение экспериментальных исследований над проектами, так как при возникновении необходимости модификации проекта требует вмешательства в VHDL программу исследуемого проекта, т.е. внесения изменений в проект на уровне операторов, что становится очень затруднительным при работе с проектами большого объема.

Второй вариант структурной методологии базируется на использовании стиля прямого внедрения субпроекта (Смотри приложение 1). Стиль прямого внедрения субпроекта не требует в создаваемом проекте верхнего уровня иметь в наличии специального объявления субпроекта как component.Однако, при использовании стиля прямого внедрения субпроекта воператоре внедрения субпроектатребуется указатьполноеимя субпроекта и имя связанной с ним архитектуры. Пример оператора внедрения субпроекта имеет вид:

X1 : entity WORK.XOR_GATE_4(XOR_BODY_4) port map (S1,S2,S3);

Для достижения видимости описания внедряемого субпроекта из создаваемого проекта верхнего уровня в нем требуется также указать имя библиотеки, в которой хранится описание откомпилированного субпроекта. Применение стиля прямого внедрения субпроекта также требует вмешательства в VHDL программу исследуемого проекта, т.е. внесения изменений в проект на уровне операторов, что становится очень затруднительным при работе с проектами большого объема.
Третий вариант структурной методологии базируется на использовании стиля конфигурирования проекта посредством использования специального конфигурирующего файла. Как правило, этот файл небольшой по объему, компилируется отдельно. Наличие конфигурирующего файла не требует вмешательства в VHDL программу исследуемого проекта, т.е. внесения изменений в проект на уровне операторов, что становится очень затруднительным при работе с проектами большого объема. Базовыми конструктивными элементами этого файла являются:
o Оператор объявления конфигурации;
o Оператор спецификации описания компонента (проекта, где содержится определения компонента), которое вызывается при внедрении образца компонента в проект



Возникает вопрос:« Какое отношение к выше сказанному имеет оператор configuration configuration_name of entity_nameis … end configuration_name;?»
Ответ на поставленный вопрос будет такой:Операторconfiguration …is .. имеет самое прямое и непосредственное отношение как к структурной методологии базирующейся на использовании компонентного (component) стиля описания проекта так и к структурной методологии построения проектов базирующейся на использовании стиля прямого внедрения субпроекта.
Особенно оператор полезен и практически незаменим при разработке иерархических проектов имеющих высокие требования к их техническим характеристикам. При наличии высоких требований к техническим характеристикам проекта его приходится разрабатывать в нескольких модификациях (конфигурациях). Теперь, если имеется такой много конфигурационный проект, возникает вопрос: « Как самым быстрым способом переключаться между многообразием вариантов имеющегося проекта для исследования их характеристик и выбора оптимальной структуры проекта?». Cамый простой быстрый и удобный способ выбора одного варианта проекта из имеющегося множества модификаций обеспечивает оператор configuration …isна базе которого создаются Специальные VHDL проекты, которые размещаются, как правило, в специальных конфигурационных файлах.
Специальные VHDL проекты такого рода принято называть конфигурирующими проектами. По отношению к традиционным VHDL проектам конфигурирующие проекты являются как бы настройкой над ними или, как говорят, суперпроектами в общей иерархии проектов.

Важно также уяснить, язык VHDL достаточно хорошо поддерживает возможность создания специального конфигурирующего проекта.
Эта возможность поддерживаются такими свойствами языка:
1. В языке VHDL каждому автономному проекту (каждому entity) можно ставить в соответствие несколько разных тел архитектур имеющих разные имена. Это означает, что конструктор имеет возможность создать один проект, имеющий одно и тоже имя, один и тот же интерфейс, но разные варианты его внутреннего устройства. Естественно, что все варианты одного и того же проекта должны иметь одинаковые функциональные свойства и назначение.
2. В языке VHDL можно построить разные варианты цифрового устройства обладающих одинаковыми функциональными свойствами и назначением сопоставляя им множество разных автономных проектов снабженных разными имена entity иимена архитектур. Устройство тел архитектур может быть также разным. При этом требование одно: все автономные проекты должны иметь одинаковый интерфейс.
3. В языке VHDL описание процедуры конфигурирования проекта посредством оператора configuration …is может размещается в отдельном файле. Этот файл, как правило, небольшой по объему. Его можно отдельно компилировать, даже в случае отсутствия описаний (определений) компонент. Его наличие не требует от конструктора при выборе очередного варианта проекта вмешательства в структуру проекта верхнего уровня.
Таким образом, указанные выше свойства языка VHDL предоставляет конструктору возможность иметь в своем распоряжении большое многообразие разных вариантов субпроектов с одинаковыми функциональными свойствами, разными характеристиками и разным внутренним устройством.
Опять возникает вопрос: « Как построить оптимальный проект производя простой перебор разных вариантов субпроектов, сравнивать межу собой технические характеристики отдельных конфигураций проекта ?»
Разрешить поставленный вопрос можно путем создания специального конфигурирующего проекта (конфигурационного файла) основой для создания которого является оператор объявления конфигурации configurationname_configuration is … end name_configuration;.

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

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

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

Configuration configuration_name of entity_nameis

forarchitecture_name --начало конфигурирующего блока
for instance_label:component_name -- оператор спецификации конфигурации… use entity library_name.entity_name(arch_name);


Пример 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
· Объявление конфигурации содержит также оператор спецификации компонента
· Объявление конфигурации может располагаться в отдельном конфигурационном файле или в файле проекта, который она конфигурирует
· Оператор спецификации компонента содержащийся в объявление конфигурации четко устанавливает связь между объявленным компонентом и используемым при внедрении компонента его описанием (с проектом в котором содержится определение компонента)


Спецификация конфигурации - Configuration Specification

Составной частьпроекта конфигурации является Оператор спецификации описания компонента (проекта, где содержится определения компонента), которое… Оператор спецификации описания компонента имеет две формы синтаксиса:
Форма 1:

For instance_label:component_name use entity

library_name.entity_name(arch_name);
Форма 2:

For instance_label:component_name use configuration

Каждый внедряемый component связан с некоторым проектом (с парой entity/architecture) и эта ассоциация {связь} определена спецификацией конфигурации… Когда порты и generics в объявлении component не соответствует{не… Если отсутствует configuration (или в виде объявления или спецификации) для component, то по умолчанию поддерживается,…

Example 1

Architecture STRUCT_T entity TEST_INV использует component INV_COMP. Прикрепление component к entity INVERTER и архитектуры (architecture) STRUCT_I…
Important notes:


Головной проект (Вариант 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 U1: and_e use entity work.and_e (and_a);
end for;



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;


Условное графическое обозначение головного проекта


Иерархическая диаграмма головного проекта




Вспомогательный проект entity and_e

entity and_e is -- определение компонента and_e
port (x1, x2 : in bit;
y : out bit);
end and_e ;
architecture and_a of and_e is
begin
y <= x1 and x2;
end and_a;


Вспомогательный проект entity nand_e

entity nand_e is -- определение компонента nand_e
port (x1, x2 : in bit;
y : out bit);


Описание компонента

На Рис.П2 показана суть метода прямого внедрения компонента на физическом уровне


Не сдавайте скачаную работу преподавателю!
Данный конспект лекций Вы можете использовать для создания шпаргалок и подготовки к экзаменам.

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем конспект самостоятельно:
! Как написать конспект Как правильно подойти к написанию чтобы быстро и информативно все зафиксировать.