如何创建带有组件但没有包体的 VHDL 包?
How to create VHDL package with component and no package body?
在 Quartus 16.0 中,我有一个 foo.vhd
和 bar.vhd
文件,每个文件包含一个 valid/working 实体和相应的架构。我正在尝试创建一个包含 foo
和 bar
的包。我有这样的东西:
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 文件。
在 Quartus 16.0 中,我有一个 foo.vhd
和 bar.vhd
文件,每个文件包含一个 valid/working 实体和相应的架构。我正在尝试创建一个包含 foo
和 bar
的包。我有这样的东西:
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 文件。