TU-VHDL/16_asyncROM_Example/design.vhd
2025-02-10 20:28:13 +01:00

41 lines
938 B
VHDL

library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
entity single_port_rom is
port
(
addr : in std_logic_vector(3 downto 0);
q : out std_logic_vector(4 downto 0)
);
end single_port_rom;
architecture rtl of single_port_rom is
-- Build a 2-D array type for the ROM
subtype word_t is std_logic_vector(4 downto 0);
type memory_t is array(0 to 15) of word_t;
constant romdata : memory_t := (
"10101", -- data for address 0
"11111", -- data for address 1
"10101",
"11110",
"10110",
"10101",
"11010",
"10010",
"10110",
"11101",
"10110",
"10111",
"00110",
"11101",
"10010",
"10110" -- data for address 15
);
begin
q <= romdata(to_integer(unsigned(addr)));
end rtl;