在哪里声明实体声明中使用的常量或类型?

时间:2011-05-28 23:19:26

标签: types entity constants declaration vhdl

如果我没有完全误解这一点,则不能在文件的顶层声明常量或类型。只有包,实体,架构等。可以在那里宣布。它们可以在实体中声明,但不能在port和generic子句之前声明。

通常你会想要在实体的port或generic子句中定义一个类型或常量,但由于这不能在文件的顶级声明而不是在实体内部,这应该在哪里声明?

2 个答案:

答案 0 :(得分:4)

通常这些是在包含在文件开头的包中声明的,就像包含标准VHDL包一样,即:

library ieee;

use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
use ieee.math_real.all;

use work.My_Custom_Types_Pkg.all;

entity My_Entity is
    port (
        ...

然后,您可以在端口声明和实体中的任何其他位置使用自定义类型。

答案 1 :(得分:0)

请注意,包,实体等不必绑定到特定文件。所以放置常量的正确位置是package。包及其主体可以与实体/体系结构存在于同一文件中,也可以存在于单独的文件中。 entityarchitecture也可以存在于单独的文件中(已经讨论过elsewhere on SO

另外,对于VHDL新手来说,另一个问题是,因为包可能在同一个文件中并不会使该文件中的实体/体系结构可见,所以你仍需要use指出你声明实体(或架构,如果你只需要那里的定义)。