VHDL:组件与实体


25

我想知道组成一个实体之间有什么区别。我想知道在哪种情况下最好使用组件而不是实体。非常感谢。


1
请,任何人都可以创建一个名为“ vs”的标记。谢谢。
彼得斯通

7
您是说标题中的“ vs”吗?方法,不是一个好主意。
stevenvh 2011年

2
并不是这里的每个人都使用Visual Studio。...等等...您是说其他“ VS”对吗?;-)
cbmeeks

Answers:


17

这是一个可以帮助某些人(特别是来自物理电子背景的人)的类比:

A component告诉编译器“在某些时候会有某种带有这种管脚的东西称呼它,但现在不必担心”。它定义了一个“套接字”。您可以继续描述什么“连接”到该“套接字”等。

An entity是带有名称和一组引脚的特定内容,编译器随后可以将其“插入”到该“插槽”(并因此连接到“电线”)。

请注意,你不需要一个component可以做“直接实例化”,这意味着该编译器已经知道一个整体,从而不再需要“套接字”不另行规定。实际上,这将是我推荐的方法,否则将component需要额外同步。

需要,如果你是混合Verilog和VHDL和必要的VHDL内使用Verilog的块使用的组件。然后component是套接字,直到很晚以后编译器/阐述者才能将Verilog插入套接字。


组件就像DIP包一样。您可以在一个电路中使用相同的8引脚运算放大器十次,而它总是8引脚。即使它们是同一类型的运算放大器,它们也是独立的组件。实体就像数据表上的引脚排列;所有单独的运算放大器都具有相同的引脚排列。
ajs410 2011年

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。只是一个建议。
stevenvh 2011年

2
老脑:-)。我倾向于最大程度地获取信息(如您将注意到的:-)),并且endnote方法使读者可以看到链接的来源以及某些链接是否在同一站点上-有时会发生这种情况。对于非常长的链接,我倾向于使用具有有意义名称的bit.ly /j.mp。我还看到用户对单击链接保持沉默(即使可以复制并粘贴这些链接以进行检查(额外工作))。注意了要点,以后我将把它们作为选择。
罗素·麦克马洪

0

实体是指定输入输出端口的设计单元。实体仅定义外部端口,而内部功能由相应的体系结构指定。组件是由实体和体系结构组成的完整设计单元。第一步是组件声明(指定其名称和端口),然后是组件实例化(端口映射)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.