为什么在将VHDL组件在其他体系结构中实例化之前需要重新声明它们?

时间:2010-09-04 07:42:31

标签: vhdl

自从我的第一个VHDL课程以来,我一直在摸不着头脑,并决定在这里发布我的问题。

鉴于我有一个声明的实体(以及它的体系结构),并希望在另一个体系结构中实例化它,为什么我在实例化它之前似乎必须重新声明此包含体系结构中的“实体”(组件) ?

编译器是否足够聪明,只能通过其名称将实例化与其体系结构相匹配?组件声明的需求在哪里?

2 个答案:

答案 0 :(得分:11)

如果需要,您可以直接实例化组件:

  MyInstantiatedEntity : entity work.MyEntity_E
    generic map (
        config          => whatever)
    port map (
        clk             => signal1,
        clk_vid         => signal2,
        ...

创建组件声明使您能够通过配置规范或类似方法更改绑定到实例化的内容。

答案 1 :(得分:2)

当我在学校时回到VHDL分配时,我被要求将所有代码都放在一个文件中,所以我不记得你是否可以为每个模块写一个文件以及它是如何编写的完成。

话虽这么说,你必须声明在定义行为时要使用的实体,如果你使用它的方式与在C或C ++中定义原型,结构,类和诸如此类的东西的方式相同。这里的不同之处在于,您无法在VHDL中为此“重新声明”定义头文件(至少我认为没有相应的内容)。因此,我必须这样做是完全合理的。请注意,当C非常常见并且编译器不像今天那样“足够智能”时,VHDL就会出现。

VHDL大师可能对此有明确的答案,但这就是我理解的方式。