如何从VHDL中的rom_type读取数据?

时间:2009-12-01 12:58:59

标签: vhdl

如何从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;

1 个答案:

答案 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强大的打字让我远离傻瓜射击......