Библиотеки, их описание на языке VHDL.

Для облегчения процесса проектирования описание объекта моделирования и различные варианты описания его архитектуры обычно размешают в библиотеках (они организованы как отдельные файлы). Это позволяет редактировать описание одних объектов, не затрагивая файлы, в которых расположены описания других объектов. Кроме того, библиотеки могут быть использованы в различных проектах, что позволяет лучше организовать повторное использование уже разработанных объектов.

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

Если описание архитектуры включает объекты, размешенные в библиотеках, то непосредственно перед описанием архитектуры необходимо указать имена библиотек, которые используются. Это имеет следующий синтаксис:

library имя библиотеки…

Для того чтобы в тексте модуля каждый раз не указывать имя библиотеки часто используемого объекта, можно описать условную ссылку. Она имеет следующий синтаксис:

use имя библиотеки (identifier | all)

Если в описании указано ключевое слово all, то все объекты, содержащиеся в библиотеке, становятся непосредственно видимыми.

Пакеты, их описание на языке VHDL.

При построении полноразмерных моделей проектируемых устройств есть большое число программных объектов. Их описания приходится многократно использовать как внутри одной модели, так и в разных моделях. Механизм пакетов позволяет сгруппировать некоторые описания в единую совокупность — пакет, который далее может многократно использоваться в проектах. Пакет может использоваться как в различных частях одной модели, так и в разных моделях.

Описание пакета состоит из декларативной части и тела пакета. Описание декларативной части пакета имеет следующий синтаксис:

package имя пакета is

end [package] [имя пакета];

Описание тела пакета имеет следующий синтаксис:

package body name is

(элементы тела пакета)

end [package body] [name];

Описание пакета может состоять только из декларативной части. Пример такого описания:

package epu_types is

constant word_size;

positive: =16;

subtype word is: bit_vector (word_size-l downto 0);

end package epu_types;

Обращение к объекту, расположенному в пакете, имеет следующий синтаксис:

Library_name. package_name. object_name.

где: library_name — имя процедуры, package_name — имя пакета, object_name — имя объекта.

Оператор генерации generate языка VHDL.

Структурное описание позволяет описать систему как совокупность компонентов — подсистем, объединенных сигналами.

Для того чтобы один объект моделирования мог быть включен в состав другого объекта, его необходимо декларировать как компонент.

Декларация компонента имеет следующий синтаксис:

Component имя компонента is [generic (generic_interface_list);]

[port (port_interface_list);]

end component [имя компонента];

Задав декларацию компонентов, мы описываем спецификацию проектируемого объекта, определив, какого типа компоненты в него входят.

Оператор генерации (generate).

Оператор генерации generate позволяет компактно описать модель из входящих в нее компонентов.

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

Group_label: for index in range generate

Element_label: component_name [generic map (generic_accosiation_list)]

[port map (port_accosiacion_list)]

end generate [Group__label];

Список Generic_association_list содержит фактические значения обобщающих констант.

Допускается вложенность операторов генерации

Задание конфигурации компонентов на языке VHDL. Конфигурационная спецификация и конфигурационная декларация.

В общем случае объект моделирования может иметь несколько описаний архитектуры.

entity LA3=> erc 1 bch 1 of LA3

erc 2 bch 2 of LA3

…..

Для задания нужного описания используется конфигурация, т. е. связывание объекта с одним из описаний его архитектуры. Использование конфигурации позволяет создавать гибкие модели.

Формы задания конфигурации:

1.)Конфигурация спецификации:

for(метка экземпляра компонента, all, others): имя_компонента

use entity имя_entity[(имя архитектуры тела)];

end for;

Пример:

for bit0, bit1:flipflop

use entity work. edge_triggered_dff(basic);

end for;

Изменение конфигурации спецификации приводит к изменению текста модели объекта, что неудобно.

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

configuration имя_конфигурации of имя_entity is

for имя конфигурации. описания

{for(…) end for;}

end for

end configuration имя_конфигурации.

Пример:

сonfiguration conf1 of ent_bit is

for ent_bits_struct

for bit0, bit1:flipflop

use entity work. edge_triggered_dff(basic);

end for;

end for;

end configuration conf1;

Задание конфигурации компонентов на языке VHDL. Правила связывания по умолчанию.

В общем случае объект моделирования может иметь несколько описаний архитектуры.

entity LA3=> erc 1 bch 1 of LA3

erc 2 bch 2 of LA3

…..

Для задания нужного описания используется конфигурация, т. е. связывание объекта с одним из описаний его архитектуры. Использование конфигурации позволяет создавать гибкие модели.

Формы задания конфигурации:

1.)Конфигурация спецификации:

for(метка экземпляра компонента, all, others): имя_компонента

use entity имя_entity[(имя архитектуры тела)];

end for;

Пример:

for bit0, bit1:flipflop

use entity work. edge_triggered_dff(basic);

end for;

Изменение конфигурации спецификации приводит к изменению текста модели объекта, что неудобно.

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

configuration имя_конфигурации of имя_entity is

for имя конфигурации. описания

{for(…) end for;}

end for

end configuration имя_конфигурации.

Пример:

сonfiguration conf1 of ent_bit is

for ent_bits_struct

for bit0, bit1:flipflop

use entity work. edge_triggered_dff(basic);

end for;

end for;

end configuration conf1;

Правила связывания по умолчанию:

a. Для компонентов автоматически имеется объект с тем же именем;

2.) если используется архитектура тел, то для связывания используется то, которое компилируется последним

Наши рекомендации