Compiling, intermediate version with Part 2 changes for MBSr2, not tested
This commit is contained in:
parent
5cc12bdf6d
commit
ef784c054e
|
|
@ -1,6 +1,6 @@
|
||||||
library ieee;
|
library ieee;
|
||||||
use ieee.std_logic_1164.all;
|
use ieee.std_logic_1164.all;
|
||||||
--use ieee.numeric_std.all;
|
|
||||||
------------------------------------------------------------
|
------------------------------------------------------------
|
||||||
entity odio_repeater is
|
entity odio_repeater is
|
||||||
generic (
|
generic (
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,358 @@
|
||||||
|
library ieee;
|
||||||
|
use ieee.std_logic_1164.all;
|
||||||
|
use work.sim_switcher_pkg.all;
|
||||||
|
|
||||||
|
------------------------------------------------------------
|
||||||
|
entity sim_mux is
|
||||||
|
port (
|
||||||
|
reg_sim_modemnum : arr_modnum_t(0 to 7);
|
||||||
|
sim_rst_o : out std_logic_vector(7 downto 0);
|
||||||
|
mod_simrst_i : in std_logic_vector(7 downto 0);
|
||||||
|
sim_clk_o : out std_logic_vector(7 downto 0);
|
||||||
|
mod_clk_i : in std_logic_vector(7 downto 0);
|
||||||
|
mod_detect_o : out std_logic_vector(3 downto 0);
|
||||||
|
sim_detect_i : in std_logic_vector(7 downto 0);
|
||||||
|
sw_mod_data_i : out std_logic_vector(7 downto 0); -- For switched tri-state buffer there are input and output part of
|
||||||
|
mod_data_i : in std_logic_vector(7 downto 0); -- the lines which are switched transparently, thus ports
|
||||||
|
mod_data_o : out std_logic_vector(7 downto 0); -- sw_mod_data_i is actual output and sw_mod_data_o is
|
||||||
|
sw_mod_data_o : in std_logic_vector(7 downto 0) -- actual input. Please, don't be confused.
|
||||||
|
);
|
||||||
|
end entity sim_mux;
|
||||||
|
------------------------------------------------------------
|
||||||
|
architecture arch of sim_mux is
|
||||||
|
begin
|
||||||
|
|
||||||
|
-- Switch lines of SIM according to connected MODEM
|
||||||
|
sim_rst_o(0) <= mod_simrst_i(0) when reg_sim_modemnum(0) = 0
|
||||||
|
else mod_simrst_i(1) when reg_sim_modemnum(0) = 1
|
||||||
|
else mod_simrst_i(2) when reg_sim_modemnum(0) = 2
|
||||||
|
else mod_simrst_i(3) when reg_sim_modemnum(0) = 3
|
||||||
|
else mod_simrst_i(4) when reg_sim_modemnum(0) = 4
|
||||||
|
else mod_simrst_i(5) when reg_sim_modemnum(0) = 5
|
||||||
|
else mod_simrst_i(6) when reg_sim_modemnum(0) = 6
|
||||||
|
else mod_simrst_i(7) when reg_sim_modemnum(0) = 7
|
||||||
|
else 'Z';
|
||||||
|
sim_rst_o(1) <= mod_simrst_i(0) when reg_sim_modemnum(1) = 0
|
||||||
|
else mod_simrst_i(1) when reg_sim_modemnum(1) = 1
|
||||||
|
else mod_simrst_i(2) when reg_sim_modemnum(1) = 2
|
||||||
|
else mod_simrst_i(3) when reg_sim_modemnum(1) = 3
|
||||||
|
else mod_simrst_i(4) when reg_sim_modemnum(1) = 4
|
||||||
|
else mod_simrst_i(5) when reg_sim_modemnum(1) = 5
|
||||||
|
else mod_simrst_i(6) when reg_sim_modemnum(1) = 6
|
||||||
|
else mod_simrst_i(7) when reg_sim_modemnum(1) = 7
|
||||||
|
else 'Z';
|
||||||
|
sim_rst_o(2) <= mod_simrst_i(0) when reg_sim_modemnum(2) = 0
|
||||||
|
else mod_simrst_i(1) when reg_sim_modemnum(2) = 1
|
||||||
|
else mod_simrst_i(2) when reg_sim_modemnum(2) = 2
|
||||||
|
else mod_simrst_i(3) when reg_sim_modemnum(2) = 3
|
||||||
|
else mod_simrst_i(4) when reg_sim_modemnum(2) = 4
|
||||||
|
else mod_simrst_i(5) when reg_sim_modemnum(2) = 5
|
||||||
|
else mod_simrst_i(6) when reg_sim_modemnum(2) = 6
|
||||||
|
else mod_simrst_i(7) when reg_sim_modemnum(2) = 7
|
||||||
|
else 'Z';
|
||||||
|
sim_rst_o(3) <= mod_simrst_i(0) when reg_sim_modemnum(3) = 0
|
||||||
|
else mod_simrst_i(1) when reg_sim_modemnum(3) = 1
|
||||||
|
else mod_simrst_i(2) when reg_sim_modemnum(3) = 2
|
||||||
|
else mod_simrst_i(3) when reg_sim_modemnum(3) = 3
|
||||||
|
else mod_simrst_i(4) when reg_sim_modemnum(3) = 4
|
||||||
|
else mod_simrst_i(5) when reg_sim_modemnum(3) = 5
|
||||||
|
else mod_simrst_i(6) when reg_sim_modemnum(3) = 6
|
||||||
|
else mod_simrst_i(7) when reg_sim_modemnum(3) = 7
|
||||||
|
else 'Z';
|
||||||
|
sim_rst_o(4) <= mod_simrst_i(0) when reg_sim_modemnum(4) = 0
|
||||||
|
else mod_simrst_i(1) when reg_sim_modemnum(4) = 1
|
||||||
|
else mod_simrst_i(2) when reg_sim_modemnum(4) = 2
|
||||||
|
else mod_simrst_i(3) when reg_sim_modemnum(4) = 3
|
||||||
|
else mod_simrst_i(4) when reg_sim_modemnum(4) = 4
|
||||||
|
else mod_simrst_i(5) when reg_sim_modemnum(4) = 5
|
||||||
|
else mod_simrst_i(6) when reg_sim_modemnum(4) = 6
|
||||||
|
else mod_simrst_i(7) when reg_sim_modemnum(4) = 7
|
||||||
|
else 'Z';
|
||||||
|
sim_rst_o(5) <= mod_simrst_i(0) when reg_sim_modemnum(5) = 0
|
||||||
|
else mod_simrst_i(1) when reg_sim_modemnum(5) = 1
|
||||||
|
else mod_simrst_i(2) when reg_sim_modemnum(5) = 2
|
||||||
|
else mod_simrst_i(3) when reg_sim_modemnum(5) = 3
|
||||||
|
else mod_simrst_i(4) when reg_sim_modemnum(5) = 4
|
||||||
|
else mod_simrst_i(5) when reg_sim_modemnum(5) = 5
|
||||||
|
else mod_simrst_i(6) when reg_sim_modemnum(5) = 6
|
||||||
|
else mod_simrst_i(7) when reg_sim_modemnum(5) = 7
|
||||||
|
else 'Z';
|
||||||
|
sim_rst_o(6) <= mod_simrst_i(0) when reg_sim_modemnum(6) = 0
|
||||||
|
else mod_simrst_i(1) when reg_sim_modemnum(6) = 1
|
||||||
|
else mod_simrst_i(2) when reg_sim_modemnum(6) = 2
|
||||||
|
else mod_simrst_i(3) when reg_sim_modemnum(6) = 3
|
||||||
|
else mod_simrst_i(4) when reg_sim_modemnum(6) = 4
|
||||||
|
else mod_simrst_i(5) when reg_sim_modemnum(6) = 5
|
||||||
|
else mod_simrst_i(6) when reg_sim_modemnum(6) = 6
|
||||||
|
else mod_simrst_i(7) when reg_sim_modemnum(6) = 7
|
||||||
|
else 'Z';
|
||||||
|
sim_rst_o(7) <= mod_simrst_i(0) when reg_sim_modemnum(7) = 0
|
||||||
|
else mod_simrst_i(1) when reg_sim_modemnum(7) = 1
|
||||||
|
else mod_simrst_i(2) when reg_sim_modemnum(7) = 2
|
||||||
|
else mod_simrst_i(3) when reg_sim_modemnum(7) = 3
|
||||||
|
else mod_simrst_i(4) when reg_sim_modemnum(7) = 4
|
||||||
|
else mod_simrst_i(5) when reg_sim_modemnum(7) = 5
|
||||||
|
else mod_simrst_i(6) when reg_sim_modemnum(7) = 6
|
||||||
|
else mod_simrst_i(7) when reg_sim_modemnum(7) = 7
|
||||||
|
else 'Z';
|
||||||
|
|
||||||
|
-- Switch CLK line of SIM according to connected MODEM
|
||||||
|
sim_clk_o(0) <= mod_clk_i(0) when reg_sim_modemnum(0) = 0
|
||||||
|
else mod_clk_i(1) when reg_sim_modemnum(0) = 1
|
||||||
|
else mod_clk_i(2) when reg_sim_modemnum(0) = 2
|
||||||
|
else mod_clk_i(3) when reg_sim_modemnum(0) = 3
|
||||||
|
else mod_clk_i(4) when reg_sim_modemnum(0) = 4
|
||||||
|
else mod_clk_i(5) when reg_sim_modemnum(0) = 5
|
||||||
|
else mod_clk_i(6) when reg_sim_modemnum(0) = 6
|
||||||
|
else mod_clk_i(7) when reg_sim_modemnum(0) = 7
|
||||||
|
else 'Z';
|
||||||
|
sim_clk_o(1) <= mod_clk_i(0) when reg_sim_modemnum(1) = 0
|
||||||
|
else mod_clk_i(1) when reg_sim_modemnum(1) = 1
|
||||||
|
else mod_clk_i(2) when reg_sim_modemnum(1) = 2
|
||||||
|
else mod_clk_i(3) when reg_sim_modemnum(1) = 3
|
||||||
|
else mod_clk_i(4) when reg_sim_modemnum(1) = 4
|
||||||
|
else mod_clk_i(5) when reg_sim_modemnum(1) = 5
|
||||||
|
else mod_clk_i(6) when reg_sim_modemnum(1) = 6
|
||||||
|
else mod_clk_i(7) when reg_sim_modemnum(1) = 7
|
||||||
|
else 'Z';
|
||||||
|
sim_clk_o(2) <= mod_clk_i(0) when reg_sim_modemnum(2) = 0
|
||||||
|
else mod_clk_i(1) when reg_sim_modemnum(2) = 1
|
||||||
|
else mod_clk_i(2) when reg_sim_modemnum(2) = 2
|
||||||
|
else mod_clk_i(3) when reg_sim_modemnum(2) = 3
|
||||||
|
else mod_clk_i(4) when reg_sim_modemnum(2) = 4
|
||||||
|
else mod_clk_i(5) when reg_sim_modemnum(2) = 5
|
||||||
|
else mod_clk_i(6) when reg_sim_modemnum(2) = 6
|
||||||
|
else mod_clk_i(7) when reg_sim_modemnum(2) = 7
|
||||||
|
else 'Z';
|
||||||
|
sim_clk_o(3) <= mod_clk_i(0) when reg_sim_modemnum(3) = 0
|
||||||
|
else mod_clk_i(1) when reg_sim_modemnum(3) = 1
|
||||||
|
else mod_clk_i(2) when reg_sim_modemnum(3) = 2
|
||||||
|
else mod_clk_i(3) when reg_sim_modemnum(3) = 3
|
||||||
|
else mod_clk_i(4) when reg_sim_modemnum(3) = 4
|
||||||
|
else mod_clk_i(5) when reg_sim_modemnum(3) = 5
|
||||||
|
else mod_clk_i(6) when reg_sim_modemnum(3) = 6
|
||||||
|
else mod_clk_i(7) when reg_sim_modemnum(3) = 7
|
||||||
|
else 'Z';
|
||||||
|
sim_clk_o(4) <= mod_clk_i(0) when reg_sim_modemnum(4) = 0
|
||||||
|
else mod_clk_i(1) when reg_sim_modemnum(4) = 1
|
||||||
|
else mod_clk_i(2) when reg_sim_modemnum(4) = 2
|
||||||
|
else mod_clk_i(3) when reg_sim_modemnum(4) = 3
|
||||||
|
else mod_clk_i(4) when reg_sim_modemnum(4) = 4
|
||||||
|
else mod_clk_i(5) when reg_sim_modemnum(4) = 5
|
||||||
|
else mod_clk_i(6) when reg_sim_modemnum(4) = 6
|
||||||
|
else mod_clk_i(7) when reg_sim_modemnum(4) = 7
|
||||||
|
else 'Z';
|
||||||
|
sim_clk_o(5) <= mod_clk_i(0) when reg_sim_modemnum(5) = 0
|
||||||
|
else mod_clk_i(1) when reg_sim_modemnum(5) = 1
|
||||||
|
else mod_clk_i(2) when reg_sim_modemnum(5) = 2
|
||||||
|
else mod_clk_i(3) when reg_sim_modemnum(5) = 3
|
||||||
|
else mod_clk_i(4) when reg_sim_modemnum(5) = 4
|
||||||
|
else mod_clk_i(5) when reg_sim_modemnum(5) = 5
|
||||||
|
else mod_clk_i(6) when reg_sim_modemnum(5) = 6
|
||||||
|
else mod_clk_i(7) when reg_sim_modemnum(5) = 7
|
||||||
|
else 'Z';
|
||||||
|
sim_clk_o(6) <= mod_clk_i(0) when reg_sim_modemnum(6) = 0
|
||||||
|
else mod_clk_i(1) when reg_sim_modemnum(6) = 1
|
||||||
|
else mod_clk_i(2) when reg_sim_modemnum(6) = 2
|
||||||
|
else mod_clk_i(3) when reg_sim_modemnum(6) = 3
|
||||||
|
else mod_clk_i(4) when reg_sim_modemnum(6) = 4
|
||||||
|
else mod_clk_i(5) when reg_sim_modemnum(6) = 5
|
||||||
|
else mod_clk_i(6) when reg_sim_modemnum(6) = 6
|
||||||
|
else mod_clk_i(7) when reg_sim_modemnum(6) = 7
|
||||||
|
else 'Z';
|
||||||
|
sim_clk_o(7) <= mod_clk_i(0) when reg_sim_modemnum(7) = 0
|
||||||
|
else mod_clk_i(1) when reg_sim_modemnum(7) = 1
|
||||||
|
else mod_clk_i(2) when reg_sim_modemnum(7) = 2
|
||||||
|
else mod_clk_i(3) when reg_sim_modemnum(7) = 3
|
||||||
|
else mod_clk_i(4) when reg_sim_modemnum(7) = 4
|
||||||
|
else mod_clk_i(5) when reg_sim_modemnum(7) = 5
|
||||||
|
else mod_clk_i(6) when reg_sim_modemnum(7) = 6
|
||||||
|
else mod_clk_i(7) when reg_sim_modemnum(7) = 7
|
||||||
|
else 'Z';
|
||||||
|
|
||||||
|
-- Switch SIM DETECT line of SIM according to connected MODEM,
|
||||||
|
mod_detect_o(0) <= sim_detect_i(0) when reg_sim_modemnum(0) = 0
|
||||||
|
else sim_detect_i(1) when reg_sim_modemnum(1) = 0
|
||||||
|
else sim_detect_i(2) when reg_sim_modemnum(2) = 0
|
||||||
|
else sim_detect_i(3) when reg_sim_modemnum(3) = 0
|
||||||
|
else sim_detect_i(4) when reg_sim_modemnum(4) = 0
|
||||||
|
else sim_detect_i(5) when reg_sim_modemnum(5) = 0
|
||||||
|
else sim_detect_i(6) when reg_sim_modemnum(6) = 0
|
||||||
|
else sim_detect_i(7) when reg_sim_modemnum(7) = 0
|
||||||
|
else 'Z';
|
||||||
|
mod_detect_o(1) <= sim_detect_i(0) when reg_sim_modemnum(0) = 1
|
||||||
|
else sim_detect_i(1) when reg_sim_modemnum(1) = 1
|
||||||
|
else sim_detect_i(2) when reg_sim_modemnum(2) = 1
|
||||||
|
else sim_detect_i(3) when reg_sim_modemnum(3) = 1
|
||||||
|
else sim_detect_i(4) when reg_sim_modemnum(4) = 1
|
||||||
|
else sim_detect_i(5) when reg_sim_modemnum(5) = 1
|
||||||
|
else sim_detect_i(6) when reg_sim_modemnum(6) = 1
|
||||||
|
else sim_detect_i(7) when reg_sim_modemnum(7) = 1
|
||||||
|
else 'Z';
|
||||||
|
mod_detect_o(2) <= sim_detect_i(0) when reg_sim_modemnum(0) = 2
|
||||||
|
else sim_detect_i(1) when reg_sim_modemnum(1) = 2
|
||||||
|
else sim_detect_i(2) when reg_sim_modemnum(2) = 2
|
||||||
|
else sim_detect_i(3) when reg_sim_modemnum(3) = 2
|
||||||
|
else sim_detect_i(4) when reg_sim_modemnum(4) = 2
|
||||||
|
else sim_detect_i(5) when reg_sim_modemnum(5) = 2
|
||||||
|
else sim_detect_i(6) when reg_sim_modemnum(6) = 2
|
||||||
|
else sim_detect_i(7) when reg_sim_modemnum(7) = 2
|
||||||
|
else 'Z';
|
||||||
|
mod_detect_o(3) <= sim_detect_i(0) when reg_sim_modemnum(0) = 3
|
||||||
|
else sim_detect_i(1) when reg_sim_modemnum(1) = 3
|
||||||
|
else sim_detect_i(2) when reg_sim_modemnum(2) = 3
|
||||||
|
else sim_detect_i(3) when reg_sim_modemnum(3) = 3
|
||||||
|
else sim_detect_i(4) when reg_sim_modemnum(4) = 3
|
||||||
|
else sim_detect_i(5) when reg_sim_modemnum(5) = 3
|
||||||
|
else sim_detect_i(6) when reg_sim_modemnum(6) = 3
|
||||||
|
else sim_detect_i(7) when reg_sim_modemnum(7) = 3
|
||||||
|
else 'Z';
|
||||||
|
|
||||||
|
|
||||||
|
sw_mod_data_i(0) <= mod_data_i(0) when reg_sim_modemnum(0) = 0
|
||||||
|
else mod_data_i(1) when reg_sim_modemnum(0) = 1
|
||||||
|
else mod_data_i(2) when reg_sim_modemnum(0) = 2
|
||||||
|
else mod_data_i(3) when reg_sim_modemnum(0) = 3
|
||||||
|
else mod_data_i(4) when reg_sim_modemnum(0) = 4
|
||||||
|
else mod_data_i(5) when reg_sim_modemnum(0) = 5
|
||||||
|
else mod_data_i(6) when reg_sim_modemnum(0) = 6
|
||||||
|
else mod_data_i(7) when reg_sim_modemnum(0) = 7
|
||||||
|
else '1';
|
||||||
|
sw_mod_data_i(1) <= mod_data_i(0) when reg_sim_modemnum(1) = 0
|
||||||
|
else mod_data_i(1) when reg_sim_modemnum(1) = 1
|
||||||
|
else mod_data_i(2) when reg_sim_modemnum(1) = 2
|
||||||
|
else mod_data_i(3) when reg_sim_modemnum(1) = 3
|
||||||
|
else mod_data_i(4) when reg_sim_modemnum(1) = 4
|
||||||
|
else mod_data_i(5) when reg_sim_modemnum(1) = 5
|
||||||
|
else mod_data_i(6) when reg_sim_modemnum(1) = 6
|
||||||
|
else mod_data_i(7) when reg_sim_modemnum(1) = 7
|
||||||
|
else '1';
|
||||||
|
sw_mod_data_i(2) <= mod_data_i(0) when reg_sim_modemnum(2) = 0
|
||||||
|
else mod_data_i(1) when reg_sim_modemnum(2) = 1
|
||||||
|
else mod_data_i(2) when reg_sim_modemnum(2) = 2
|
||||||
|
else mod_data_i(3) when reg_sim_modemnum(2) = 3
|
||||||
|
else mod_data_i(4) when reg_sim_modemnum(2) = 4
|
||||||
|
else mod_data_i(5) when reg_sim_modemnum(2) = 5
|
||||||
|
else mod_data_i(6) when reg_sim_modemnum(2) = 6
|
||||||
|
else mod_data_i(7) when reg_sim_modemnum(2) = 7
|
||||||
|
else '1';
|
||||||
|
sw_mod_data_i(3) <= mod_data_i(0) when reg_sim_modemnum(3) = 0
|
||||||
|
else mod_data_i(1) when reg_sim_modemnum(3) = 1
|
||||||
|
else mod_data_i(2) when reg_sim_modemnum(3) = 2
|
||||||
|
else mod_data_i(3) when reg_sim_modemnum(3) = 3
|
||||||
|
else mod_data_i(4) when reg_sim_modemnum(3) = 4
|
||||||
|
else mod_data_i(5) when reg_sim_modemnum(3) = 5
|
||||||
|
else mod_data_i(6) when reg_sim_modemnum(3) = 6
|
||||||
|
else mod_data_i(7) when reg_sim_modemnum(3) = 7
|
||||||
|
else '1';
|
||||||
|
sw_mod_data_i(4) <= mod_data_i(0) when reg_sim_modemnum(4) = 0
|
||||||
|
else mod_data_i(1) when reg_sim_modemnum(4) = 1
|
||||||
|
else mod_data_i(2) when reg_sim_modemnum(4) = 2
|
||||||
|
else mod_data_i(3) when reg_sim_modemnum(4) = 3
|
||||||
|
else mod_data_i(4) when reg_sim_modemnum(4) = 4
|
||||||
|
else mod_data_i(5) when reg_sim_modemnum(4) = 5
|
||||||
|
else mod_data_i(6) when reg_sim_modemnum(4) = 6
|
||||||
|
else mod_data_i(7) when reg_sim_modemnum(4) = 7
|
||||||
|
else '1';
|
||||||
|
sw_mod_data_i(5) <= mod_data_i(0) when reg_sim_modemnum(5) = 0
|
||||||
|
else mod_data_i(1) when reg_sim_modemnum(5) = 1
|
||||||
|
else mod_data_i(2) when reg_sim_modemnum(5) = 2
|
||||||
|
else mod_data_i(3) when reg_sim_modemnum(5) = 3
|
||||||
|
else mod_data_i(4) when reg_sim_modemnum(5) = 4
|
||||||
|
else mod_data_i(5) when reg_sim_modemnum(5) = 5
|
||||||
|
else mod_data_i(6) when reg_sim_modemnum(5) = 6
|
||||||
|
else mod_data_i(7) when reg_sim_modemnum(5) = 7
|
||||||
|
else '1';
|
||||||
|
sw_mod_data_i(6) <= mod_data_i(0) when reg_sim_modemnum(6) = 0
|
||||||
|
else mod_data_i(1) when reg_sim_modemnum(6) = 1
|
||||||
|
else mod_data_i(2) when reg_sim_modemnum(6) = 2
|
||||||
|
else mod_data_i(3) when reg_sim_modemnum(6) = 3
|
||||||
|
else mod_data_i(4) when reg_sim_modemnum(6) = 4
|
||||||
|
else mod_data_i(5) when reg_sim_modemnum(6) = 5
|
||||||
|
else mod_data_i(6) when reg_sim_modemnum(6) = 6
|
||||||
|
else mod_data_i(7) when reg_sim_modemnum(6) = 7
|
||||||
|
else '1';
|
||||||
|
sw_mod_data_i(7) <= mod_data_i(0) when reg_sim_modemnum(7) = 0
|
||||||
|
else mod_data_i(1) when reg_sim_modemnum(7) = 1
|
||||||
|
else mod_data_i(2) when reg_sim_modemnum(7) = 2
|
||||||
|
else mod_data_i(3) when reg_sim_modemnum(7) = 3
|
||||||
|
else mod_data_i(4) when reg_sim_modemnum(7) = 4
|
||||||
|
else mod_data_i(5) when reg_sim_modemnum(7) = 5
|
||||||
|
else mod_data_i(6) when reg_sim_modemnum(7) = 6
|
||||||
|
else mod_data_i(7) when reg_sim_modemnum(7) = 7
|
||||||
|
else '1';
|
||||||
|
|
||||||
|
mod_data_o(0) <= sw_mod_data_o(0) when reg_sim_modemnum(0) = 0
|
||||||
|
else sw_mod_data_o(1) when reg_sim_modemnum(1) = 0
|
||||||
|
else sw_mod_data_o(2) when reg_sim_modemnum(2) = 0
|
||||||
|
else sw_mod_data_o(3) when reg_sim_modemnum(3) = 0
|
||||||
|
else sw_mod_data_o(4) when reg_sim_modemnum(4) = 0
|
||||||
|
else sw_mod_data_o(5) when reg_sim_modemnum(5) = 0
|
||||||
|
else sw_mod_data_o(6) when reg_sim_modemnum(6) = 0
|
||||||
|
else sw_mod_data_o(7) when reg_sim_modemnum(7) = 0
|
||||||
|
else 'Z';
|
||||||
|
mod_data_o(1) <= sw_mod_data_o(0) when reg_sim_modemnum(0) = 1
|
||||||
|
else sw_mod_data_o(1) when reg_sim_modemnum(1) = 1
|
||||||
|
else sw_mod_data_o(2) when reg_sim_modemnum(2) = 1
|
||||||
|
else sw_mod_data_o(3) when reg_sim_modemnum(3) = 1
|
||||||
|
else sw_mod_data_o(4) when reg_sim_modemnum(4) = 1
|
||||||
|
else sw_mod_data_o(5) when reg_sim_modemnum(5) = 1
|
||||||
|
else sw_mod_data_o(6) when reg_sim_modemnum(6) = 1
|
||||||
|
else sw_mod_data_o(7) when reg_sim_modemnum(7) = 1
|
||||||
|
else 'Z';
|
||||||
|
mod_data_o(2) <= sw_mod_data_o(0) when reg_sim_modemnum(0) = 2
|
||||||
|
else sw_mod_data_o(1) when reg_sim_modemnum(1) = 2
|
||||||
|
else sw_mod_data_o(2) when reg_sim_modemnum(2) = 2
|
||||||
|
else sw_mod_data_o(3) when reg_sim_modemnum(3) = 2
|
||||||
|
else sw_mod_data_o(4) when reg_sim_modemnum(4) = 2
|
||||||
|
else sw_mod_data_o(5) when reg_sim_modemnum(5) = 2
|
||||||
|
else sw_mod_data_o(6) when reg_sim_modemnum(6) = 2
|
||||||
|
else sw_mod_data_o(7) when reg_sim_modemnum(7) = 2
|
||||||
|
else 'Z';
|
||||||
|
mod_data_o(3) <= sw_mod_data_o(0) when reg_sim_modemnum(0) = 3
|
||||||
|
else sw_mod_data_o(1) when reg_sim_modemnum(1) = 3
|
||||||
|
else sw_mod_data_o(2) when reg_sim_modemnum(2) = 3
|
||||||
|
else sw_mod_data_o(3) when reg_sim_modemnum(3) = 3
|
||||||
|
else sw_mod_data_o(4) when reg_sim_modemnum(4) = 3
|
||||||
|
else sw_mod_data_o(5) when reg_sim_modemnum(5) = 3
|
||||||
|
else sw_mod_data_o(6) when reg_sim_modemnum(6) = 3
|
||||||
|
else sw_mod_data_o(7) when reg_sim_modemnum(7) = 3
|
||||||
|
else 'Z';
|
||||||
|
mod_data_o(4) <= sw_mod_data_o(0) when reg_sim_modemnum(0) = 4
|
||||||
|
else sw_mod_data_o(1) when reg_sim_modemnum(1) = 4
|
||||||
|
else sw_mod_data_o(2) when reg_sim_modemnum(2) = 4
|
||||||
|
else sw_mod_data_o(3) when reg_sim_modemnum(3) = 4
|
||||||
|
else sw_mod_data_o(4) when reg_sim_modemnum(4) = 4
|
||||||
|
else sw_mod_data_o(5) when reg_sim_modemnum(5) = 4
|
||||||
|
else sw_mod_data_o(6) when reg_sim_modemnum(6) = 4
|
||||||
|
else sw_mod_data_o(7) when reg_sim_modemnum(7) = 4
|
||||||
|
else 'Z';
|
||||||
|
mod_data_o(5) <= sw_mod_data_o(0) when reg_sim_modemnum(0) = 5
|
||||||
|
else sw_mod_data_o(1) when reg_sim_modemnum(1) = 5
|
||||||
|
else sw_mod_data_o(2) when reg_sim_modemnum(2) = 5
|
||||||
|
else sw_mod_data_o(3) when reg_sim_modemnum(3) = 5
|
||||||
|
else sw_mod_data_o(4) when reg_sim_modemnum(4) = 5
|
||||||
|
else sw_mod_data_o(5) when reg_sim_modemnum(5) = 5
|
||||||
|
else sw_mod_data_o(6) when reg_sim_modemnum(6) = 5
|
||||||
|
else sw_mod_data_o(7) when reg_sim_modemnum(7) = 5
|
||||||
|
else 'Z';
|
||||||
|
mod_data_o(6) <= sw_mod_data_o(0) when reg_sim_modemnum(0) = 6
|
||||||
|
else sw_mod_data_o(1) when reg_sim_modemnum(1) = 6
|
||||||
|
else sw_mod_data_o(2) when reg_sim_modemnum(2) = 6
|
||||||
|
else sw_mod_data_o(3) when reg_sim_modemnum(3) = 6
|
||||||
|
else sw_mod_data_o(4) when reg_sim_modemnum(4) = 6
|
||||||
|
else sw_mod_data_o(5) when reg_sim_modemnum(5) = 6
|
||||||
|
else sw_mod_data_o(6) when reg_sim_modemnum(6) = 6
|
||||||
|
else sw_mod_data_o(7) when reg_sim_modemnum(7) = 6
|
||||||
|
else 'Z';
|
||||||
|
mod_data_o(7) <= sw_mod_data_o(0) when reg_sim_modemnum(0) = 7
|
||||||
|
else sw_mod_data_o(1) when reg_sim_modemnum(1) = 7
|
||||||
|
else sw_mod_data_o(2) when reg_sim_modemnum(2) = 7
|
||||||
|
else sw_mod_data_o(3) when reg_sim_modemnum(3) = 7
|
||||||
|
else sw_mod_data_o(4) when reg_sim_modemnum(4) = 7
|
||||||
|
else sw_mod_data_o(5) when reg_sim_modemnum(5) = 7
|
||||||
|
else sw_mod_data_o(6) when reg_sim_modemnum(6) = 7
|
||||||
|
else sw_mod_data_o(7) when reg_sim_modemnum(7) = 7
|
||||||
|
else 'Z';
|
||||||
|
|
||||||
|
end architecture arch;
|
||||||
|
|
@ -4,6 +4,24 @@ use ieee.numeric_std.all;
|
||||||
|
|
||||||
package sim_switcher_pkg is
|
package sim_switcher_pkg is
|
||||||
|
|
||||||
|
type arr_modnum_t is array (natural range <>) of natural range 0 to 15;
|
||||||
|
|
||||||
|
component sim_mux is
|
||||||
|
port (
|
||||||
|
reg_sim_modemnum : arr_modnum_t(0 to 7);
|
||||||
|
sim_rst_o : out std_logic_vector(7 downto 0);
|
||||||
|
mod_simrst_i : in std_logic_vector(7 downto 0);
|
||||||
|
sim_clk_o : out std_logic_vector(7 downto 0);
|
||||||
|
mod_clk_i : in std_logic_vector(7 downto 0);
|
||||||
|
mod_detect_o : out std_logic_vector(3 downto 0);
|
||||||
|
sim_detect_i : in std_logic_vector(7 downto 0);
|
||||||
|
sw_mod_data_i : out std_logic_vector(7 downto 0); -- For switched tri-state buffer there are input and output part of
|
||||||
|
mod_data_i : in std_logic_vector(7 downto 0); -- the lines which are switched transparently, thus ports
|
||||||
|
mod_data_o : out std_logic_vector(7 downto 0); -- sw_mod_data_i is actual output and sw_mod_data_o is
|
||||||
|
sw_mod_data_o : in std_logic_vector(7 downto 0) -- actual input. Please, don't be confused.
|
||||||
|
);
|
||||||
|
end component sim_mux;
|
||||||
|
|
||||||
component i2c_slave is
|
component i2c_slave is
|
||||||
generic (
|
generic (
|
||||||
SLAVE_ADDR : std_logic_vector(6 downto 0)
|
SLAVE_ADDR : std_logic_vector(6 downto 0)
|
||||||
|
|
|
||||||
|
|
@ -30,6 +30,8 @@ entity sim_switcher_top is
|
||||||
cpu_trstn_o : out std_logic;
|
cpu_trstn_o : out std_logic;
|
||||||
cpu_jtag_rstn_o : out std_logic;
|
cpu_jtag_rstn_o : out std_logic;
|
||||||
|
|
||||||
|
-- FPGA interrupt to CPU
|
||||||
|
fpga_int_o : out std_logic; -- FPGA_INTn_V18, PIN_F12, active high
|
||||||
-- I2C slave interface
|
-- I2C slave interface
|
||||||
i2c_scl_io : inout std_logic;
|
i2c_scl_io : inout std_logic;
|
||||||
i2c_sda_io : inout std_logic;
|
i2c_sda_io : inout std_logic;
|
||||||
|
|
@ -188,26 +190,33 @@ architecture rtl of sim_switcher_top is
|
||||||
signal state: arr_state_t(0 to 7);
|
signal state: arr_state_t(0 to 7);
|
||||||
|
|
||||||
-- SIM-MODEM switching register
|
-- SIM-MODEM switching register
|
||||||
type arr_modnum_t is array (natural range <>) of natural range 0 to 15;
|
|
||||||
signal reg_sim_modemnum: arr_modnum_t(0 to 7);
|
signal reg_sim_modemnum: arr_modnum_t(0 to 7);
|
||||||
|
|
||||||
begin
|
begin
|
||||||
|
|
||||||
|
-- Interrupt generation
|
||||||
|
fpga_int_o <= not pse_intn;
|
||||||
|
|
||||||
|
-- Currently unused SIM data lines for VirtualSIM
|
||||||
s_sim_data_i(15 downto 8) <= (others => '1');
|
s_sim_data_i(15 downto 8) <= (others => '1');
|
||||||
sdb_sim_data_i(15 downto 8) <= (others => '1');
|
sdb_sim_data_i(15 downto 8) <= (others => '1');
|
||||||
|
|
||||||
|
-- Fill SIM detect register
|
||||||
reg_sim_det(7 downto 0) <= sim_detect_i;
|
reg_sim_det(7 downto 0) <= sim_detect_i;
|
||||||
reg_sim_det(15 downto 8) <= (others => '0');
|
reg_sim_det(15 downto 8) <= (others => '0');
|
||||||
|
|
||||||
--reg_sim_change_irq <= (others => '0');
|
-- Drive modem LEDs and Power
|
||||||
|
|
||||||
mod_led_o <= reg_mod_led;
|
mod_led_o <= reg_mod_led;
|
||||||
mod_pwr_o <= reg_mod_pwr;
|
mod_pwr_o <= reg_mod_pwr;
|
||||||
|
|
||||||
|
-- Drive PCI-e RSTn and WAKEn signals
|
||||||
mod_rstn_o <= reg_pcie_rstn;
|
mod_rstn_o <= reg_pcie_rstn;
|
||||||
reg_pcie_waken <= mod_pciehstwake_i;
|
reg_pcie_waken <= mod_pciehstwake_i;
|
||||||
|
|
||||||
|
-- Drive M.2 wake host signals
|
||||||
reg_mod_hstwake <= mod_wake_host_i;
|
reg_mod_hstwake <= mod_wake_host_i;
|
||||||
|
|
||||||
|
-- Drive FAN control signals
|
||||||
fan_o <= reg_fan_ctl;
|
fan_o <= reg_fan_ctl;
|
||||||
|
|
||||||
-- PSE init
|
-- PSE init
|
||||||
|
|
@ -441,8 +450,8 @@ begin
|
||||||
i2c_data_to_master <= x"18";
|
i2c_data_to_master <= x"18";
|
||||||
i2c_slv_state <= wait_while_sent;
|
i2c_slv_state <= wait_while_sent;
|
||||||
|
|
||||||
when x"11" => -- Read SW Version byte (v1.0=0x18, v1.1=0x19, v2.0=0x28)
|
when x"11" => -- Read SW Version byte (v1.0=0x18 MBCr1, v1.1=0x19 MBSr1, v2.0=0x28 MBSr2)
|
||||||
i2c_data_to_master <= x"20";
|
i2c_data_to_master <= x"28";
|
||||||
i2c_slv_state <= wait_while_sent;
|
i2c_slv_state <= wait_while_sent;
|
||||||
|
|
||||||
when x"12" => -- Read SIM board model regiser
|
when x"12" => -- Read SIM board model regiser
|
||||||
|
|
@ -497,16 +506,16 @@ begin
|
||||||
i2c_data_to_master <= reg_pcie_waken(7 downto 5)&"00000";
|
i2c_data_to_master <= reg_pcie_waken(7 downto 5)&"00000";
|
||||||
i2c_slv_state <= wait_while_sent;
|
i2c_slv_state <= wait_while_sent;
|
||||||
|
|
||||||
when x"0A" => -- Read SIMs detect register (LSB)
|
when x"0A" => -- Read SIM detect register (LSB)
|
||||||
i2c_data_to_master <= reg_sim_det(7 downto 0);
|
i2c_data_to_master <= reg_sim_det(7 downto 0);
|
||||||
i2c_slv_state <= wait_while_sent;
|
i2c_slv_state <= wait_while_sent;
|
||||||
-- when x"0B" => -- Read SIMs detect register (MSB)
|
-- when x"0B" => -- Read SIM detect register (MSB)
|
||||||
-- i2c_data_to_master <= reg_sim_det(15 downto 8);
|
-- i2c_data_to_master <= reg_sim_det(15 downto 8);
|
||||||
-- i2c_slv_state <= wait_while_sent;
|
-- i2c_slv_state <= wait_while_sent;
|
||||||
when x"0C" => -- Read SIMs power register (LSB)
|
when x"0C" => -- Read SIM power register (LSB)
|
||||||
i2c_data_to_master <= reg_sim_pwr(7 downto 0);
|
i2c_data_to_master <= reg_sim_pwr(7 downto 0);
|
||||||
i2c_slv_state <= wait_while_sent;
|
i2c_slv_state <= wait_while_sent;
|
||||||
-- when x"0D" => -- Read SIMs power register (MSB)
|
-- when x"0D" => -- Read SIM power register (MSB)
|
||||||
-- i2c_data_to_master <= reg_sim_pwr(15 downto 8);
|
-- i2c_data_to_master <= reg_sim_pwr(15 downto 8);
|
||||||
-- i2c_slv_state <= wait_while_sent;
|
-- i2c_slv_state <= wait_while_sent;
|
||||||
|
|
||||||
|
|
@ -657,196 +666,11 @@ begin
|
||||||
end if;
|
end if;
|
||||||
end process i2c_slv_process;
|
end process i2c_slv_process;
|
||||||
|
|
||||||
-------------------------------
|
--------------------------
|
||||||
--- SIM card emulation test ---
|
--- SIM card switching ---
|
||||||
-------------------------------
|
--------------------------
|
||||||
-- Switch RST line of SIM according to connected MODEM
|
|
||||||
sim_rst_o(0) <= mod_simrst_i(0) when reg_sim_modemnum(0) = 0
|
|
||||||
else mod_simrst_i(1) when reg_sim_modemnum(0) = 1
|
|
||||||
else mod_simrst_i(2) when reg_sim_modemnum(0) = 2
|
|
||||||
else mod_simrst_i(3) when reg_sim_modemnum(0) = 3
|
|
||||||
else mod_simrst_i(4) when reg_sim_modemnum(0) = 4
|
|
||||||
else mod_simrst_i(5) when reg_sim_modemnum(0) = 5
|
|
||||||
else mod_simrst_i(6) when reg_sim_modemnum(0) = 6
|
|
||||||
else mod_simrst_i(7) when reg_sim_modemnum(0) = 7
|
|
||||||
else 'Z';
|
|
||||||
sim_rst_o(1) <= mod_simrst_i(0) when reg_sim_modemnum(1) = 0
|
|
||||||
else mod_simrst_i(1) when reg_sim_modemnum(1) = 1
|
|
||||||
else mod_simrst_i(2) when reg_sim_modemnum(1) = 2
|
|
||||||
else mod_simrst_i(3) when reg_sim_modemnum(1) = 3
|
|
||||||
else mod_simrst_i(4) when reg_sim_modemnum(1) = 4
|
|
||||||
else mod_simrst_i(5) when reg_sim_modemnum(1) = 5
|
|
||||||
else mod_simrst_i(6) when reg_sim_modemnum(1) = 6
|
|
||||||
else mod_simrst_i(7) when reg_sim_modemnum(1) = 7
|
|
||||||
else 'Z';
|
|
||||||
sim_rst_o(2) <= mod_simrst_i(0) when reg_sim_modemnum(2) = 0
|
|
||||||
else mod_simrst_i(1) when reg_sim_modemnum(2) = 1
|
|
||||||
else mod_simrst_i(2) when reg_sim_modemnum(2) = 2
|
|
||||||
else mod_simrst_i(3) when reg_sim_modemnum(2) = 3
|
|
||||||
else mod_simrst_i(4) when reg_sim_modemnum(2) = 4
|
|
||||||
else mod_simrst_i(5) when reg_sim_modemnum(2) = 5
|
|
||||||
else mod_simrst_i(6) when reg_sim_modemnum(2) = 6
|
|
||||||
else mod_simrst_i(7) when reg_sim_modemnum(2) = 7
|
|
||||||
else 'Z';
|
|
||||||
sim_rst_o(3) <= mod_simrst_i(0) when reg_sim_modemnum(3) = 0
|
|
||||||
else mod_simrst_i(1) when reg_sim_modemnum(3) = 1
|
|
||||||
else mod_simrst_i(2) when reg_sim_modemnum(3) = 2
|
|
||||||
else mod_simrst_i(3) when reg_sim_modemnum(3) = 3
|
|
||||||
else mod_simrst_i(4) when reg_sim_modemnum(3) = 4
|
|
||||||
else mod_simrst_i(5) when reg_sim_modemnum(3) = 5
|
|
||||||
else mod_simrst_i(6) when reg_sim_modemnum(3) = 6
|
|
||||||
else mod_simrst_i(7) when reg_sim_modemnum(3) = 7
|
|
||||||
else 'Z';
|
|
||||||
sim_rst_o(4) <= mod_simrst_i(0) when reg_sim_modemnum(4) = 0
|
|
||||||
else mod_simrst_i(1) when reg_sim_modemnum(4) = 1
|
|
||||||
else mod_simrst_i(2) when reg_sim_modemnum(4) = 2
|
|
||||||
else mod_simrst_i(3) when reg_sim_modemnum(4) = 3
|
|
||||||
else mod_simrst_i(4) when reg_sim_modemnum(4) = 4
|
|
||||||
else mod_simrst_i(5) when reg_sim_modemnum(4) = 5
|
|
||||||
else mod_simrst_i(6) when reg_sim_modemnum(4) = 6
|
|
||||||
else mod_simrst_i(7) when reg_sim_modemnum(4) = 7
|
|
||||||
else 'Z';
|
|
||||||
sim_rst_o(5) <= mod_simrst_i(0) when reg_sim_modemnum(5) = 0
|
|
||||||
else mod_simrst_i(1) when reg_sim_modemnum(5) = 1
|
|
||||||
else mod_simrst_i(2) when reg_sim_modemnum(5) = 2
|
|
||||||
else mod_simrst_i(3) when reg_sim_modemnum(5) = 3
|
|
||||||
else mod_simrst_i(4) when reg_sim_modemnum(5) = 4
|
|
||||||
else mod_simrst_i(5) when reg_sim_modemnum(5) = 5
|
|
||||||
else mod_simrst_i(6) when reg_sim_modemnum(5) = 6
|
|
||||||
else mod_simrst_i(7) when reg_sim_modemnum(5) = 7
|
|
||||||
else 'Z';
|
|
||||||
sim_rst_o(6) <= mod_simrst_i(0) when reg_sim_modemnum(6) = 0
|
|
||||||
else mod_simrst_i(1) when reg_sim_modemnum(6) = 1
|
|
||||||
else mod_simrst_i(2) when reg_sim_modemnum(6) = 2
|
|
||||||
else mod_simrst_i(3) when reg_sim_modemnum(6) = 3
|
|
||||||
else mod_simrst_i(4) when reg_sim_modemnum(6) = 4
|
|
||||||
else mod_simrst_i(5) when reg_sim_modemnum(6) = 5
|
|
||||||
else mod_simrst_i(6) when reg_sim_modemnum(6) = 6
|
|
||||||
else mod_simrst_i(7) when reg_sim_modemnum(6) = 7
|
|
||||||
else 'Z';
|
|
||||||
sim_rst_o(7) <= mod_simrst_i(0) when reg_sim_modemnum(7) = 0
|
|
||||||
else mod_simrst_i(1) when reg_sim_modemnum(7) = 1
|
|
||||||
else mod_simrst_i(2) when reg_sim_modemnum(7) = 2
|
|
||||||
else mod_simrst_i(3) when reg_sim_modemnum(7) = 3
|
|
||||||
else mod_simrst_i(4) when reg_sim_modemnum(7) = 4
|
|
||||||
else mod_simrst_i(5) when reg_sim_modemnum(7) = 5
|
|
||||||
else mod_simrst_i(6) when reg_sim_modemnum(7) = 6
|
|
||||||
else mod_simrst_i(7) when reg_sim_modemnum(7) = 7
|
|
||||||
else 'Z';
|
|
||||||
|
|
||||||
-- Switch CLK line of SIM according to connected MODEM
|
-- Power on SIM card according to the reg_sim_pwr register
|
||||||
sim_clk_o(0) <= mod_clk_i(0) when reg_sim_modemnum(0) = 0
|
|
||||||
else mod_clk_i(1) when reg_sim_modemnum(0) = 1
|
|
||||||
else mod_clk_i(2) when reg_sim_modemnum(0) = 2
|
|
||||||
else mod_clk_i(3) when reg_sim_modemnum(0) = 3
|
|
||||||
else mod_clk_i(4) when reg_sim_modemnum(0) = 4
|
|
||||||
else mod_clk_i(5) when reg_sim_modemnum(0) = 5
|
|
||||||
else mod_clk_i(6) when reg_sim_modemnum(0) = 6
|
|
||||||
else mod_clk_i(7) when reg_sim_modemnum(0) = 7
|
|
||||||
else 'Z';
|
|
||||||
sim_clk_o(1) <= mod_clk_i(0) when reg_sim_modemnum(1) = 0
|
|
||||||
else mod_clk_i(1) when reg_sim_modemnum(1) = 1
|
|
||||||
else mod_clk_i(2) when reg_sim_modemnum(1) = 2
|
|
||||||
else mod_clk_i(3) when reg_sim_modemnum(1) = 3
|
|
||||||
else mod_clk_i(4) when reg_sim_modemnum(1) = 4
|
|
||||||
else mod_clk_i(5) when reg_sim_modemnum(1) = 5
|
|
||||||
else mod_clk_i(6) when reg_sim_modemnum(1) = 6
|
|
||||||
else mod_clk_i(7) when reg_sim_modemnum(1) = 7
|
|
||||||
else 'Z';
|
|
||||||
sim_clk_o(2) <= mod_clk_i(0) when reg_sim_modemnum(2) = 0
|
|
||||||
else mod_clk_i(1) when reg_sim_modemnum(2) = 1
|
|
||||||
else mod_clk_i(2) when reg_sim_modemnum(2) = 2
|
|
||||||
else mod_clk_i(3) when reg_sim_modemnum(2) = 3
|
|
||||||
else mod_clk_i(4) when reg_sim_modemnum(2) = 4
|
|
||||||
else mod_clk_i(5) when reg_sim_modemnum(2) = 5
|
|
||||||
else mod_clk_i(6) when reg_sim_modemnum(2) = 6
|
|
||||||
else mod_clk_i(7) when reg_sim_modemnum(2) = 7
|
|
||||||
else 'Z';
|
|
||||||
sim_clk_o(3) <= mod_clk_i(0) when reg_sim_modemnum(3) = 0
|
|
||||||
else mod_clk_i(1) when reg_sim_modemnum(3) = 1
|
|
||||||
else mod_clk_i(2) when reg_sim_modemnum(3) = 2
|
|
||||||
else mod_clk_i(3) when reg_sim_modemnum(3) = 3
|
|
||||||
else mod_clk_i(4) when reg_sim_modemnum(3) = 4
|
|
||||||
else mod_clk_i(5) when reg_sim_modemnum(3) = 5
|
|
||||||
else mod_clk_i(6) when reg_sim_modemnum(3) = 6
|
|
||||||
else mod_clk_i(7) when reg_sim_modemnum(3) = 7
|
|
||||||
else 'Z';
|
|
||||||
sim_clk_o(4) <= mod_clk_i(0) when reg_sim_modemnum(4) = 0
|
|
||||||
else mod_clk_i(1) when reg_sim_modemnum(4) = 1
|
|
||||||
else mod_clk_i(2) when reg_sim_modemnum(4) = 2
|
|
||||||
else mod_clk_i(3) when reg_sim_modemnum(4) = 3
|
|
||||||
else mod_clk_i(4) when reg_sim_modemnum(4) = 4
|
|
||||||
else mod_clk_i(5) when reg_sim_modemnum(4) = 5
|
|
||||||
else mod_clk_i(6) when reg_sim_modemnum(4) = 6
|
|
||||||
else mod_clk_i(7) when reg_sim_modemnum(4) = 7
|
|
||||||
else 'Z';
|
|
||||||
sim_clk_o(5) <= mod_clk_i(0) when reg_sim_modemnum(5) = 0
|
|
||||||
else mod_clk_i(1) when reg_sim_modemnum(5) = 1
|
|
||||||
else mod_clk_i(2) when reg_sim_modemnum(5) = 2
|
|
||||||
else mod_clk_i(3) when reg_sim_modemnum(5) = 3
|
|
||||||
else mod_clk_i(4) when reg_sim_modemnum(5) = 4
|
|
||||||
else mod_clk_i(5) when reg_sim_modemnum(5) = 5
|
|
||||||
else mod_clk_i(6) when reg_sim_modemnum(5) = 6
|
|
||||||
else mod_clk_i(7) when reg_sim_modemnum(5) = 7
|
|
||||||
else 'Z';
|
|
||||||
sim_clk_o(6) <= mod_clk_i(0) when reg_sim_modemnum(6) = 0
|
|
||||||
else mod_clk_i(1) when reg_sim_modemnum(6) = 1
|
|
||||||
else mod_clk_i(2) when reg_sim_modemnum(6) = 2
|
|
||||||
else mod_clk_i(3) when reg_sim_modemnum(6) = 3
|
|
||||||
else mod_clk_i(4) when reg_sim_modemnum(6) = 4
|
|
||||||
else mod_clk_i(5) when reg_sim_modemnum(6) = 5
|
|
||||||
else mod_clk_i(6) when reg_sim_modemnum(6) = 6
|
|
||||||
else mod_clk_i(7) when reg_sim_modemnum(6) = 7
|
|
||||||
else 'Z';
|
|
||||||
sim_clk_o(7) <= mod_clk_i(0) when reg_sim_modemnum(7) = 0
|
|
||||||
else mod_clk_i(1) when reg_sim_modemnum(7) = 1
|
|
||||||
else mod_clk_i(2) when reg_sim_modemnum(7) = 2
|
|
||||||
else mod_clk_i(3) when reg_sim_modemnum(7) = 3
|
|
||||||
else mod_clk_i(4) when reg_sim_modemnum(7) = 4
|
|
||||||
else mod_clk_i(5) when reg_sim_modemnum(7) = 5
|
|
||||||
else mod_clk_i(6) when reg_sim_modemnum(7) = 6
|
|
||||||
else mod_clk_i(7) when reg_sim_modemnum(7) = 7
|
|
||||||
else 'Z';
|
|
||||||
|
|
||||||
-- Switch SIM DETECT line of SIM according to connected MODEM,
|
|
||||||
mod_detect_o(0) <= sim_detect_i(0) when reg_sim_modemnum(0) = 0
|
|
||||||
else sim_detect_i(1) when reg_sim_modemnum(1) = 0
|
|
||||||
else sim_detect_i(2) when reg_sim_modemnum(2) = 0
|
|
||||||
else sim_detect_i(3) when reg_sim_modemnum(3) = 0
|
|
||||||
else sim_detect_i(4) when reg_sim_modemnum(4) = 0
|
|
||||||
else sim_detect_i(5) when reg_sim_modemnum(5) = 0
|
|
||||||
else sim_detect_i(6) when reg_sim_modemnum(6) = 0
|
|
||||||
else sim_detect_i(7) when reg_sim_modemnum(7) = 0
|
|
||||||
else 'Z';
|
|
||||||
mod_detect_o(1) <= sim_detect_i(0) when reg_sim_modemnum(0) = 1
|
|
||||||
else sim_detect_i(1) when reg_sim_modemnum(1) = 1
|
|
||||||
else sim_detect_i(2) when reg_sim_modemnum(2) = 1
|
|
||||||
else sim_detect_i(3) when reg_sim_modemnum(3) = 1
|
|
||||||
else sim_detect_i(4) when reg_sim_modemnum(4) = 1
|
|
||||||
else sim_detect_i(5) when reg_sim_modemnum(5) = 1
|
|
||||||
else sim_detect_i(6) when reg_sim_modemnum(6) = 1
|
|
||||||
else sim_detect_i(7) when reg_sim_modemnum(7) = 1
|
|
||||||
else 'Z';
|
|
||||||
mod_detect_o(2) <= sim_detect_i(0) when reg_sim_modemnum(0) = 2
|
|
||||||
else sim_detect_i(1) when reg_sim_modemnum(1) = 2
|
|
||||||
else sim_detect_i(2) when reg_sim_modemnum(2) = 2
|
|
||||||
else sim_detect_i(3) when reg_sim_modemnum(3) = 2
|
|
||||||
else sim_detect_i(4) when reg_sim_modemnum(4) = 2
|
|
||||||
else sim_detect_i(5) when reg_sim_modemnum(5) = 2
|
|
||||||
else sim_detect_i(6) when reg_sim_modemnum(6) = 2
|
|
||||||
else sim_detect_i(7) when reg_sim_modemnum(7) = 2
|
|
||||||
else 'Z';
|
|
||||||
mod_detect_o(3) <= sim_detect_i(0) when reg_sim_modemnum(0) = 3
|
|
||||||
else sim_detect_i(1) when reg_sim_modemnum(1) = 3
|
|
||||||
else sim_detect_i(2) when reg_sim_modemnum(2) = 3
|
|
||||||
else sim_detect_i(3) when reg_sim_modemnum(3) = 3
|
|
||||||
else sim_detect_i(4) when reg_sim_modemnum(4) = 3
|
|
||||||
else sim_detect_i(5) when reg_sim_modemnum(5) = 3
|
|
||||||
else sim_detect_i(6) when reg_sim_modemnum(6) = 3
|
|
||||||
else sim_detect_i(7) when reg_sim_modemnum(7) = 3
|
|
||||||
else 'Z';
|
|
||||||
|
|
||||||
-- Route one-way signals from mod to SIM
|
|
||||||
sim_pwron_o <= reg_sim_pwr(7 downto 0);
|
sim_pwron_o <= reg_sim_pwr(7 downto 0);
|
||||||
|
|
||||||
-- Bidir sinals routing
|
-- Bidir sinals routing
|
||||||
|
|
@ -877,153 +701,25 @@ begin
|
||||||
signal_in => s_sim_data_i(i),
|
signal_in => s_sim_data_i(i),
|
||||||
signal_out => sdb_sim_data_i(i)
|
signal_out => sdb_sim_data_i(i)
|
||||||
);
|
);
|
||||||
|
|
||||||
end generate gen_datalines;
|
end generate gen_datalines;
|
||||||
|
|
||||||
sw_mod_data_i(0) <= sdb_mod_data_i(0) when reg_sim_modemnum(0) = 0
|
-- Actual SIM/MODEM signal muxing
|
||||||
else sdb_mod_data_i(1) when reg_sim_modemnum(0) = 1
|
sim_muxing : sim_mux
|
||||||
else sdb_mod_data_i(2) when reg_sim_modemnum(0) = 2
|
port map (
|
||||||
else sdb_mod_data_i(3) when reg_sim_modemnum(0) = 3
|
reg_sim_modemnum => reg_sim_modemnum,
|
||||||
else sdb_mod_data_i(4) when reg_sim_modemnum(0) = 4
|
sim_rst_o => sim_rst_o,
|
||||||
else sdb_mod_data_i(5) when reg_sim_modemnum(0) = 5
|
mod_simrst_i => mod_simrst_i,
|
||||||
else sdb_mod_data_i(6) when reg_sim_modemnum(0) = 6
|
sim_clk_o => sim_clk_o,
|
||||||
else sdb_mod_data_i(7) when reg_sim_modemnum(0) = 7
|
mod_clk_i => mod_clk_i,
|
||||||
else '1';
|
mod_detect_o => mod_detect_o,
|
||||||
sw_mod_data_i(1) <= sdb_mod_data_i(0) when reg_sim_modemnum(1) = 0
|
sim_detect_i => sim_detect_i,
|
||||||
else sdb_mod_data_i(1) when reg_sim_modemnum(1) = 1
|
sw_mod_data_i => sw_mod_data_i, -- For switched tri-state buffer there are input and output part of
|
||||||
else sdb_mod_data_i(2) when reg_sim_modemnum(1) = 2
|
mod_data_i => sdb_mod_data_i, -- the lines which are switched transparently, thus ports
|
||||||
else sdb_mod_data_i(3) when reg_sim_modemnum(1) = 3
|
mod_data_o => s_mod_data_o, -- sw_mod_data_i is actual output and sw_mod_data_o is
|
||||||
else sdb_mod_data_i(4) when reg_sim_modemnum(1) = 4
|
sw_mod_data_o => sw_mod_data_o -- actual input. Please, don't be confused by conflicting name.
|
||||||
else sdb_mod_data_i(5) when reg_sim_modemnum(1) = 5
|
);
|
||||||
else sdb_mod_data_i(6) when reg_sim_modemnum(1) = 6
|
|
||||||
else sdb_mod_data_i(7) when reg_sim_modemnum(1) = 7
|
|
||||||
else '1';
|
|
||||||
sw_mod_data_i(2) <= sdb_mod_data_i(0) when reg_sim_modemnum(2) = 0
|
|
||||||
else sdb_mod_data_i(1) when reg_sim_modemnum(2) = 1
|
|
||||||
else sdb_mod_data_i(2) when reg_sim_modemnum(2) = 2
|
|
||||||
else sdb_mod_data_i(3) when reg_sim_modemnum(2) = 3
|
|
||||||
else sdb_mod_data_i(4) when reg_sim_modemnum(2) = 4
|
|
||||||
else sdb_mod_data_i(5) when reg_sim_modemnum(2) = 5
|
|
||||||
else sdb_mod_data_i(6) when reg_sim_modemnum(2) = 6
|
|
||||||
else sdb_mod_data_i(7) when reg_sim_modemnum(2) = 7
|
|
||||||
else '1';
|
|
||||||
sw_mod_data_i(3) <= sdb_mod_data_i(0) when reg_sim_modemnum(3) = 0
|
|
||||||
else sdb_mod_data_i(1) when reg_sim_modemnum(3) = 1
|
|
||||||
else sdb_mod_data_i(2) when reg_sim_modemnum(3) = 2
|
|
||||||
else sdb_mod_data_i(3) when reg_sim_modemnum(3) = 3
|
|
||||||
else sdb_mod_data_i(4) when reg_sim_modemnum(3) = 4
|
|
||||||
else sdb_mod_data_i(5) when reg_sim_modemnum(3) = 5
|
|
||||||
else sdb_mod_data_i(6) when reg_sim_modemnum(3) = 6
|
|
||||||
else sdb_mod_data_i(7) when reg_sim_modemnum(3) = 7
|
|
||||||
else '1';
|
|
||||||
sw_mod_data_i(4) <= sdb_mod_data_i(0) when reg_sim_modemnum(4) = 0
|
|
||||||
else sdb_mod_data_i(1) when reg_sim_modemnum(4) = 1
|
|
||||||
else sdb_mod_data_i(2) when reg_sim_modemnum(4) = 2
|
|
||||||
else sdb_mod_data_i(3) when reg_sim_modemnum(4) = 3
|
|
||||||
else sdb_mod_data_i(4) when reg_sim_modemnum(4) = 4
|
|
||||||
else sdb_mod_data_i(5) when reg_sim_modemnum(4) = 5
|
|
||||||
else sdb_mod_data_i(6) when reg_sim_modemnum(4) = 6
|
|
||||||
else sdb_mod_data_i(7) when reg_sim_modemnum(4) = 7
|
|
||||||
else '1';
|
|
||||||
sw_mod_data_i(5) <= sdb_mod_data_i(0) when reg_sim_modemnum(5) = 0
|
|
||||||
else sdb_mod_data_i(1) when reg_sim_modemnum(5) = 1
|
|
||||||
else sdb_mod_data_i(2) when reg_sim_modemnum(5) = 2
|
|
||||||
else sdb_mod_data_i(3) when reg_sim_modemnum(5) = 3
|
|
||||||
else sdb_mod_data_i(4) when reg_sim_modemnum(5) = 4
|
|
||||||
else sdb_mod_data_i(5) when reg_sim_modemnum(5) = 5
|
|
||||||
else sdb_mod_data_i(6) when reg_sim_modemnum(5) = 6
|
|
||||||
else sdb_mod_data_i(7) when reg_sim_modemnum(5) = 7
|
|
||||||
else '1';
|
|
||||||
sw_mod_data_i(6) <= sdb_mod_data_i(0) when reg_sim_modemnum(6) = 0
|
|
||||||
else sdb_mod_data_i(1) when reg_sim_modemnum(6) = 1
|
|
||||||
else sdb_mod_data_i(2) when reg_sim_modemnum(6) = 2
|
|
||||||
else sdb_mod_data_i(3) when reg_sim_modemnum(6) = 3
|
|
||||||
else sdb_mod_data_i(4) when reg_sim_modemnum(6) = 4
|
|
||||||
else sdb_mod_data_i(5) when reg_sim_modemnum(6) = 5
|
|
||||||
else sdb_mod_data_i(6) when reg_sim_modemnum(6) = 6
|
|
||||||
else sdb_mod_data_i(7) when reg_sim_modemnum(6) = 7
|
|
||||||
else '1';
|
|
||||||
sw_mod_data_i(7) <= sdb_mod_data_i(0) when reg_sim_modemnum(7) = 0
|
|
||||||
else sdb_mod_data_i(1) when reg_sim_modemnum(7) = 1
|
|
||||||
else sdb_mod_data_i(2) when reg_sim_modemnum(7) = 2
|
|
||||||
else sdb_mod_data_i(3) when reg_sim_modemnum(7) = 3
|
|
||||||
else sdb_mod_data_i(4) when reg_sim_modemnum(7) = 4
|
|
||||||
else sdb_mod_data_i(5) when reg_sim_modemnum(7) = 5
|
|
||||||
else sdb_mod_data_i(6) when reg_sim_modemnum(7) = 6
|
|
||||||
else sdb_mod_data_i(7) when reg_sim_modemnum(7) = 7
|
|
||||||
else '1';
|
|
||||||
|
|
||||||
s_mod_data_o(0) <= sw_mod_data_o(0) when reg_sim_modemnum(0) = 0
|
|
||||||
else sw_mod_data_o(1) when reg_sim_modemnum(1) = 0
|
|
||||||
else sw_mod_data_o(2) when reg_sim_modemnum(2) = 0
|
|
||||||
else sw_mod_data_o(3) when reg_sim_modemnum(3) = 0
|
|
||||||
else sw_mod_data_o(4) when reg_sim_modemnum(4) = 0
|
|
||||||
else sw_mod_data_o(5) when reg_sim_modemnum(5) = 0
|
|
||||||
else sw_mod_data_o(6) when reg_sim_modemnum(6) = 0
|
|
||||||
else sw_mod_data_o(7) when reg_sim_modemnum(7) = 0
|
|
||||||
else 'Z';
|
|
||||||
s_mod_data_o(1) <= sw_mod_data_o(0) when reg_sim_modemnum(0) = 1
|
|
||||||
else sw_mod_data_o(1) when reg_sim_modemnum(1) = 1
|
|
||||||
else sw_mod_data_o(2) when reg_sim_modemnum(2) = 1
|
|
||||||
else sw_mod_data_o(3) when reg_sim_modemnum(3) = 1
|
|
||||||
else sw_mod_data_o(4) when reg_sim_modemnum(4) = 1
|
|
||||||
else sw_mod_data_o(5) when reg_sim_modemnum(5) = 1
|
|
||||||
else sw_mod_data_o(6) when reg_sim_modemnum(6) = 1
|
|
||||||
else sw_mod_data_o(7) when reg_sim_modemnum(7) = 1
|
|
||||||
else 'Z';
|
|
||||||
s_mod_data_o(2) <= sw_mod_data_o(0) when reg_sim_modemnum(0) = 2
|
|
||||||
else sw_mod_data_o(1) when reg_sim_modemnum(1) = 2
|
|
||||||
else sw_mod_data_o(2) when reg_sim_modemnum(2) = 2
|
|
||||||
else sw_mod_data_o(3) when reg_sim_modemnum(3) = 2
|
|
||||||
else sw_mod_data_o(4) when reg_sim_modemnum(4) = 2
|
|
||||||
else sw_mod_data_o(5) when reg_sim_modemnum(5) = 2
|
|
||||||
else sw_mod_data_o(6) when reg_sim_modemnum(6) = 2
|
|
||||||
else sw_mod_data_o(7) when reg_sim_modemnum(7) = 2
|
|
||||||
else 'Z';
|
|
||||||
s_mod_data_o(3) <= sw_mod_data_o(0) when reg_sim_modemnum(0) = 3
|
|
||||||
else sw_mod_data_o(1) when reg_sim_modemnum(1) = 3
|
|
||||||
else sw_mod_data_o(2) when reg_sim_modemnum(2) = 3
|
|
||||||
else sw_mod_data_o(3) when reg_sim_modemnum(3) = 3
|
|
||||||
else sw_mod_data_o(4) when reg_sim_modemnum(4) = 3
|
|
||||||
else sw_mod_data_o(5) when reg_sim_modemnum(5) = 3
|
|
||||||
else sw_mod_data_o(6) when reg_sim_modemnum(6) = 3
|
|
||||||
else sw_mod_data_o(7) when reg_sim_modemnum(7) = 3
|
|
||||||
else 'Z';
|
|
||||||
s_mod_data_o(4) <= sw_mod_data_o(0) when reg_sim_modemnum(0) = 4
|
|
||||||
else sw_mod_data_o(1) when reg_sim_modemnum(1) = 4
|
|
||||||
else sw_mod_data_o(2) when reg_sim_modemnum(2) = 4
|
|
||||||
else sw_mod_data_o(3) when reg_sim_modemnum(3) = 4
|
|
||||||
else sw_mod_data_o(4) when reg_sim_modemnum(4) = 4
|
|
||||||
else sw_mod_data_o(5) when reg_sim_modemnum(5) = 4
|
|
||||||
else sw_mod_data_o(6) when reg_sim_modemnum(6) = 4
|
|
||||||
else sw_mod_data_o(7) when reg_sim_modemnum(7) = 4
|
|
||||||
else 'Z';
|
|
||||||
s_mod_data_o(5) <= sw_mod_data_o(0) when reg_sim_modemnum(0) = 5
|
|
||||||
else sw_mod_data_o(1) when reg_sim_modemnum(1) = 5
|
|
||||||
else sw_mod_data_o(2) when reg_sim_modemnum(2) = 5
|
|
||||||
else sw_mod_data_o(3) when reg_sim_modemnum(3) = 5
|
|
||||||
else sw_mod_data_o(4) when reg_sim_modemnum(4) = 5
|
|
||||||
else sw_mod_data_o(5) when reg_sim_modemnum(5) = 5
|
|
||||||
else sw_mod_data_o(6) when reg_sim_modemnum(6) = 5
|
|
||||||
else sw_mod_data_o(7) when reg_sim_modemnum(7) = 5
|
|
||||||
else 'Z';
|
|
||||||
s_mod_data_o(6) <= sw_mod_data_o(0) when reg_sim_modemnum(0) = 6
|
|
||||||
else sw_mod_data_o(1) when reg_sim_modemnum(1) = 6
|
|
||||||
else sw_mod_data_o(2) when reg_sim_modemnum(2) = 6
|
|
||||||
else sw_mod_data_o(3) when reg_sim_modemnum(3) = 6
|
|
||||||
else sw_mod_data_o(4) when reg_sim_modemnum(4) = 6
|
|
||||||
else sw_mod_data_o(5) when reg_sim_modemnum(5) = 6
|
|
||||||
else sw_mod_data_o(6) when reg_sim_modemnum(6) = 6
|
|
||||||
else sw_mod_data_o(7) when reg_sim_modemnum(7) = 6
|
|
||||||
else 'Z';
|
|
||||||
s_mod_data_o(7) <= sw_mod_data_o(0) when reg_sim_modemnum(0) = 7
|
|
||||||
else sw_mod_data_o(1) when reg_sim_modemnum(1) = 7
|
|
||||||
else sw_mod_data_o(2) when reg_sim_modemnum(2) = 7
|
|
||||||
else sw_mod_data_o(3) when reg_sim_modemnum(3) = 7
|
|
||||||
else sw_mod_data_o(4) when reg_sim_modemnum(4) = 7
|
|
||||||
else sw_mod_data_o(5) when reg_sim_modemnum(5) = 7
|
|
||||||
else sw_mod_data_o(6) when reg_sim_modemnum(6) = 7
|
|
||||||
else sw_mod_data_o(7) when reg_sim_modemnum(7) = 7
|
|
||||||
else 'Z';
|
|
||||||
|
|
||||||
------------------
|
------------------
|
||||||
-- SIM repeater --
|
-- SIM repeater --
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue