【发布时间】:2010-09-04 07:42:31
【问题描述】:
自从我第一次上 VHDL 课以来,我一直在摸不着头脑,决定在这里发布我的问题。
鉴于我有一个已声明的实体(以及它的架构)并希望在另一个架构中实例化它,为什么在实例化它之前我似乎必须在此包含架构中重新声明“实体”(组件) ?
编译器不是足够聪明,仅凭名称就可以将实例化与其架构相匹配吗?哪里需要组件声明?
【问题讨论】:
标签: vhdl
自从我第一次上 VHDL 课以来,我一直在摸不着头脑,决定在这里发布我的问题。
鉴于我有一个已声明的实体(以及它的架构)并希望在另一个架构中实例化它,为什么在实例化它之前我似乎必须在此包含架构中重新声明“实体”(组件) ?
编译器不是足够聪明,仅凭名称就可以将实例化与其架构相匹配吗?哪里需要组件声明?
【问题讨论】:
标签: vhdl
如果需要,您可以直接实例化组件:
MyInstantiatedEntity : entity work.MyEntity_E
generic map (
config => whatever)
port map (
clk => signal1,
clk_vid => signal2,
...
创建组件声明使您能够通过配置规范或类似的方式更改绑定到实例化的内容。
【讨论】:
当我在学校做 VHDL 作业时,我被要求将所有代码都放在一个文件中,所以我不记得您是否可以为每个模块编写一个文件以及它是如何编写的完成。
话虽如此,您必须声明在定义行为时要使用的实体,如果您使用它的方式与在 C 或 C++ 中定义原型、结构、类等类似的话。这里的区别是你没有在 VHDL 中为这个“重新声明”定义头文件的奢侈(至少我不认为有一个等价物)。所以对我来说必须这样做似乎是完全合理的。请注意,当 C 语言非常普遍并且编译器不像现在这样“足够聪明”时,VHDL 就出现了。
VHDL 大师可能对此有明确的答案,但这是我的理解。
【讨论】: