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

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

Пожалуйста, может ли кто-нибудь создать тег вызова «vs». Спасибо.
Вы имеете в виду "против", как в названии? Хм, не очень хорошая идея, мне кажется.
Не все здесь используют Visual Studio .... о, подождите ... вы имели в виду другое «против», верно? ;-)

Ответы (4)

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

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

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

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

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

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

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

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

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

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

Например:

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

Из [1] ниже:

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

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


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

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

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