You are on page 1of 2

library ieee ;

use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use ieee.std_logic_arith.all;

entity my_eeprom_interface is
port (
rst_eeprom : in std_logic;
clk_eeprom : in std_logic;
eeprom_en_int : in std_logic;

im_reqn : in std_logic;

eeprom_data_in : in std_logic_vector(31 downto 0);

wait_processor : out std_logic;


bus_sel : out std_logic;
dd_ins_data : out std_logic_vector(31 downto 0)

);

end my_eeprom_interface ;

architecture my_eeprom_interface_a of my_eeprom_interface is

type state_type is (S0,S1,S2,S3,S4);

signal state_eeprom : state_type;

signal bus_sel_o : std_logic;

begin

bus_sel <= bus_sel_o after 10 ns;


--
--bus_sel <= bus_sel_o;

eeprom_p : process (clk_eeprom,rst_eeprom,state_eeprom)


begin

if clk_eeprom'event and clk_eeprom = '1' then

if rst_eeprom = '0' then

wait_processor <= '1';


bus_sel_o <= '0';
state_eeprom <= S0;
dd_ins_data <= (others => '0');

else
case state_eeprom is

when S0 =>
if eeprom_en_int = '1' then

wait_processor <= '0';


bus_sel_o <= '1';

state_eeprom <= S1;

end if;

when S1 =>

state_eeprom <= S2;

when S2 =>

bus_sel_o <= '0';


dd_ins_data <= eeprom_data_in;

if im_reqn = '0' then


state_eeprom <= S3; -- ins memory
access
else
state_eeprom <= S0;
wait_processor <= '1';

end if;

when S3 =>

state_eeprom <= S4;

when S4 =>

wait_processor <= '1';


state_eeprom <= S0;

when others =>


null;

end case;

end if;
end if;
end process eeprom_p;

end my_eeprom_interface_a;

You might also like