БИЛИОТЕКА, ИХ ОПИСАНИЕ НА ЯЗЫКЕ VHDL
Для облегчения процесса проектирования описание объекта моделирования и различные варианты описания его архитектуры обычно размещают в библиотеках (они организованы как отдельные файлы). Это позволяет редактировать описание одних объектов, не затрагивая файлы, в которых расположены описания других объектов. Кроме того, библиотеки могут быть использованы в различных проектах, что позволяет лучше организовать повторное использование уже разработанных объектов.
В библиотеках размещают описания объектов, которые могут использоваться одним или несколькими пользователями в рамках одного или нескольких проектов. В библиотеках также могут размещаться описания констант, переменных, типов, процедур, функций, а также декларации конфигураций. Эти описания тоже могут формироваться в отдельные пакеты в соответствии с тематикой, а потом объединяться в библиотеки.
Если описание архитектуры включает объекты, размещенные в библиотеках, то непосредственно перед описанием архитектуры необходимо указать имена библиотек, которые используются. Это имеет следующий синтаксис:
library library__name {,...}
Здесь 1ibrary_name — идентификатор, имя библиотеки.
Для того чтобы в тексте модуля каждый раз не указывать имя библиотеки часто используемого объекта, можно описать условную ссылку. Она имеет следующий синтаксис:
use library_name. (identifier | all)
Здесь identifier — имя объекта из библиотеки library_name
|
|
Если в описании указано ключевое слово all, то все объекты, содержащиеся в библиотеке, можно использовать в теле использующего эту библиотеку объекта без указания имени библиотеки (все они становятся непосредственно видимыми).
ПАКЕТЫ, ИХ ОПИСАНИЕ НА ЯЗЫКЕ VHDL
Механизм пакетов позволяет сгруппировать некоторые описания в единую совокупность — пакет, который далее может многократно использоваться в проектах. Пакет может использоваться как в различных частях одной модели, так и в разных моделях.
Обычно имеется в виду, что описания, объединяемые в пакет, некоторым образом логически между собой связаны, имеют некий содержательный критерий для их объединения. Однако это, конечно, вопрос стиля программирования, а не собственно языка VHDL.
Механизм пакетов позволяет объединить описания типов, констант, процедур, функций, компонентов. Сами эти описания выполняются так же, как в различных частях объекта моделирования.
Описание пакета состоит из декларативной части и тела пакета. Описание декларативной части пакета имеет следующий синтаксис:
package name is
{package_dec1arative_item}
end [package] [name];
Описание тела пакета имеет следующий синтаксис:
|
|
package body name is
{package_body_declarative_item}
end [package body] [name] ;
Описание пакета может состоять только из декларативной части (например, если он содержит только описание типов, констант, переменных).
Описание тела пакета может содержать описание дополнительных типов, подтипов, констант и подпрограмм. Все описания, выполненные в декларативной части пакета, автоматически видны в его теле.
Описания сигналов в тело пакета включаться не могут.
ОПЕРАТОР ГЕНЕРАЦИИ GENERATE ЯЗЫКА VHDL
Если объект моделирования включает в себя много однотипных компонентов, назначения для них имеют сходную структуру. В модели они занимают много места и затрудняют ее понимание. Оператор генерации generate позволяет в этом случае более компактно описать модель. Он позволяет организовать цикл с параметром, с однократным параметризованным описанием внутри, на базе которого будут сгенерированы описания для всей группы однотипных Компонентов. Фактически это некоторая форма макрооператора в языке VHDL. Оператор генерации имеет следующий синтаксис:
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 содержит фактические значения обобщающих констант.
Допускается вложенность операторов генерации.
Секций else и elseif условная форма оператора generate не имеет. Как и обычный оператор назначения компонентов, оператор generate является параллельным оператором. В теле самого оператора generate также могут быть указаны только параллельные операторы.
Дата добавления: 2020-04-08; просмотров: 155; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!