2

我正在尝试使用 VHDL 变得更好,因此我想尝试实现“package ... is”和“package body ... is”功能。当我这样做时,似乎“std_logic”在 GHDL 分析步骤中看不到 IEEEE 库的内容。

到目前为止,我尝试了带有和不带有代码的命令->相同的结果。没有“包”行,它就像一个魅力......但我将无法像计划的那样扩展它。

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;

具体的错误消息是:“[...] error: no declaration for “std_logic”

期待您的回答。

4

2 回答 2

2

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;
于 2019-07-25T13:03:52.150 回答
1

您的 std_logic_1164 导入属于该包,并且在其主体中也可见。它在整个文件中不可见。在实体之前重复这些行,它将对实体及其架构可见。

于 2019-07-25T13:00:40.263 回答