Skip to content
Snippets Groups Projects
Commit b7ed01ea authored by Grzegorz Daniluk's avatar Grzegorz Daniluk
Browse files

optimize WB crossbar connections

parent d722e794
Branches
Tags
No related merge requests found
......@@ -395,36 +395,32 @@ architecture struct of wr_core is
-----------------------------------------------------------------------------
--WB Secondary Crossbar
-----------------------------------------------------------------------------
constant c_secbar_layout : t_sdb_record_array(7 downto 0) :=
(0 => f_sdb_embed_device(c_xwr_mini_nic_sdb, x"00000000"),
1 => f_sdb_embed_device(c_xwr_endpoint_sdb, x"00000100"),
2 => f_sdb_embed_device(c_xwr_softpll_ng_sdb, x"00000200"),
3 => f_sdb_embed_device(c_xwr_pps_gen_sdb, x"00000300"),
4 => f_sdb_embed_device(c_wrc_periph0_sdb, x"00000400"), -- Syscon
5 => f_sdb_embed_device(c_wrc_periph1_sdb, x"00000500"), -- UART
6 => f_sdb_embed_device(c_wrc_periph2_sdb, x"00000600"), -- 1-Wire
7 => f_sdb_embed_device(g_aux_sdb, x"00000700") -- aux WB bus
constant c_secbar_layout : t_sdb_record_array(8 downto 0) :=
(0 => f_sdb_embed_device(f_xwb_dpram(g_dpram_size), x"00000000"),
1 => f_sdb_embed_device(c_xwr_mini_nic_sdb, x"00020000"),
2 => f_sdb_embed_device(c_xwr_endpoint_sdb, x"00020100"),
3 => f_sdb_embed_device(c_xwr_softpll_ng_sdb, x"00020200"),
4 => f_sdb_embed_device(c_xwr_pps_gen_sdb, x"00020300"),
5 => f_sdb_embed_device(c_wrc_periph0_sdb, x"00020400"), -- Syscon
6 => f_sdb_embed_device(c_wrc_periph1_sdb, x"00020500"), -- UART
7 => f_sdb_embed_device(c_wrc_periph2_sdb, x"00020600"), -- 1-Wire
8 => f_sdb_embed_device(g_aux_sdb, x"00020700") -- aux WB bus
);
constant c_secbar_sdb_address : t_wishbone_address := x"00000800";
constant c_secbar_sdb_address : t_wishbone_address := x"00030000";
constant c_secbar_bridge_sdb : t_sdb_bridge :=
f_xwb_bridge_layout_sdb(true, c_secbar_layout, c_secbar_sdb_address);
signal secbar_master_i : t_wishbone_master_in_array(7 downto 0);
signal secbar_master_o : t_wishbone_master_out_array(7 downto 0);
signal secbar_master_i : t_wishbone_master_in_array(8 downto 0);
signal secbar_master_o : t_wishbone_master_out_array(8 downto 0);
-----------------------------------------------------------------------------
--WB intercon
-----------------------------------------------------------------------------
constant c_layout : t_sdb_record_array(1 downto 0) :=
(0 => f_sdb_embed_device(f_xwb_dpram(g_dpram_size), x"00000000"),
1 => f_sdb_embed_bridge(c_secbar_bridge_sdb, x"00020000"));
constant c_sdb_address : t_wishbone_address := x"00030000";
signal cbar_slave_i : t_wishbone_slave_in_array (1 downto 0);
signal cbar_slave_o : t_wishbone_slave_out_array(1 downto 0);
signal cbar_master_i : t_wishbone_master_in_array(1 downto 0);
signal cbar_master_o : t_wishbone_master_out_array(1 downto 0);
signal cbar_master_i : t_wishbone_master_in_array(0 downto 0);
signal cbar_master_o : t_wishbone_master_out_array(0 downto 0);
-----------------------------------------------------------------------------
--External WB interface
......@@ -774,8 +770,8 @@ begin
clk_sys_i => clk_sys_i,
rst_n_i => rst_n_i,
slave1_i => cbar_master_o(0),
slave1_o => cbar_master_i(0),
slave1_i => secbar_master_o(0),
slave1_o => secbar_master_i(0),
slave2_i => dpram_wbb_i,
slave2_o => dpram_wbb_o);
......@@ -859,15 +855,13 @@ begin
-----------------------------------------------------------------------------
-- WB intercon
-----------------------------------------------------------------------------
WB_CON : xwb_sdb_crossbar
WB_CON : xwb_crossbar
generic map(
g_num_masters => 2,
g_num_slaves => 2,
g_num_slaves => 1,
g_registered => true,
g_wraparound => true,
g_layout => c_layout,
g_sdb_addr => c_sdb_address
)
g_address => (0 => x"00000000"),
g_mask => (0 => x"00000000"))
port map(
clk_sys_i => clk_sys_i,
rst_n_i => rst_n_i,
......@@ -930,7 +924,7 @@ begin
WB_SECONDARY_CON : xwb_sdb_crossbar
generic map(
g_num_masters => 1,
g_num_slaves => 8,
g_num_slaves => 9,
g_registered => true,
g_wraparound => true,
g_layout => c_secbar_layout,
......@@ -940,42 +934,42 @@ begin
clk_sys_i => clk_sys_i,
rst_n_i => rst_n_i,
-- Master connections (INTERCON is a slave)
slave_i(0) => cbar_master_o(1),
slave_o(0) => cbar_master_i(1),
slave_i(0) => cbar_master_o(0),
slave_o(0) => cbar_master_i(0),
-- Slave connections (INTERCON is a master)
master_i => secbar_master_i,
master_o => secbar_master_o
);
secbar_master_i(0) <= minic_wb_out;
minic_wb_in <= secbar_master_o(0);
secbar_master_i(1) <= ep_wb_out;
ep_wb_in <= secbar_master_o(1);
secbar_master_i(2) <= spll_wb_out;
spll_wb_in <= secbar_master_o(2);
secbar_master_i(3) <= ppsg_wb_out;
ppsg_wb_in <= secbar_master_o(3);
secbar_master_i(1) <= minic_wb_out;
minic_wb_in <= secbar_master_o(1);
secbar_master_i(2) <= ep_wb_out;
ep_wb_in <= secbar_master_o(2);
secbar_master_i(3) <= spll_wb_out;
spll_wb_in <= secbar_master_o(3);
secbar_master_i(4) <= ppsg_wb_out;
ppsg_wb_in <= secbar_master_o(4);
--peripherials
secbar_master_i(4) <= periph_slave_o(0);
secbar_master_i(5) <= periph_slave_o(1);
secbar_master_i(6) <= periph_slave_o(2);
periph_slave_i(0) <= secbar_master_o(4);
periph_slave_i(1) <= secbar_master_o(5);
periph_slave_i(2) <= secbar_master_o(6);
aux_adr_o <= secbar_master_o(7).adr;
aux_dat_o <= secbar_master_o(7).dat;
aux_sel_o <= secbar_master_o(7).sel;
aux_cyc_o <= secbar_master_o(7).cyc;
aux_stb_o <= secbar_master_o(7).stb;
aux_we_o <= secbar_master_o(7).we;
secbar_master_i(7).dat <= aux_dat_i;
secbar_master_i(7).ack <= aux_ack_i;
secbar_master_i(7).stall <= aux_stall_i;
secbar_master_i(7).err <= '0';
secbar_master_i(7).rty <= '0';
secbar_master_i(5) <= periph_slave_o(0);
secbar_master_i(6) <= periph_slave_o(1);
secbar_master_i(7) <= periph_slave_o(2);
periph_slave_i(0) <= secbar_master_o(5);
periph_slave_i(1) <= secbar_master_o(6);
periph_slave_i(2) <= secbar_master_o(7);
aux_adr_o <= secbar_master_o(8).adr;
aux_dat_o <= secbar_master_o(8).dat;
aux_sel_o <= secbar_master_o(8).sel;
aux_cyc_o <= secbar_master_o(8).cyc;
aux_stb_o <= secbar_master_o(8).stb;
aux_we_o <= secbar_master_o(8).we;
secbar_master_i(8).dat <= aux_dat_i;
secbar_master_i(8).ack <= aux_ack_i;
secbar_master_i(8).stall <= aux_stall_i;
secbar_master_i(8).err <= '0';
secbar_master_i(8).rty <= '0';
-----------------------------------------------------------------------------
-- WBP MUX
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment