从另一个架构中读取VHDL数据

时间:2015-09-03 15:44:12

标签: vhdl

我需要从定义的VHDL(.vhd)文件中读取数据。该文件是这样的:

entity ROM is
    port ( address : in std_logic_vector(3 downto 0);
           data : out std_logic_vector(7 downto 0) );
end entity ROM;

architecture behavioral of ROM is
    type ROM is array ( 0 to 2**4 - 1) of std_logic_vector(7 downto 0);
    constant my_ROM : ROM := (
        0  => "00000000",
        1  => "00000001");

begin

    data <= my_ROM(to_integer(unsigned(address)));

end architecture behavioral;

我知道类似的问题已发布, How to read data from rom_type in VHDL? ,但我认为我仍然需要帮助。让我们说我有另一个.vhd文件,我应该如何将数据存储在这个ROM实体中?

1 个答案:

答案 0 :(得分:1)

您需要定义一个地址和数据信号以连接到此体系结构中的ROM实体。例如;

signal rom_address : std_logic_vector(3 downto 0);
signal rom_data    : std_logic_vector(7 downto 0);

然后,您可以将以下实例化添加到您的体系结构中。

somelabel : entity work.ROM 
  port map (
     address => rom_address,
     data    => rom_data
  );

您需要驱动rom_address信号以从ROM中的相应地址获取数据。

您还可以将此实体声明为包中或将要实例化它的体系结构中的组件。 组件声明如下所示;

component ROM is
  port (
    address : in std_logic_vector(3 downto 0);
    data    : out std_logic_vector(7 downto 0)
  );
end component;

这允许您将此实体实例化为架构中的组件。

somelabel : ROM 
  port map (
     address => rom_address,
     data    => rom_data
  );