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

如何创建带有组件且没有包体的VHDL包?,vhdl,quartus,Vhdl,Quartus,在Quartus 16.0中,我有一个foo.vhd和bar.vhd文件,每个文件都包含一个有效/工作实体和相应的体系结构。我正在尝试创建一个包含foo和bar的包。我有这样的想法: library ieee; use ieee.std_logic_1164.all; package my_package is component foo port( a, b : in std_logic; o

在Quartus 16.0中,我有一个
foo.vhd
bar.vhd
文件,每个文件都包含一个有效/工作实体和相应的体系结构。我正在尝试创建一个包含
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;

试图编译它时,我收到错误:
错误(12007):顶级设计实体“my_package”未定义
。我不确定问题出在哪里,作为初学者,我还不知道如何调试它。

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

在VHDL中,您不需要在包中添加实体(或组件)。您只需要在同一个库中编译它们-通常
工作


在编译顶层实体(实例化设计所需的所有组件)时,Quartus会查找包含实例化调用的实体的vhdl文件

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

在VHDL中,您不需要在包中添加实体(或组件)。您只需要在同一个库中编译它们-通常
工作


在编译顶层实体(实例化设计所需的所有组件)时,Quartus会查找包含实例化调用的实体的vhdl文件

谢谢!我没有考虑我在做什么就把包设置为顶级。在我的例子中,
使用work.my_package.foo
使用work.my_package.bar
在实际顶层工作。谢谢!我没有考虑我在做什么就把包设置为顶级。在我的例子中,
使用work.my_package.foo
使用work.my_package.bar
在实际顶层工作。
out
是VHDL标准所有版本中的保留字,不能用作声明接口对象的名称(例如
out:out std_logic
)。将两者更改为
output
myu-package
成功分析。这表示您试图在模拟之前进行合成,而您的工具并不完全符合标准。保留字被识别为词汇元素。IEEE Std 1076-2008 15.10保留字第3段保留字不得用作明确声明的标识符。
out
是VHDL标准所有版本中的保留字,不得用作声明接口对象的名称(例如
out:out Std_logic
)。将两者更改为
output
myu-package
成功分析。这表示您试图在模拟之前进行合成,而您的工具并不完全符合标准。保留字被识别为词汇元素。IEEE标准1076-2008 15.10保留字第3段保留字不得用作明确声明的标识符。