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)