Changed I2C address to 0x57 and added SIM board model register at 0x12
This commit is contained in:
parent
d82a0ab464
commit
49a8fd7224
|
|
@ -9,7 +9,7 @@ entity sim_switcher_top is
|
|||
SYSFREQ : integer := 25_000_000; -- System clock frequency
|
||||
INSIM : std_logic := '0'; -- In Simulation flag: 0 - real work (default), 1 - simulation
|
||||
-- I2C parameters
|
||||
I2C_SLAVE_ADDR : std_logic_vector(6 downto 0) := "1010110" -- Address of I2C slave, dafault 0x56
|
||||
I2C_SLAVE_ADDR : std_logic_vector(6 downto 0) := "1010111" -- Address of I2C slave, dafault 0x57
|
||||
);
|
||||
port (
|
||||
-- Clock and reset
|
||||
|
|
@ -34,6 +34,9 @@ entity sim_switcher_top is
|
|||
i2c_scl_io : inout std_logic;
|
||||
i2c_sda_io : inout std_logic;
|
||||
|
||||
-- SIM board CONF bits
|
||||
sim_board_conf_i :in std_logic_vector(2 downto 0);
|
||||
|
||||
-- SIM signals
|
||||
sim_detect_i : in std_logic_vector(7 downto 0);
|
||||
sim_pwron_o : out std_logic_vector(7 downto 0);
|
||||
|
|
@ -111,6 +114,9 @@ architecture rtl of sim_switcher_top is
|
|||
-- Modem data signals
|
||||
signal s_mod_data_i, sdb_mod_data_i, sw_mod_data_i, sw_mod_data_prev, s_mod_data_o, sw_mod_data_o: std_logic_vector(7 downto 0);
|
||||
|
||||
-- SIM board CONF bits register
|
||||
signal reg_sim_board_conf: std_logic_vector(2 downto 0);
|
||||
|
||||
-- SIM switch IRQs for repeater state machine reset upon SIM change
|
||||
signal reg_sim_change_irq: std_logic_vector(15 downto 0) := (others => '0');
|
||||
|
||||
|
|
@ -238,6 +244,16 @@ begin
|
|||
end if;
|
||||
end process;
|
||||
|
||||
---------------------------
|
||||
-- SIM board CONF update --
|
||||
---------------------------
|
||||
simb_conf_upd_proc: process(clk25_i) is
|
||||
begin
|
||||
if (rising_edge(clk25_i)) then
|
||||
reg_sim_board_conf <= sim_board_conf_i;
|
||||
end if;
|
||||
end process;
|
||||
|
||||
--------------------------------
|
||||
-- I2C slave interface to CPU --
|
||||
--------------------------------
|
||||
|
|
@ -274,6 +290,7 @@ begin
|
|||
6 => 6,
|
||||
7 => 7
|
||||
);
|
||||
|
||||
-- SIM change IRQ register reset
|
||||
reg_sim_change_irq <= (others => '0');
|
||||
|
||||
|
|
@ -299,6 +316,10 @@ begin
|
|||
i2c_data_to_master <= x"20";
|
||||
i2c_slv_state <= wait_while_sent;
|
||||
|
||||
when x"12" => -- Read SIM board model regiser
|
||||
i2c_data_to_master <= "00000" & reg_sim_board_conf;
|
||||
i2c_slv_state <= wait_while_sent;
|
||||
|
||||
when x"0A" => -- Read SIMs detect register (LSB)
|
||||
i2c_data_to_master <= reg_sim_det(7 downto 0);
|
||||
i2c_slv_state <= wait_while_sent;
|
||||
|
|
@ -380,13 +401,13 @@ begin
|
|||
reg_sim_modemnum(2) <= to_integer(unsigned(i2c_data_from_master(3 downto 0)));
|
||||
when x"A3" => -- Write SIM4 modem register
|
||||
reg_sim_modemnum(3) <= to_integer(unsigned(i2c_data_from_master(3 downto 0)));
|
||||
when x"A4" => -- Write SIM1 modem register
|
||||
when x"A4" => -- Write SIM5 modem register
|
||||
reg_sim_modemnum(4) <= to_integer(unsigned(i2c_data_from_master(3 downto 0)));
|
||||
when x"A5" => -- Write SIM2 modem register
|
||||
when x"A5" => -- Write SIM6 modem register
|
||||
reg_sim_modemnum(5) <= to_integer(unsigned(i2c_data_from_master(3 downto 0)));
|
||||
when x"A6" => -- Write SIM3 modem register
|
||||
when x"A6" => -- Write SIM7 modem register
|
||||
reg_sim_modemnum(6) <= to_integer(unsigned(i2c_data_from_master(3 downto 0)));
|
||||
when x"A7" => -- Write SIM4 modem register
|
||||
when x"A7" => -- Write SIM8 modem register
|
||||
reg_sim_modemnum(7) <= to_integer(unsigned(i2c_data_from_master(3 downto 0)));
|
||||
|
||||
when others =>
|
||||
|
|
|
|||
Loading…
Reference in New Issue