diff --git a/applications/lofar2/libraries/sdp/src/vhdl/node_sdp_filterbank.vhd b/applications/lofar2/libraries/sdp/src/vhdl/node_sdp_filterbank.vhd index 69356104b26cf09270a30ac75a2be71193b51ce8..a30bf342f7766974952a2bc51bdb9824b95d587d 100644 --- a/applications/lofar2/libraries/sdp/src/vhdl/node_sdp_filterbank.vhd +++ b/applications/lofar2/libraries/sdp/src/vhdl/node_sdp_filterbank.vhd @@ -181,7 +181,8 @@ BEGIN g_use_prefilter => TRUE, g_stats_ena => FALSE, g_use_bg => FALSE, - g_coefs_file_prefix => c_coefs_file_prefix + g_coefs_file_prefix => c_coefs_file_prefix, + g_restart_on_valid => FALSE ) PORT MAP ( dp_rst => dp_rst, diff --git a/libraries/dsp/wpfb/src/vhdl/wpfb_unit_dev.vhd b/libraries/dsp/wpfb/src/vhdl/wpfb_unit_dev.vhd index 5188d93bd2cc1cc01f51cedbd5974a3e48a9eb5e..e63d1860dc244929c83b99be41d886fefff7c7cf 100644 --- a/libraries/dsp/wpfb/src/vhdl/wpfb_unit_dev.vhd +++ b/libraries/dsp/wpfb/src/vhdl/wpfb_unit_dev.vhd @@ -365,7 +365,8 @@ entity wpfb_unit_dev is g_use_prefilter : boolean := TRUE; g_stats_ena : boolean := TRUE; -- Enables the statistics unit g_use_bg : boolean := FALSE; - g_coefs_file_prefix : string := "data/coefs_wide" -- File prefix for the coefficients files. + g_coefs_file_prefix : string := "data/coefs_wide"; -- File prefix for the coefficients files. + g_restart_on_valid : boolean := TRUE ); port ( dp_rst : in std_logic := '0'; @@ -383,7 +384,7 @@ entity wpfb_unit_dev is in_sosi_arr : in t_dp_sosi_arr(g_wpfb.nof_wb_streams*g_wpfb.wb_factor-1 downto 0); fil_sosi_arr : out t_dp_sosi_arr(g_wpfb.nof_wb_streams*g_wpfb.wb_factor-1 downto 0); out_sosi_arr : out t_dp_sosi_arr(g_wpfb.nof_wb_streams*g_wpfb.wb_factor-1 downto 0); - dp_bsn_source_restart : in std_logic + dp_bsn_source_restart : in std_logic := '0' ); end entity wpfb_unit_dev; @@ -466,7 +467,11 @@ begin begin v := r; v.in_sosi_arr := in_sosi_arr; - v.bsn_source_restart := dp_bsn_source_restart; + IF g_restart_on_valid THEN + v.bsn_source_restart := (NOT r.in_sosi_arr(0).valid) AND in_sosi_arr(0).valid; + ELSE + v.bsn_source_restart := dp_bsn_source_restart; + END IF; rin <= v; end process comb; diff --git a/libraries/dsp/wpfb/tb/vhdl/tb_wpfb_unit_dev.vhd b/libraries/dsp/wpfb/tb/vhdl/tb_wpfb_unit_dev.vhd index 61eb02d33154f9d5913df6b2ca23e7f768f61a5b..f789359e1d3410443b43e3e84fa048ff4c21290c 100644 --- a/libraries/dsp/wpfb/tb/vhdl/tb_wpfb_unit_dev.vhd +++ b/libraries/dsp/wpfb/tb/vhdl/tb_wpfb_unit_dev.vhd @@ -330,8 +330,7 @@ BEGIN ram_bg_data_mosi => ram_diag_bg_pfb_mosi, ram_bg_data_miso => ram_diag_bg_pfb_miso, in_sosi_arr => bg_sosi_arr, - out_sosi_arr => out_sosi_arr, - dp_bsn_source_restart => bg_sosi_arr(0).sync + out_sosi_arr => out_sosi_arr ); time_map : process is diff --git a/libraries/dsp/wpfb/tb/vhdl/tb_wpfb_unit_wide.vhd b/libraries/dsp/wpfb/tb/vhdl/tb_wpfb_unit_wide.vhd index bf8e6cb17e5dfd61f20376510f7a5174c379d400..d385e8f7cfe41cbcfee9ae6e1713c7d263d71383 100644 --- a/libraries/dsp/wpfb/tb/vhdl/tb_wpfb_unit_wide.vhd +++ b/libraries/dsp/wpfb/tb/vhdl/tb_wpfb_unit_wide.vhd @@ -486,8 +486,7 @@ begin ram_bg_data_miso => open, in_sosi_arr => in_sosi_arr, fil_sosi_arr => fil_sosi_arr, - out_sosi_arr => out_sosi_arr, - dp_bsn_source_restart => in_sosi_arr(0).sync + out_sosi_arr => out_sosi_arr ); p_fil_sosi_arr : process(fil_sosi_arr)