diff --git a/libraries/base/dp/src/vhdl/dp_switch.vhd b/libraries/base/dp/src/vhdl/dp_switch.vhd index 12df30fd458965359da22dcc57a59848be5a6c13..1ddb92f94a76d9b73f5cc1dbf3ff7844f3d99bd2 100644 --- a/libraries/base/dp/src/vhdl/dp_switch.vhd +++ b/libraries/base/dp/src/vhdl/dp_switch.vhd @@ -83,9 +83,10 @@ ARCHITECTURE str OF dp_switch IS SIGNAL dp_mux_sel_ctrl : NATURAL; SIGNAL xonoff_snk_in_arr : t_dp_sosi_arr(g_nof_inputs-1 DOWNTO 0); + SIGNAL xonoff_snk_out_arr : t_dp_siso_arr(g_nof_inputs-1 DOWNTO 0); SIGNAL inverted_snk_in_arr : t_dp_sosi_arr(0 TO g_nof_inputs-1); - SIGNAL snk_out_arr : t_dp_siso_arr(0 TO g_nof_inputs-1); + SIGNAL inverted_snk_out_arr: t_dp_siso_arr(0 TO g_nof_inputs-1); BEGIN @@ -108,15 +109,7 @@ BEGIN slv_out => mm_fields_out ); - - - ------------------------------------------------------------------------------ - -- invert snk_in_arr, dp_mux uses a TO array. - ------------------------------------------------------------------------------ - gen_dp_switch_snk_in_arr : FOR i IN 0 TO g_nof_inputs-1 GENERATE - inverted_snk_in_arr(i) <= xonoff_snk_in_arr(i); - END GENERATE; - + ------------------------------------------------------------------------------ -- put dp_xonoff block inbetween data path to control data flow. ------------------------------------------------------------------------------ @@ -128,11 +121,19 @@ BEGIN -- Frame in in_sosi => snk_in_arr(i), -- Frame out - out_siso => snk_out_arr(i), -- flush control via out_siso.xon from dp_mux + out_siso => xonoff_snk_out_arr(i), -- flush control done by dp_mux.snk_out_arr out_sosi => xonoff_snk_in_arr(i) ); END GENERATE; + ------------------------------------------------------------------------------ + -- invert snk_in_arr, dp_mux uses a TO array. + ------------------------------------------------------------------------------ + gen_dp_switch_snk_in_arr : FOR i IN 0 TO g_nof_inputs-1 GENERATE + inverted_snk_in_arr(i) <= xonoff_snk_in_arr(i); + xonoff_snk_out_arr(i) <= inverted_snk_out_arr(i); + END GENERATE; + ------------------------------------------------------------------------------ -- Don't allow user to select a non-existent input -- . If user requests non-existent input, the default input is forwarded instead. @@ -146,6 +147,7 @@ BEGIN u_dp_mux : ENTITY work.dp_mux GENERIC MAP ( g_mode => 4, -- Use sel_ctrl + g_sel_ctrl_invert => FALSE, -- Dont invert, data is already reverse mapped from DOWNTO >> TO arrays. g_nof_input => g_nof_inputs, g_use_fifo => g_use_fifo, g_bsn_w => g_bsn_w, @@ -169,7 +171,7 @@ BEGIN sel_ctrl => dp_mux_sel_ctrl, snk_in_arr => inverted_snk_in_arr, - snk_out_arr => snk_out_arr, + snk_out_arr => inverted_snk_out_arr, src_out => src_out, src_in => c_dp_siso_rdy