1

我正在努力实现一个实体,其端口依赖于通用包,而通用包又依赖于实体的泛型。诀窍是我想记录端口。

起初我尝试将记录放在通用包中并从实体实例化通用包。(我没有从记录开始,而是问了一个关于这个的问题)。

问题是modelsim抱怨以下顺序:

entity myEntity is
    generic()
    -- problem 1 package before port causes errors in modelsim
    package myInstance is new genericPackage generic map ...
    -- problem 2, "use" may appparently  not be used here
    port( p1 : in myInstance.genericRecord )
end entity;

有没有一种优雅的方法可以利用 VHDL 2008 的特性来解决这个问题?

4

1 回答 1

1

据我了解,包实例必须在实体之外。我不认为你可以按照你想要的顺序拥有依赖项。

解决此类问题的另一种方法(例如考虑无约束向量)是在实例化时将事物“下推”到实体中。你能像这样使用类型泛型吗?

entity myEntity is
    generic (type myRecord);
    port (p1 : in myRecord);
end entity;

然后当你实例化它时,你创建你需要的类型:

package myInstance is new genericPackage generic map ...
...
inst:entity work.myEntity
  signal recordSig : myInstance.genericRecord;
...
  generic map (type => myInstance.genericRecord)
  port map (p1 => recordSig);
于 2013-04-29T16:08:11.097 回答