Как создать пакет 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, содержащий сущность, вызываемую экземпляром.

Другие вопросы по тегам