程序包/程序包主体声明后如何使用“ std_logic”?

时间:2019-07-25 12:41:42

标签: package vhdl ieee ghdl

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

到目前为止,我尝试了带有和不带有代码的命令->结果相同。 没有“ package”行,它会像一个魔咒一样工作……但是我无法像计划的那样扩展它。

[[Model]]
    Model(parabolic)
[[Fit Statistics]]
    # fitting method   = leastsq
    # function evals   = 9
    # data points      = 18
    # variables        = 3
    chi-square         = 0.00298906
    reduced chi-square = 1.9927e-04
    Akaike info crit   = -150.657052
    Bayesian info crit = -147.985936
[[Variables]]
    c: -0.02973853 +/- 0.01120090 (37.66%) (init = 0)
    b:  3.67707491 +/- 0.08142567 (2.21%) (init = 2)
    a:  7.51540814 +/- 0.12492370 (1.66%) (init = 1)
[[Correlations]] (unreported correlations are < 0.100)
    C(b, a) = -0.972
    C(c, b) = -0.891
    C(c, a) =  0.785

特定的错误消息是: “ [...]错误:“ std_logic”没有声明

期待您的回答。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

libraryuse的范围(可见性)不是整个文件。 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;