我需要从定义的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实体中?
答案 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
);