如果我沒有完全誤解它,常量或類型不能在文件的頂層聲明。只有包,實體,架構et.c.可以在那裏申報。它們可以在實體中聲明,但不在端口和通用語句之前聲明。哪裏聲明實體聲明中使用的常量或類型?
通常你會想要定義一個實體的port或generic子句中使用的類型或常量,但由於這不能在文件的頂層聲明,也不在實體內部聲明,被宣佈?
如果我沒有完全誤解它,常量或類型不能在文件的頂層聲明。只有包,實體,架構et.c.可以在那裏申報。它們可以在實體中聲明,但不在端口和通用語句之前聲明。哪裏聲明實體聲明中使用的常量或類型?
通常你會想要定義一個實體的port或generic子句中使用的類型或常量,但由於這不能在文件的頂層聲明,也不在實體內部聲明,被宣佈?
通常這些都在其中包括在你的文件的開頭包中聲明,就像你將包括標準的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
。該包及其主體可以與實體/體系結構存在於同一個文件中,也可以存在於單獨的文件中。該entity
和architecture
也可以存在於單獨的文件(S)(這已經討論elsewhere on SO)
此外,另一個疑難雜症,爲這些新的VHDL,只是因爲包裝可能是在同一個文件不使其可見對於該文件中的實體/體系結構,在聲明實體(或體系結構,如果您只需要那裏的定義)的地方,您仍然需要使用該包。