一千萬個為什麽

搜索

如何從VHDL中讀取rom_type的數據?

我怎樣才能從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;

最佳答案

您正在使用 conv_integer ,它不是原始VHDL的一部分......它在一個庫中。但是,您不想使用它 - 來自非標準庫

相反使用ieee.numeric_std.all; 是你實體之前需要的東西。然後使用 to_integer(unsigned(addr))來索引ROM。更好的是,將地址作為 unsigned 向量傳遞,或者直接作為 integer 傳遞。

試著擺脫使用 std_logic_vector (這只是一堆比特)來表示數字並使用定義良好的數字類型的習慣。

或者使用Verilog,它不關心:)

我個人而言,我更喜歡VHDL的強大打字功能,以防止我的腳步不穩。

轉載註明原文: 如何從VHDL中讀取rom_type的數據?