【问题标题】:VHDL Can you declare a package and an entity in the same file?VHDL 你能在同一个文件中声明一个包和一个实体吗?
【发布时间】:2013-11-06 14:45:53
【问题描述】:

我试图将包和实体放在同一个文件中,但它没有编译它给我一个错误提示:未知标识符 std_logic,

我应该做些什么来将它们放在同一个文件中?

【问题讨论】:

    标签: entity package vhdl


    【解决方案1】:

    您在文件顶部提供的库声明适用于下一个设计单元(可能是您的包)。

    当你开始你的实体时,它是一个新的设计单元,并从一个空的库空间开始,所以你必须重新放入库声明。如果您将多个实体放入给定文件中,也会发生同样的情况 - 您必须为每个实体放入库子句。

    VHDL 编译器根本不关心文件中的任何内容,它只对其中的单元进行操作。因此,您可以在一个文件中使用 entity 和一些 library 声明,而在另一个文件中使用 architecture。这些库然后需要在架构文件中重做,并且它们与实体一起出现。如果有您架构需要的库,则可以将它们包含在架构声明之前(无论您是在一个文件还是两个文件中):

    library ieee; 
    use ieee.std_logic_1164.all;
    entity foo
    port ( 
       bar: std_logic; 
       etc...);
    end entity;
    
    -- could start a new file here, or not.
    use ieee.numeric_std.all; -- not needed for the entity as it doesn't use unsigned types
    architecture a of foo is
        signal counter : unsigned (10 downto 0);
    begin
    ...
    end architecture;
    

    【讨论】:

      【解决方案2】:

      是的,你可以,但你必须记住,任何使用声明的库只适用于下一个实体或包,而不是整个文件!

      实际上你需要编写两个可以独立编译的文件,然后将一个的全部内容复制到另一个的末尾。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-11-19
        • 1970-01-01
        • 2019-10-17
        • 1970-01-01
        • 2020-08-19
        • 2019-06-14
        • 2015-10-20
        相关资源
        最近更新 更多