From 6f3d7ad7228026f0f517e1d97ecef182e99f75e5 Mon Sep 17 00:00:00 2001
From: Eric Kooistra <kooistra@astron.nl>
Date: Mon, 9 Jan 2023 10:11:59 +0100
Subject: [PATCH] Use fft_out_gain_w = 2b, to have W_fsub_gain = W_fft_proc =
 5b.

---
 .../lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd       | 13 ++++++++++---
 libraries/dsp/wpfb/src/vhdl/wpfb_pkg.vhd            | 10 +++++++++-
 2 files changed, 19 insertions(+), 4 deletions(-)

diff --git a/applications/lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd b/applications/lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd
index cfd9043204..c9f096d437 100644
--- a/applications/lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd
+++ b/applications/lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd
@@ -99,7 +99,7 @@ PACKAGE sdp_pkg is
   CONSTANT c_sdp_W_statistic               : NATURAL := 64;
   CONSTANT c_sdp_W_statistic_sz            : NATURAL := 2;   -- = c_sdp_W_statistic / c_word_w
   CONSTANT c_sdp_W_sub_weight              : NATURAL := 16;  -- = w in s(w, p), s = signed
-  CONSTANT c_sdp_W_sub_weight_fraction     : NATURAL := 13;  -- = p in s(w, p)
+  CONSTANT c_sdp_W_sub_weight_fraction     : NATURAL := 14;  -- = p in s(w, p)
   CONSTANT c_sdp_W_sub_weight_magnitude    : NATURAL := c_sdp_W_sub_weight - c_sdp_W_sub_weight_fraction - 1;  -- = 2
   CONSTANT c_sdp_W_beamlet_scale           : NATURAL := 16;  -- = w in u(w, p), u = unsigned
   CONSTANT c_sdp_W_beamlet_scale_fraction  : NATURAL := 15;  -- = p in u(w, p)
@@ -169,11 +169,18 @@ PACKAGE sdp_pkg is
   -- . g_fft_out_gain_w = 1 (compensate for fil_backoff_w = 1)
   -- . g_fft_stage_dat_w = 24
   -- . g_fft_guard_w = 1
+  --CONSTANT c_sdp_wpfb_subbands : t_wpfb :=
+  --  (1, c_sdp_N_fft, 0, c_sdp_P_pfb,
+  --  c_sdp_N_taps, 1, c_sdp_W_adc, 23, c_sdp_W_fir_coef,
+  --  true, false, true, 23, c_sdp_W_subband, 1, 24, 1, true, 54, c_sdp_W_statistic_sz, 195313,
+  --  c_fft_pipeline, c_fft_pipeline, c_fil_ppf_pipeline);  -- = c_wpfb_lofar2_subbands_dts_18b
+
+  -- L2TS
   CONSTANT c_sdp_wpfb_subbands : t_wpfb :=
     (1, c_sdp_N_fft, 0, c_sdp_P_pfb,
     c_sdp_N_taps, 1, c_sdp_W_adc, 23, c_sdp_W_fir_coef,
-    true, false, true, 23, c_sdp_W_subband, 1, 24, 1, true, 54, c_sdp_W_statistic_sz, 195313,
-    c_fft_pipeline, c_fft_pipeline, c_fil_ppf_pipeline);  -- = c_wpfb_lofar2_subbands_dts_18b
+    true, false, true, 23, c_sdp_W_subband, 2, 24, 1, true, 54, c_sdp_W_statistic_sz, 195313,
+    c_fft_pipeline, c_fft_pipeline, c_fil_ppf_pipeline);  -- = c_wpfb_lofar2_subbands_l2ts_18b
 
   CONSTANT c_sdp_wpfb_complex_subbands : t_wpfb := func_wpfb_map_real_input_wpfb_parameters_to_complex_input(c_sdp_wpfb_subbands);
 
diff --git a/libraries/dsp/wpfb/src/vhdl/wpfb_pkg.vhd b/libraries/dsp/wpfb/src/vhdl/wpfb_pkg.vhd
index df393099f5..b175a1a1cf 100644
--- a/libraries/dsp/wpfb/src/vhdl/wpfb_pkg.vhd
+++ b/libraries/dsp/wpfb/src/vhdl/wpfb_pkg.vhd
@@ -82,6 +82,8 @@ package wpfb_pkg is
   -- LOFAR2 subband filter
   -----------------------------------------------------------------------------
 
+  -- Can use guard_w = 1, because fil_backoff_w = 1 already provides sufficient input margin
+
   -- Fsub settings:
   -- . Settings used on LTS and DTS until at least March 2022
   constant c_wpfb_lofar2_subbands_lts_2021 : t_wpfb := (1, 1024, 0, 6,
@@ -97,7 +99,7 @@ package wpfb_pkg is
                                                        true, false, true, 23, 18, 1, 24, 1, true, 54, 2, 195313,
                                                        c_fft_pipeline, c_fft_pipeline, c_fil_ppf_pipeline);
 
-  -- . Settings used on DTS with fft_out_dat_w = 19b, to preserve FFT processing gain of 4.5 bits
+  -- . Settings used in tb_tb_verify_pfb_wg with fft_out_dat_w = 19b, to preserve FFT processing gain of 4.5 bits
   --   - use stage_dat_w = 25 --> fil_out_dat_w = fft_in_dat_w = 24
   --   - with fft_out_dat_w = 19 --> stat_data_w = 2*19 + 18 = 56 b
   constant c_wpfb_lofar2_subbands_dts_19b : t_wpfb := (1, 1024, 0, 6,
@@ -105,6 +107,12 @@ package wpfb_pkg is
                                                        true, false, true, 24, 19, 1, 25, 1, true, 56, 2, 195313,
                                                        c_fft_pipeline, c_fft_pipeline, c_fil_ppf_pipeline);
 
+  -- . Settings for L2TS with fft_out_gain_w = 2b, to have W_fsub_gain = W_fft_proc = 5b
+  constant c_wpfb_lofar2_subbands_l2ts_18b : t_wpfb := (1, 1024, 0, 6,
+                                                       16, 1, 14, 23, 16,
+                                                       true, false, true, 23, 18, 2, 24, 1, true, 54, 2, 195313,
+                                                       c_fft_pipeline, c_fft_pipeline, c_fil_ppf_pipeline);
+
   constant c_wpfb_lofar2_subbands : t_wpfb := c_wpfb_lofar2_subbands_dts_18b;
 
   -- The FFT output has more bits to be able to preserve the sensitivity of
-- 
GitLab