5

所以,我最近继承了一些 VHDL 代码,我的第一反应是,“VHDL 有结构,为什么它们到处都使用位向量?” 然后我意识到这是因为似乎没有任何方法可以写出这样的东西:

entity Queue is
    generic (
        EL : type
    );
    port (
        data_in  : EL;
        data_out : EL;
        ...
    );
end entity Queue;

我真的希望这是可能的。有什么东西可以远程近似吗?即使我必须重新键入实体或组件声明,也只是为了避免为每个(以通用宽度为模)类型重新键入架构定义?

4

2 回答 2

3

是的,实现队列是这样做的经典原因之一!

自 VHDL-2008 以来,这一直在 VHDL 中。截至 2012 年年中,工具支持是可变的。谈论一个缓慢发展的行业!

  • Aldec完全支持它
  • Modelsim 有部分支持 - 找不到指向其功能的公共链接。如果您安装了它,它位于 /technotes/vhdl2008.note
  • Xilinx (XST/ISIM) 不支持它,甚至 VHDL-2002。我找不到简单的链接,但这些 PDF中有关于 VHDL 兼容性的部分,其中只讨论了 VHDL-1993。
  • Altera 的工具有部分支持,但不支持类型泛型
于 2012-06-05T10:41:42.030 回答
1

是的和不...

通用类型是即将推出的 VHDL-2008 标准的新功能:http: //www.doulos.com/knowhow/vhdl_designers_guide/vhdl_2008/vhdl_200x_major/#GenericTypes

然而,EDA 工具对 VHDL-2008 的支持仍然非常有限。即使您的工具支持它,使用此功能也会使您的代码不可移植。

坚持 VHDL-2002,一个解决方案是在一个包中声明你的接口类型,mytypes并在任何需要的地方使用它use work.mytypes.all

于 2012-06-05T08:34:17.057 回答