如何创建带有组件且没有包体的VHDL包?
在Quartus 16.0中,我有一个如何创建带有组件且没有包体的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
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段保留字不得用作明确声明的标识符。