我想知道组成一个实体之间有什么区别。我想知道在哪种情况下最好使用组件而不是实体。非常感谢。
我想知道组成一个实体之间有什么区别。我想知道在哪种情况下最好使用组件而不是实体。非常感谢。
Answers:
这是一个可以帮助某些人(特别是来自物理电子背景的人)的类比:
A component
告诉编译器“在某些时候会有某种带有这种管脚的东西称呼它,但现在不必担心”。它定义了一个“套接字”。您可以继续描述什么“连接”到该“套接字”等。
An entity
是带有名称和一组引脚的特定内容,编译器随后可以将其“插入”到该“插槽”(并因此连接到“电线”)。
请注意,你不需要一个component
可以做“直接实例化”,这意味着该编译器已经知道一个整体,从而不再需要“套接字”不另行规定。实际上,这将是我推荐的方法,否则将component
需要额外同步。
你需要,如果你是混合Verilog和VHDL和必要的VHDL内使用Verilog的块使用的组件。然后component
是套接字,直到很晚以后编译器/阐述者才能将Verilog插入套接字。
一个实体是一个真正的接口设计单元,其可以具有多个架构。 实体定义物料进出的方式,而架构定义设计单元的运行方式。因此,您可以采用多种方式来实现相同的功能,这将由同一实体来描述。
甲组件是理想的或“虚拟”设计单位。在进行自上而下的设计时(即在设计下层模块之前先将顶层放在一起),您可以使用组件来描述您期望设计单元使用的接口类型。您可以将其视为占位符或黑匣子,以备将来执行。
使用配置,您可以将特定的组件实例绑定到实体定义。在这里,您可以映射出哪个端口应连接到哪个端口。这映射了在理想意义上定义的组件如何映射到实际实现的实体。
在实践中,我发现组件通常是不必要的,并会创建通常不使用的另一抽象级别。您可以通过直接实例化实体并引用用于该实体实例的体系结构来跳过对组件的使用(和需要)。
例如:
MyDesignUnit : entity library_name.entity_name(architecture_name)
port map(
...
从下面的[1]:
VHDL中的实体,组件和组件实例之间有重要区别。实体描述设计接口,组件描述将用作实例(或子块)的实体的接口,并且组件实例是已连接到其他部件和信号的组件的不同副本。 。可以将这些与面包板具有自家零件的设计过程进行比较。实体和体系结构就像数据手册一样,描述了部件的接口和原理图。该组件就像随零件一起提供的短引脚清单一样,描述了如何连接。组件实例是实际的零件本身,您可能有很多零件,每个零件都是独立运行的。
有关上下文和更多详细信息,请参见[1]。
在线上有许多VHDL教程,例如[2] [3] ...书籍(84页,PDF)[4]看起来不错[5]主要用于链接[6]
实体是指定输入输出端口的设计单元。实体仅定义外部端口,而内部功能由相应的体系结构指定。组件是由实体和体系结构组成的完整设计单元。第一步是组件声明(指定其名称和端口),然后是组件实例化(端口映射)。