Как создать пакет VHDL с компонентом и без тела пакета?
В 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;
Пытаясь скомпилировать его, я получаю сообщение об ошибке: Error (12007): Top-level design entity "my_package" is undefined
, Я не уверен, где проблема, и, как новичок, еще не знаю, как ее отладить.
1 ответ
Вы на самом деле используете пакет в качестве верхнего уровня вашего дизайна. Эти две вещи разные. В пакете хранятся полезные константы, функции и т. Д., В то время как верхний уровень (который является сущностью) создает экземпляры и отображает компоненты между собой. Посмотрите на эту ссылку, чтобы увидеть, как реализовать сущность верхнего уровня:
https://www.altera.com/support/support-resources/design-examples/design-software/vhdl/v_hier.html
В VHDL вам не нужно добавлять вашу сущность (или компонент) в пакет. Вам просто нужно скомпилировать их в одной библиотеке - обычно WORK
,
При компиляции сущности верхнего уровня, в которой создаются все компоненты, необходимые для разработки, Quartus ищет файл vhdl, содержащий сущность, вызываемую экземпляром.