VHDL: компонент против сущности


25

Мне интересно, в чем разница между компонентом и сущностью. Я хотел бы знать, в каких случаях лучше использовать компоненты вместо сущностей. Огромное спасибо.


1
Пожалуйста, кто-нибудь может создать тег вызова vs. Спасибо.
Питерстоун

7
Вы имеете в виду "против", как в названии? Хм, не очень хорошая идея, метинкс.
Stevenvh

2
Не все здесь используют Visual Studio .... о, подождите ... вы имели в виду другие "против", верно? ;-)
cbmeeks

Ответы:


17

Вот аналогия, которая помогает некоторым людям (особенно из области физической электроники):

A componentговорит компилятору, что "в нем будут что-то с такими выводами, которое в какой-то момент будет вызывать это, но пока не волнуйтесь". Это как бы определяет «сокет». Вы можете перейти к описанию того, что «подключается» к этой «розетке» и т. Д.

An entity- это нечто конкретное с именем и набором выводов, которые компилятор может затем «подключить» к этому «сокету» (и, следовательно, подключить к «проводам»).

Обратите внимание , что вам не нужноcomponent вы можете сделать «прямой экземпляр» , что означает , компилятор уже знает об объекте , так что «гнездо» не должно быть определенно отдельно. На самом деле, это был бы мой рекомендуемый подход, так как в противном случае componentэто дополнительный уровень, который нужно синхронизировать.

Вам нужно использовать компоненты, если вы смешиваете Verilog и VHDL и вам нужно использовать блок Verilog в VHDL. Тогда componentэто сокет, и не намного позже может компилятор / разработчик подключить Verilog к сокету.


Компонент похож на пакет DIP. Вы можете использовать один и тот же 8-контактный операционный усилитель несколько раз в цепи, и это всегда 8 контактов. Они являются отдельными компонентами, даже если они относятся к операционному усилителю одного типа. Сущность похожа на распиновку таблицы данных; все отдельные операционные усилители имеют одинаковую распиновку.
ajs410

14

Объект реальный интерфейс к конструкции устройства , которое может иметь несколько архитектур. Сущность определяет, как вещи входят и выходят, в то время как архитектура определяет, как работает единица дизайна. Таким образом, у вас может быть несколько способов реализации одной и той же функции, которая будет описана одной и той же сущностью.

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

Используя конфигурации, вы можете привязать конкретный экземпляр компонента к определению сущности. Здесь вы можете указать, какой порт должен подключаться к какому порту. Это отображает, как компонент, который был определен в идеальном смысле, отображается на сущность, которая была фактически реализована.

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

Например:

MyDesignUnit : entity library_name.entity_name(architecture_name)
               port map(
                     ...

2

Из [1] ниже:

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

Смотрите [1] для контекста и более подробно.


Есть множество учебных пособий по VHDL, например, [2] [3] ... Книга (84 стр. PDF) [4] Хорошо выглядит [5] В основном для ссылок [6]


1
Вы, кажется, предпочитаете ссылки в сносках, но именно так это и делается в печати, и вы не используете гиперссылки, как предполагается. Вы могли бы написать «Смотрите эту ссылку для контекста и более подробно». Гораздо более удобный, AFAIC. Просто предложение.
Стивенвх

2
Старый мозг :-). Я склоняюсь к максимальной информации (как вы заметили :-)), а метод endnote позволяет читателям увидеть, откуда эта ссылка и есть ли на том же сайте - как это иногда бывает. Для очень длинных ссылок я бы склонялся к использованию bit.ly / j.mp со значимым именем. Я также видел, как пользователи не хотят нажимать на ссылку (хотя их можно скопировать и вставить для проверки (дополнительная работа)). НО точка отмечена, и я буду рассматривать каждый вариант в будущем.
Рассел МакМэхон

0

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.