Я пытаюсь улучшить работу с VHDL, поэтому я хотел попробовать реализовать функции "пакет... есть" и "тело пакета... есть". Когда я это делаю, кажется, что «std_logic» не может видеть содержимое библиотеки IEEEE на этапе анализа GHDL.
До сих пор я пробовал команды с кодом и без него -> Тот же результат. Без «пакетных» строк это работает как шарм... но я не смогу расширить его, как планировалось.
library IEEE;
use IEEE.std_logic_1164.all;
package run is
-- some package definitions
end run;
package body run is
-- the body
end run;
entity andfunc is
Port( A : in std_logic;
B : in std_logic;
C : out std_logic
);
end andfunc;
architecture Behavioral of andfunc is
begin
C <= A and B ;
end Behavioral;
Конкретное сообщение об ошибке: "[...] ошибка: нет объявления для "std_logic"
С нетерпением жду ваших ответов.
Ваш импорт std_logic_1164 принадлежит пакету и также виден в его теле. Во всем файле не видно. Повторите эти строки перед объектом, и он будет виден для объекта и его архитектуры.
Область действия (видимость) library
и use
— это не весь файл. После package
вы должны вспомнить их, если они вам все еще нужны. Для работы ваш код должен быть:
library IEEE;
use IEEE.std_logic_1164.all;
package run is
-- some package definitions
end run;
package body run is
-- the body
end run;
library IEEE;
use IEEE.std_logic_1164.all;
entity andfunc is
Port( A : in std_logic;
B : in std_logic;
C : out std_logic
);
end andfunc;
architecture Behavioral of andfunc is
begin
C <= A and B ;
end Behavioral;
Большое тебе спасибо. Лицом к столу. Работает сейчас +1