如何从rom_type读取数据?
entity my_rom is
port(
addr: in std_logic_vector(3 downto 0);
data: out std_logic_vector(0 to 7)
);
end my_rom;
architecture a of my_rom is
type rom_type is array (0 to 7) of std_logic_vector(0 to 7);
constant R1_ROM: rom_type :=
(
-- data
);
begin
data <= R1_rom(conv_integer(addr));
end a;
答案 0 :(得分:5)
您使用的是conv_integer
,它不是原始VHDL的一部分...它位于库中。但是,您不想使用它 - it's from a non-standard library。
相反,use ieee.numeric_std.all;
是您实体之前所需要的。然后使用to_integer(unsigned(addr))
索引ROM。更好的是,将地址作为unsigned
向量传递,或者甚至直接传递给integer
。
尝试摆脱使用std_logic_vector
(只是一小块位)来表示数字的习惯,并使用明确定义的数字类型。
或者使用Verilog,不关心:)
我自己,我更喜欢VHDL强大的打字让我远离傻瓜射击......