2011-05-28 65 views
3

如果我没有完全误解它,常量或类型不能在文件的顶层声明。只有包,实体,架构et.c.可以在那里申报。它们可以在实体中声明,但不在端口和通用语句之前声明。哪里声明实体声明中使用的常量或类型?

通常你会想要定义一个实体的port或generic子句中使用的类型或常量,但由于这不能在文件的顶层声明,也不在实体内部声明,被宣布?

回答

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 (
     ... 

然后您就可以使用您的自定义类型的端口声明和您实体中的任何其他地方。

0

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

此外,另一个疑难杂症,为这些新的VHDL,只是因为包装可能是在同一个文件不使其可见对于该文件中的实体/体系结构,在声明实体(或体系结构,如果您只需要那里的定义)的地方,您仍然需要使用该包。