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