VHDL: Компонент проти Сутності


25

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


1
Будь-хто, може, створити виклик тегів "проти". Дякую.
Пітерстоун

7
Ви маєте на увазі "проти", як у назві? Гм, не гарна ідея, міркує.
stevenvh

2
Не всі тут використовують Visual Studio .... о зачекайте ... ви мали на увазі інше "проти", правильно? ;-)
cbmeeks

Відповіді:


17

Ось аналогія, яка допомагає деяким людям (особливо тим, хто має фізичну електроніку):

componentПовідомляє компілятору «там буде що - то з такого роду штирів на ньому сидів, зветься це в якійсь - то момент, але не хвилюйтеся , зараз». Це свого роду визначає "розетку". Ви можете продовжити опис того, що "підключається" до цієї "розетки" тощо.

Це 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] ... Книга (PDF на 84 сторінках) [4] Виглядає добре [5] Переважно для посилань [6]


1
вам здається, що ви віддаєте перевагу посиланням у кінцевих примітках, але саме так це робиться в друку, і не використовуйте гіперпосилання, як це призначено для використання. Ви могли написати "Дивіться це посилання для контексту та більш детальної інформації". Набагато зручніший у користуванні, AFAIC. Просто пропозиція.
stevenvh

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

0

Суб'єкт - це проектна одиниця, порти вводу-виводу якої вказані. Entity просто визначає зовнішні порти, тоді як внутрішнє функціонування визначається відповідною архітектурою. Компонент - це повна одиниця дизайну, що складається як із сутності, так і з архітектури. Першим кроком є ​​оголошення компонента (із зазначенням його імені та портів), а потім інстанціалізація компонента (відображення портів).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.