在实体声明中声明常量或类型应该放在哪里?

3
如果我没有完全误解,常量或类型不能在文件的顶层声明。只有包、实体、架构等可以在那里声明。它们可以在实体中声明,但不能在端口和泛型子句之前声明。
通常,您会想要定义一种类型或常量,以便在实体的端口或泛型子句中使用,但由于无法在文件的顶层或实体内部声明,那么应该在哪里声明呢?
2个回答

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 中是正确的位置。包及其主体可以存在于与实体/架构相同的文件中,也可以存在于单独的文件中。实体和架构也可以存在于单独的文件中(这已经在 其他SO讨论 中讨论过)。
另外,对于那些新接触 VHDL 的人来说,还有一个需要注意的地方,即使包可能在同一个文件中,它也不会自动对该文件中的实体/架构可见,您仍然需要在声明实体(或架构,如果您只需要在那里使用定义)时使用该包。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接