我制作了一个自定义程序包,并尝试在我的代码中使用它。由于某种原因,它无法识别我在包中声明的自定义类型。
library IEEE;
use IEEE.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
library work;
use work.lt_package.all;
--use lt_package.db_array;
--use work.lt_package.hb_ctl_state;
--use work.lt_package.lb_ctl_state;
--use work.lt_package.t_state;
-- synopsys translate_off
--library MACHXO2L;
--use MACHXO2L.components.all;
-- synopsys translate_on
entity LC_top is port
(
reset : in std_logic;
clk : in std_logic;
sdi_bit_vector : in std_logic_vector(1 downto 0);
red_leds_out : out std_logic_vector(4 downto 0);
green_leds_out : out std_logic_vector(4 downto 0);
sclk : out std_logic;
db_out : out db_array;
conv_out : out std_logic_vector(4 downto 0)
);
我的包裹是:
library IEEE;
use IEEE.std_logic_1164.all;
package lt_package is
end package;
package body lt_package is
type t_state is (clk_wait_op , lt_wait_op , conversion_op);
type hb_ctl_state is ( hba , hbb);
type lb_ctl_state is (lba , lbb , dlu);
type db_array is array (4 downto 0) of std_logic_vector(11 downto 0);
end package;
每当我编译代码时,它都会告诉我db_array没有声明,尽管它很明显在包中。任何帮助,将不胜感激。谢谢!
答案 0 :(得分:0)
您必须在包声明区域(即,在“ package lt_package is
和“ end_package
”之间以及包主体之前)声明您的类型,以使它们在包外部可见。
如果包中包含函数或过程,则它们的声明将在声明区域中进行(类似于许多编程语言中的函数原型),而实际的函数定义将位于包主体中。