Мне интересно, в чем разница между компонентом и сущностью. Я хотел бы знать, в каких случаях лучше использовать компоненты вместо сущностей. Спасибо большое.
Вот аналогия, которая помогает некоторым людям (особенно тем, кто занимается физической электроникой):
A component
сообщает компилятору: «В какой-то момент будет что-то с такими контактами, но пока не беспокойтесь». Он как бы определяет «сокет». Вы можете продолжить описание того, какие «провода подходят» к этой «розетке» и т. Д.
An entity
- это что-то конкретное с именем и набором контактов, которые компилятор затем может «подключить» к этому «гнезду» (и, следовательно, подключиться к «проводам»).
Обратите внимание, что вам не нужноcomponent
делать «прямое создание экземпляра», что означает, что компилятор уже знает об объекте, поэтому «сокет» не нужно определять отдельно. Фактически, это был бы мой рекомендуемый подход, так как в противном случае component
это дополнительный уровень, который необходимо синхронизировать.
Вам необходимо использовать компоненты, если вы смешиваете Verilog и VHDL и вам нужно использовать блок Verilog в VHDL. Затем component
это сокет, и только намного позже компилятор/разработчик сможет подключить Verilog к сокету.
Сущность — это реальный интерфейс к элементу дизайна, который может иметь несколько архитектур. Сущность определяет, как вещи входят и выходят, а архитектура определяет, как работает проектная единица. Таким образом, у вас может быть несколько способов реализации одной и той же функции, которые будут описываться одним и тем же объектом.
Компонент — это идеальная или «виртуальная» единица проекта. Когда вы выполняете проектирование сверху вниз (т. е. вы собираете верхний уровень до того, как будут разработаны блоки нижнего уровня), вы можете использовать компонент для описания типа интерфейса, который вы ожидаете для своих проектных модулей. Вы можете думать об этом как о заполнителе или черном ящике для будущей реальной реализации.
Используя конфигурации , вы можете привязать конкретный экземпляр компонента к определению сущности. Здесь вы можете указать, какой порт должен подключаться к какому порту. Это сопоставляет, как компонент, который был определен в идеальном смысле, сопоставляется с сущностью, которая была фактически реализована.
На практике я обнаружил, что компоненты обычно не нужны и создают еще один уровень абстракции, который обычно не используется. Вы можете пропустить использование (и потребность) в компонентах, непосредственно создав экземпляр объекта и указав, какую архитектуру использовать для этого экземпляра объекта.
Например:
MyDesignUnit : entity library_name.entity_name(architecture_name)
port map(
...
Из [1] ниже:
Существует важное различие между сущностью, компонентом и экземпляром компонента в VHDL. Объект описывает интерфейс проекта, компонент описывает интерфейс объекта, который будет использоваться в качестве экземпляра (или подблока), а экземпляр компонента представляет собой отдельную копию компонента, которая была подключена к другим частям и сигналам. . Сравнить их с процессом проектирования макетной платы из готовых деталей. Сущность и архитектура подобны книге данных, описывающей интерфейс и схемы того, как работает часть. Компонент похож на краткий список выводов, который поставляется вместе с деталью, чтобы описать, как он должен быть подключен. Экземпляр компонента — это сама фактическая часть, которых у вас может быть много, каждая из которых работает независимо.
См. [1] для контекста и более подробной информации.
В сети есть множество учебных пособий по VHDL, например [2][3]... Книга (84-страничный PDF) [4] Выглядит хорошо [5] В основном для ссылок [6]
Сущность — это единица проекта, для которой указаны порты ввода-вывода. Entity просто определяет внешние порты, а внутреннее функционирование определяется соответствующей архитектурой. Компонент — это завершенная единица проектирования, состоящая как из сущности, так и из архитектуры. Первым шагом является объявление компонента (указание его имени и портов), а затем создание экземпляра компонента (сопоставление портов).
Питерстоун
Стивенвх
cbmeeks