首页 文章

在哪里声明实体声明中使用的常量或类型?

提问于
浏览
3

如果我没有完全误解这一点,则不能在文件的顶层声明常量或类型 . 只有包,实体,架构等 . 可以在那里宣布 . 它们可以在实体中声明,但不能在port和generic子句之前声明 .

通常你会想要在实体的port或generic子句中定义一个类型或常量,但由于这不能在文件的顶层声明而不是在实体内部声明,这应该在哪里声明?

2 回答

  • 0

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

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

  • 4

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

    另外,对于VHDL新手来说,另一个问题是,因为包可能在同一个文件中并不会使该文件中的实体/体系结构可见,所以在声明实体时,您仍需要 use 包(或架构,如果你只需要那里的定义) .

相关问题