repo2/common/a8core/internalromram_simple.vhd
507 | markw | LIBRARY ieee;
|
|
USE ieee.std_logic_1164.all;
|
|||
USE ieee.std_logic_arith.all;
|
|||
USE ieee.std_logic_unsigned.all;
|
|||
ENTITY internalromram_simple IS
|
|||
PORT(
|
|||
clock : IN STD_LOGIC; --system clock
|
|||
reset_n : IN STD_LOGIC; --asynchronous reset
|
|||
ROM_ADDR : in STD_LOGIC_VECTOR(21 downto 0);
|
|||
ROM_REQUEST_COMPLETE : out STD_LOGIC;
|
|||
ROM_REQUEST : in std_logic;
|
|||
OS_DATA : out std_logic_vector(7 downto 0);
|
|||
BASIC_DATA : out std_logic_vector(7 downto 0);
|
|||
RAM_ADDR : in STD_LOGIC_VECTOR(18 downto 0);
|
|||
RAM_WR_ENABLE : in std_logic;
|
|||
RAM_DATA_IN : in STD_LOGIC_VECTOR(7 downto 0);
|
|||
RAM_REQUEST_COMPLETE : out STD_LOGIC;
|
|||
RAM_REQUEST : in std_logic;
|
|||
RAM_DATA : out std_logic_vector(7 downto 0)
|
|||
);
|
|||
END internalromram_simple;
|
|||
architecture vhdl of internalromram_simple is
|
|||
signal rom_request_reg : std_logic;
|
|||
signal ram_request_reg : std_logic;
|
|||
signal ramwe_temp : std_logic;
|
|||
begin
|
|||
process(clock,reset_n)
|
|||
begin
|
|||
if (reset_n ='0') then
|
|||
rom_request_reg <= '0';
|
|||
ram_request_reg <= '0';
|
|||
elsif (clock'event and clock='1') then
|
|||
rom_request_reg <= rom_request;
|
|||
ram_request_reg <= ram_request;
|
|||
end if;
|
|||
end process;
|
|||
rom16a : entity work.os16
|
|||
PORT MAP(clock => clock,
|
|||
address => rom_addr(13 downto 0),
|
|||
q => OS_DATA
|
|||
);
|
|||
basic1 : entity work.basic
|
|||
PORT MAP(clock => clock,
|
|||
address => rom_addr(12 downto 0),
|
|||
q => BASIC_data
|
|||
);
|
|||
rom_request_complete <= rom_request_reg;
|
|||
ramwe_temp <= RAM_WR_ENABLE and ram_request;
|
|||
ramint1 : entity work.generic_ram_infer
|
|||
generic map
|
|||
(
|
|||
ADDRESS_WIDTH => 19,
|
|||
SPACE => 65536,
|
|||
DATA_WIDTH =>8
|
|||
)
|
|||
PORT MAP(clock => clock,
|
|||
reset_n => reset_n,
|
|||
address => ram_addr,
|
|||
data => ram_data_in(7 downto 0),
|
|||
we => ramwe_temp,
|
|||
q => ram_data
|
|||
);
|
|||
ram_request_complete <= ram_request_reg;
|
|||
end vhdl;
|