如何创建带有组件但没有包体的 VHDL 包?

How to create VHDL package with component and no package body?

在 Quartus 16.0 中,我有一个 foo.vhdbar.vhd 文件,每个文件包含一个 valid/working 实体和相应的架构。我正在尝试创建一个包含 foobar 的包。我有这样的东西:

library ieee;
use ieee.std_logic_1164.all;

package my_package is

    component foo
            port(
                a, b : in  std_logic;
                out : out std_logic);
    end component;

    component bar
            port(
                a, b : in  std_logic;
                out : out std_logic);
    end component;

end package my_package;

尝试编译它时,我收到错误:Error (12007): Top-level design entity "my_package" is undefined。我不确定问题出在哪里,作为初学者还不知道如何调试它。

您实际上是在使用包作为设计的顶层。这两件事是不同的。一个包存储有用的常量、函数等……而顶层(它是一个实体)在彼此之间实例化和映射组件。查看此 link 以了解如何实现顶级实体:

https://www.altera.com/support/support-resources/design-examples/design-software/vhdl/v_hier.html

在 VHDL 中,您不需要在包中添加您的实体(或组件)。你只需要在同一个库中编译它们——通常是 WORK.

编译顶级实体时,它会实例化设计所需的所有组件,Quartus 会查找包含实例化调用的实体的 vhdl 文件。