library ieee; use ieee.std_logic_1164.all; -- $Id$: -- here comes later a real i2c interface! entity sfp_read is port ( RST_n : in std_logic; -- power up reset from the DS1818 -- clock input from the DCS board CLK : in std_logic; -- 40 MHz we : in std_logic; addr : in std_logic_vector( 3 downto 0); din : in std_logic_vector(31 downto 0); dout : out std_logic_vector(31 downto 0); -- SFP Module I2C and present SFP_PRESENT : in std_logic; SFP_SCL : out std_logic; SFP_SDA_i : in std_logic; SFP_SDA_o : out std_logic; SFP_SDA_e : out std_logic); end sfp_read; architecture a of sfp_read is signal SFP_SCL_i : std_logic; signal SFP_SDA_o_i : std_logic; signal SFP_SDA_e_i : std_logic; begin process(clk, rst_n) begin if rst_n = '0' then SFP_SCL_i <= '0'; SFP_SDA_o_i <= '0'; SFP_SDA_e_i <= '0'; dout <= (others => '0'); elsif rising_edge(clk) then if we = '1' and addr = "0000" then SFP_SCL_i <= din(0); SFP_SDA_o_i <= din(1); SFP_SDA_e_i <= din(2); end if; dout <= (others => '0'); dout(4 downto 0) <= SFP_PRESENT & SFP_SDA_i & SFP_SDA_e_i & SFP_SDA_o_i & SFP_SCL_i; end if; end process; SFP_SCL <= SFP_SCL_i; SFP_SDA_o <= SFP_SDA_o_i; SFP_SDA_e <= SFP_SDA_e_i; end;