如果我没有完全误解这一点,则不能在文件的顶层声明常量或类型。只有包,实体,架构等。可以在那里宣布。它们可以在实体中声明,但不能在port和generic子句之前声明。
通常你会想要在实体的port或generic子句中定义一个类型或常量,但由于这不能在文件的顶级声明而不是在实体内部,这应该在哪里声明?
答案 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
。包及其主体可以与实体/体系结构存在于同一文件中,也可以存在于单独的文件中。 entity
和architecture
也可以存在于单独的文件中(已经讨论过elsewhere on SO)
另外,对于VHDL新手来说,另一个问题是,因为包可能在同一个文件中并不会使该文件中的实体/体系结构可见,所以你仍需要use
指出你声明实体(或架构,如果你只需要那里的定义)。