VHDL объект и архитектура дизайн - PullRequest
4 голосов
/ 22 мая 2011

С помощью Ada я могу разделить свои модульные блоки на спецификации и тело с помощью файлов .ads и .adb.

Можно ли разделить сущность и архитектуру VHDL?Если да, есть ли соглашение об именах или рекомендуемый стиль для этого?И можно ли поместить объекты в пользовательскую библиотеку / пакет?

Ответы [ 2 ]

6 голосов
/ 23 мая 2011

Библиотеки

Все компилируется в библиотеку.По умолчанию это называется «работа», но вы можете переопределить это.Я редко использую это, хотя - иногда полезно с внешним IP, если есть конфликты пространства имен.Как прокомментировал Чиггс, использование библиотек для создания пространств имен является хорошей практикой.Большинство синтезаторов могут работать с несколькими библиотеками , хотя это было не всегда.Все симуляторы могут (насколько я знаю).Также есть немного больше хлопот, связанных с их настройкой (вы должны указать компилятору, где они все находятся).


может быть пример - скажем, у вас есть контроллер i2c и контроллер spi.Вы можете вызвать оба блока controller и скомпилировать их в свои собственные библиотеки с именами i2c и spi, а затем создать их экземпляры следующим образом:

i2c_instance:entity i2c.controller...etc
spi_instance:entity spi.controller...etc

или вы можете назвать их i2c_controller и spi_controller and do:

i2c_instance:entity work.i2c_controller...etc
spi_instance:entity work.spi_controller...etc

И библиотеки не являются "точно такими же", как папки на жестком диске.Они управляются компилятором VHDL, поэтому вы создаете и отображаете их, используя любой синтаксис, который использует инструмент.

Например, с Modelsim, vlib создает библиотеку в определенном месте в файловой системе (поэтому она выглядиткак папка на данный момент) и vmap говорит компилятору, как сопоставить предложение use some_lib; с определенным битом файловой системы.

Объекты, архитектуры, пакеты

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

Аналогично с packages и package body s - тела в отдельном файле означают, что вы можете просто перекомпилировать эту часть без перекомпиляции всего остального.Обратите внимание, что package s не предназначены для помещения сущностей.

(Кроме того, Modelsim имеет переключатель -just, который позволяет хранить все в одном файле и просто компилировать выбранные биты файлов, например:только architecture и / или body часть (и))

Сводка

  • Скомпилируйте повторно используемые ядра в свою собственную библиотеку для защиты своего пространства имен
  • Скомпилируйте все остальное в библиотеку work
  • Поместите полезные константы, функции, процедуры, определения типов в один или несколько пакетов
  • Поместите сущности и архитектуры в один или несколько файловвкус и стиль разработки больше всего на свете
  • Помещение пакетов и корпусов в один или несколько файлов - это вопрос вкуса и стиля разработки больше всего на свете
5 голосов
/ 22 мая 2011

Сущность и архитектура являются отдельными единицами проектирования .Они могут находиться в одном файле или в разных файлах.Расширения файлов остаются прежними: обычно .vhd, но .vhdl также возможно.Для имен файлов не существует общепринятого соглашения об именах.(Есть сотни соглашений на самом деле, так что это так же полезно, как вообще никаких соглашений) Все работает;Например, вы можете использовать myEntity.vhd и myEntity_RTL.vhd.

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

Не путайте библиотеки с пакетами , хотя!Пакет - это модуль компиляции, который содержит многократно используемые объявления.Библиотека - это именованный набор модулей компиляции.

...