在何处声明实体声明中使用的常量或类型



如果我没有完全误解这一点,就不能在文件的顶层声明常量或类型。只有包、实体、体系结构等才能在那里声明。它们可以在实体中声明,但不能在端口和泛型子句之前声明。

通常,您希望定义一个类型或常量,以便在实体的端口或泛型子句中使用,但由于这不能在文件的顶层声明,也不能在实体内部声明,因此应该在哪里声明?

通常,这些都是在文件开头的包中声明的,就像包含标准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 (
        ...

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

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

此外,对于那些刚接触VHDL的人来说,另一个难题是,仅仅因为包可能在同一个文件中,并不能使它对该文件中的实体/体系结构可见,所以在声明实体(或体系结构,如果你只需要那里的定义)时,你仍然必须use包。

最新更新