diff --git a/modules/wishbone/wb_crossbar/xwb_crossbar.vhd b/modules/wishbone/wb_crossbar/xwb_crossbar.vhd index bfce52a5000e4d7c586dfba8d17014f883778cae..2c570240ca79189699a522d977dab6f0baeb3f6c 100644 --- a/modules/wishbone/wb_crossbar/xwb_crossbar.vhd +++ b/modules/wishbone/wb_crossbar/xwb_crossbar.vhd @@ -66,7 +66,9 @@ entity xwb_crossbar is slave_o : out t_wishbone_slave_out_array(g_num_masters-1 downto 0); -- Slave connections (INTERCON is a master) master_i : in t_wishbone_master_in_array(g_num_slaves-1 downto 0); - master_o : out t_wishbone_master_out_array(g_num_slaves-1 downto 0)); + master_o : out t_wishbone_master_out_array(g_num_slaves-1 downto 0); + -- Master granted access to SDB for use by MSI crossbar (please ignore it) + sdb_sel_o : out std_logic_vector(g_num_masters-1 downto 0)); end xwb_crossbar; architecture rtl of xwb_crossbar is @@ -398,4 +400,10 @@ begin master_matrixs : for master in g_num_masters-1 downto 0 generate slave_o(master) <= master_logic(master, granted, master_ie); end generate; + + -- Tell SDB which master is accessing it (SDB is last slave) + sdb_masters : for master in g_num_masters-1 downto 0 generate + sdb_sel_o(master) <= granted(master, g_num_slaves); + end generate; + end rtl; diff --git a/modules/wishbone/wishbone_pkg.vhd b/modules/wishbone/wishbone_pkg.vhd index ddeed8e5a7a86a73fd0890c88be56d6a54c1e45a..e0dac7c66f6b5e41743b0a953e9264d06c1f4bf1 100644 --- a/modules/wishbone/wishbone_pkg.vhd +++ b/modules/wishbone/wishbone_pkg.vhd @@ -316,7 +316,8 @@ package wishbone_pkg is slave_i : in t_wishbone_slave_in_array(g_num_masters-1 downto 0); slave_o : out t_wishbone_slave_out_array(g_num_masters-1 downto 0); master_i : in t_wishbone_master_in_array(g_num_slaves-1 downto 0); - master_o : out t_wishbone_master_out_array(g_num_slaves-1 downto 0)); + master_o : out t_wishbone_master_out_array(g_num_slaves-1 downto 0); + sdb_sel_o : out std_logic_vector(g_num_masters-1 downto 0)); -- leave open! end component; -- Use the f_xwb_bridge_*_sdb to bridge a crossbar to another