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

Примечание:

  1. Операторы Generate обеих модификаций могут содержать в своем подразделе конкурентных операторов любой из следующих операторов: любую разновидность параллельного назначения значения сигналу, оператор process, оператор block, оператор параллельного утверждения, параллельный оператор вызова подпрограммы-процедуры, оператор внедрения компонента, и другие операторы Generate (т.е. операторы: concurrent signal assignment statement, process statement, block statement, concurrent assertion statement, concurrent procedure call statement, component instantiation statement, and another generate statement).

  2. Последний механизм позволяет вкладывать проекты имеющих регулярных структур и формировать многомерные массивы из компонентов.

Пример 3.

Этот пример иллюстрирует возможности оператора Generate при создании проекта 16-ти разрядного параллельного сумматора с последовательным переносом по структурной методологии. Сумматор этого вида представляет собой полурегулярную структуру, содержащую 1 полусумматор и 15 полных одноразрядных сумматоров. Схема электрическая принципиальная сумматора показана на Рис.3

Рис.3

Субпроект полусумматора. (Этот Субпроект является определением компоненты (Component half_adder), которая будет один раз внедрена, в проект параллельного сумматора с систолической структурой)

-----------------------------------------------------------------------------------------------------------

ENTITY Half_adder IS

PORT (a,b : IN Bit; Sum, c : OUT Bit );

END ENTITY Half_adder ;

ARCHITECTURE Half_adder OF Half_adder IS

BEGIN

Sum <= a XOR b;

c <= a AND b;

END ARCHITECTURE Half_adder ;

------------------------------------------------------------------------------------------------------------

Субпроект полного одноразрядного сумматора. (Этот Субпроект является определением компоненты (Component full_adder), которая будет 15 раз внедрена, в проект параллельного сумматора с систолической структурой)

----------------------------------------------------------------

ENTITY Full_adder IS

PORT (a,b,c0 : IN Bit ; Sum, c : OUT Bit );

END ENTITY Full_adder ;

ARCHITECTURE Full_adder OF Full_adder IS

BEGIN

Sum <= (a XOR b) XOR c0 ;

c <= (a AND b) OR (a AND c0) OR (b AND c0);

END ARCHITECTURE Full_adder ;

Проект вехнего уровня в котором внедряются сомпоненты Half_adder и Full_adder посредством оператора Generate

--------------------------------------------------------------------------

ENTITY parallel_adder_N IS

GENERIC (width : Integer := 16);

PORT (Sum : OUT Bit_Vector (0 TO width -1);

a,b : IN Bit_Vector (0 TO width -1); carry : OUT Bit );

END ENTITY parallel_adder_N;

ARCHITECTURE parallel_adder OF parallel_adder_N IS

SIGNAL c_in : Bit_Vector (1 TO width );

Component half_adder is

PORT (a,b : IN Bit; Sum,c : OUT Bit );

End Component;

Component full_adder is

PORT (a,b,c0 : IN Bit ; Sum, c : OUT Bit );

End Component;

begin

adder: FOR i IN 0 TO width-1 GENERATE

ml_bit: IF i=0 GENERATE

ml_cell: half_adder PORT MAP (a(0), b(0), sum(0), c_in(1));

END GENERATE ml_bit;

sr_bit: IF i>0 AND i<width-1 GENERATE

sr_cell: full_adder PORT MAP (a(i), b(i), c_in(i), sum(i), c_in(i+1));

END GENERATE sr_bit;

st_bit: IF i=width-1 GENERATE

st_cell: full_adder PORT MAP (a(i), b(i), c_in(i), sum(i), carry);

END GENERATE st_bit;

END GENERATE adder;

END ARCHITECTURE parallel_adder ;

----------------------------------------------------------------------------------------------------------

Примечание: В проекте примера 3 разрядность параллельного сумматора определена в операторе GENERIC (width : Integer := 16);

Важное замечание: Сам оператор GENERATE относится конкурентных операторов и поэтому всегда располагается в подразделе конкурентных выполняемых операторов тела архитектуры.

4. О задании глобальных настроечных параметров для проекта из внешней среды

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

Особую актуальность вопрос задания параметров проекта из внешней среды приобретает в настоящее время, так как практически каждый год обновляется технологическая база производства СБИС микросхемотехники. Если например, при производстве СБИС 3 года назад максимально допустимое время задержки на вентиль лежало в пределах 10 нс, то сегодня эта цифра составляет 2 –3 нс.

Возможность управлять характеристиками (параметрами) VHDL проектов из внешней среды практически делает их независимыми от технологической базы производства СБИС и электрических характеристик самих СБИС, т.к. VHDL проектирование легко обеспечивает настройку разработанных проектов под конкретные возможности СБИС.

Это качество обеспечивает возможность многократного использования разработанных VHDL проектов, т.е. их переносимость.

В языке VHDL возможность задавать общие (глобальные) параметры для настройки конкретных характеристик разрабатываемых проектов цифровых устройств из внешней среды обеспечивается оператором Generic( )

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