Skip to content
Snippets Groups Projects
Commit fa74ff73 authored by Eric Kooistra's avatar Eric Kooistra
Browse files

Added more results. Select only c_gen_ref = TRUE for regression test.

parent 758255e7
No related branches found
No related tags found
1 merge request!231Use applications/lofar2/model/pfs_coeff_final.m to create FIR coefficients for...
Pipeline #27973 passed
...@@ -189,8 +189,8 @@ gen_ref : IF c_gen_ref GENERATE -- . . ...@@ -189,8 +189,8 @@ gen_ref : IF c_gen_ref GENERATE -- . .
--u_lts_2020_11_23 : ENTITY work.tb_verify_pfb_wg GENERIC MAP (1002, "WPFB", 61.0, 61.0, 1.0, 0.0, 0.0, 0.0, c_fil_coefs, 16, 1, 14, 16, 18, 1, 18, 2, '0'); --u_lts_2020_11_23 : ENTITY work.tb_verify_pfb_wg GENERIC MAP (1002, "WPFB", 61.0, 61.0, 1.0, 0.0, 0.0, 0.0, c_fil_coefs, 16, 1, 14, 16, 18, 1, 18, 2, '0');
---- PFB2 ---- PFB2
u_lofar1_12b : ENTITY work.tb_verify_pfb_wg GENERIC MAP (1003, "PFB2", 61.0, 61.0, 1.0, 0.0, 0.0, 0.0, c_fil_coefs, 16, 0, 12, 18, 18, 0, 20, 0, '0'); u_lofar1_12b : ENTITY work.tb_verify_pfb_wg GENERIC MAP (1003, "PFB2", 61.0, 61.0, 1.0, 0.0, 0.0, 0.0, c_fil_coefs, 16, 0, 12, 18, 18, 0, 20, 0, '0');
u_lofar1_14b : ENTITY work.tb_verify_pfb_wg GENERIC MAP (1004, "PFB2", 61.0, 61.0, 1.0, 0.0, 0.0, 0.0, c_fil_coefs, 16, 0, 14, 18, 18, 0, 20, 0, '0'); --u_lofar1_14b : ENTITY work.tb_verify_pfb_wg GENERIC MAP (1004, "PFB2", 61.0, 61.0, 1.0, 0.0, 0.0, 0.0, c_fil_coefs, 16, 0, 14, 18, 18, 0, 20, 0, '0');
u_lofar1_14b_22 : ENTITY work.tb_verify_pfb_wg GENERIC MAP (1005, "PFB2", 61.0, 61.0, 1.0, 0.0, 0.0, 0.0, c_fil_coefs, 16, 0, 14, 18, 18, 0, 22, 0, '0'); --u_lofar1_14b_22 : ENTITY work.tb_verify_pfb_wg GENERIC MAP (1005, "PFB2", 61.0, 61.0, 1.0, 0.0, 0.0, 0.0, c_fil_coefs, 16, 0, 14, 18, 18, 0, 22, 0, '0');
--u_lofar1_14b_24 : ENTITY work.tb_verify_pfb_wg GENERIC MAP (1006, "PFB2", 61.0, 61.0, 1.0, 0.0, 0.0, 0.0, c_fil_coefs, 16, 0, 14, 18, 18, 0, 24, 0, '0'); --u_lofar1_14b_24 : ENTITY work.tb_verify_pfb_wg GENERIC MAP (1006, "PFB2", 61.0, 61.0, 1.0, 0.0, 0.0, 0.0, c_fil_coefs, 16, 0, 14, 18, 18, 0, 24, 0, '0');
---- WPFB ---- WPFB
--u_wpfb_stage18 : ENTITY work.tb_verify_pfb_wg GENERIC MAP (1007, "WPFB", 61.0, 61.0, 1.0, 0.0, 0.0, 0.0, c_fil_coefs, 16, 0, 14, 17, 18, 0, 18, 1, '0'); --u_wpfb_stage18 : ENTITY work.tb_verify_pfb_wg GENERIC MAP (1007, "WPFB", 61.0, 61.0, 1.0, 0.0, 0.0, 0.0, c_fil_coefs, 16, 0, 14, 17, 18, 0, 18, 1, '0');
...@@ -198,10 +198,12 @@ gen_ref : IF c_gen_ref GENERATE -- . . ...@@ -198,10 +198,12 @@ gen_ref : IF c_gen_ref GENERATE -- . .
--u_wpfb_stage22 : ENTITY work.tb_verify_pfb_wg GENERIC MAP (1009, "WPFB", 61.0, 61.0, 1.0, 0.0, 0.0, 0.0, c_fil_coefs, 16, 0, 14, 17, 18, 0, 22, 1, '0'); --u_wpfb_stage22 : ENTITY work.tb_verify_pfb_wg GENERIC MAP (1009, "WPFB", 61.0, 61.0, 1.0, 0.0, 0.0, 0.0, c_fil_coefs, 16, 0, 14, 17, 18, 0, 22, 1, '0');
--u_wpfb_stage23 : ENTITY work.tb_verify_pfb_wg GENERIC MAP (1010, "WPFB", 61.0, 61.0, 1.0, 0.0, 0.0, 0.0, c_fil_coefs, 16, 0, 14, 17, 18, 0, 23, 1, '0'); --u_wpfb_stage23 : ENTITY work.tb_verify_pfb_wg GENERIC MAP (1010, "WPFB", 61.0, 61.0, 1.0, 0.0, 0.0, 0.0, c_fil_coefs, 16, 0, 14, 17, 18, 0, 23, 1, '0');
--u_wpfb_stage24 : ENTITY work.tb_verify_pfb_wg GENERIC MAP (1011, "WPFB", 61.0, 61.0, 1.0, 0.0, 0.0, 0.0, c_fil_coefs, 16, 0, 14, 17, 18, 0, 24, 1, '0'); --u_wpfb_stage24 : ENTITY work.tb_verify_pfb_wg GENERIC MAP (1011, "WPFB", 61.0, 61.0, 1.0, 0.0, 0.0, 0.0, c_fil_coefs, 16, 0, 14, 17, 18, 0, 24, 1, '0');
u_wpfb_sdp_2021 : ENTITY work.tb_verify_pfb_wg GENERIC MAP (1012, "WPFB", 61.0, 61.0, 1.0, 0.0, 0.0, 0.0, c_fil_coefs, 16, 0, 14, 17, 18, 0, 22, 1, '0'); -- = u_wpfb_stage22 -- c_twiddle_w = 18
--u_2003 : ENTITY work.tb_verify_pfb_wg GENERIC MAP (1013, "WPFB", 61.0, 61.0, 1.0, 0.0, 0.0, 0.0, c_fil_coefs, 16, 1, 14, 0, 18, 0, 24, 1, '0'); u_wpfb_lofar2_subbands_lts_2021 : ENTITY work.tb_verify_pfb_wg GENERIC MAP (1012, "WPFB", 61.0, 61.0, 1.0, 0.0, 0.0, 0.0, c_fil_coefs, 16, 0, 14, 17, 18, 0, 22, 1, '0'); -- = u_wpfb_stage22
--u_2002 : ENTITY work.tb_verify_pfb_wg GENERIC MAP (1014, "WPFB", 61.0, 61.0, 1.0, 0.0, 0.0, 0.0, c_fil_coefs, 16, 1, 14, 0, 18, 1, 24, 1, '0'); -- c_twiddle_w = 20
u_wpfb_sdp_2022 : ENTITY work.tb_verify_pfb_wg GENERIC MAP (1015, "WPFB", 61.0, 61.0, 1.0, 0.0, 0.0, 0.0, c_fil_coefs, 16, 1, 14, 0, 19, 1, 24, 1, '0'); u_wpfb_lofar2_subbands_dts_18b : ENTITY work.tb_verify_pfb_wg GENERIC MAP (1013, "WPFB", 61.0, 61.0, 1.0, 0.0, 0.0, 0.0, c_fil_coefs, 16, 1, 14, 0, 18, 1, 24, 1, '0'); -- = u_2000
u_wpfb_lofar2_subbands_dts_19b : ENTITY work.tb_verify_pfb_wg GENERIC MAP (1014, "WPFB", 61.0, 61.0, 1.0, 0.0, 0.0, 0.0, c_fil_coefs, 16, 1, 14, 0, 19, 1, 24, 1, '0'); -- = u_2001
-- Results: -- Results:
-- Coeffs16384Kaiser-quant -- Coeffs16384Kaiser-quant
-- . Coeffs16384Kaiser-quant-nodc -- . Coeffs16384Kaiser-quant-nodc
...@@ -220,10 +222,9 @@ gen_ref : IF c_gen_ref GENERATE -- . . ...@@ -220,10 +222,9 @@ gen_ref : IF c_gen_ref GENERATE -- . .
--tb-1010 . wpfb_measured_proc_gain_a_dB = 19.86 [dB] 26.58 [dB], = u_wpfb_stage23 : ~1.1 dB per extra g_fft_stage_dat_w bit --tb-1010 . wpfb_measured_proc_gain_a_dB = 19.86 [dB] 26.58 [dB], = u_wpfb_stage23 : ~1.1 dB per extra g_fft_stage_dat_w bit
--tb-1011 . wpfb_measured_proc_gain_a_dB = 20.08 [dB] 28.17 [dB], = u_wpfb_stage24 : ~0.2 dB per extra g_fft_stage_dat_w bit --tb-1011 . wpfb_measured_proc_gain_a_dB = 20.08 [dB] 28.17 [dB], = u_wpfb_stage24 : ~0.2 dB per extra g_fft_stage_dat_w bit
--tb-1012 . wpfb_measured_proc_gain_a_dB = 19.20 [dB] > 18.79 [dB] from u_wpfb_stage22 in 2021 --tb-1012 . wpfb_measured_proc_gain_a_dB = 19.26 [dB] > 18.79 [dB] from u_wpfb_stage22 in 2021, due to now c_twiddle_w = 20 (?)
--tb-1013 . wpfb_measured_proc_gain_a_dB = 17.38 [dB] = u_2003 --tb-1013 . wpfb_measured_proc_gain_a_dB = 20.12 [dB] = u_2000
--tb-1014 . wpfb_measured_proc_gain_a_dB = 20.04 [dB] = u_2002 --tb-1014 . wpfb_measured_proc_gain_a_dB = 18.50 [dB] = u_2001
--tb-1015 . wpfb_measured_proc_gain_a_dB = 18.53 [dB] = u_2001 = u_wpfb_sdp_2022
--Conclusion: --Conclusion:
--* For g_fft_stage_dat_w <= 22 the processing gain increases ~3 dB per extra g_fft_stage_dat_w bit, therefore choose 22, 23 or 24, more than 24 bit has not benefit. --* For g_fft_stage_dat_w <= 22 the processing gain increases ~3 dB per extra g_fft_stage_dat_w bit, therefore choose 22, 23 or 24, more than 24 bit has not benefit.
...@@ -685,15 +686,40 @@ gen_2022_mar_21 : IF c_gen_2022_mar GENERATE ...@@ -685,15 +686,40 @@ gen_2022_mar_21 : IF c_gen_2022_mar GENERATE
--u_2013 : ENTITY work.tb_verify_pfb_wg GENERIC MAP (2013, "WPFB", 61.0, 61.0, 1.0, 0.0, 0.0, 0.0, c_fil_hanning_16b, 16, 1, 14, 0, 19, 1, 25, 1, '0'); --u_2013 : ENTITY work.tb_verify_pfb_wg GENERIC MAP (2013, "WPFB", 61.0, 61.0, 1.0, 0.0, 0.0, 0.0, c_fil_hanning_16b, 16, 1, 14, 0, 19, 1, 25, 1, '0');
--u_2014 : ENTITY work.tb_verify_pfb_wg GENERIC MAP (2014, "WPFB", 61.0, 61.0, 1.0, 0.0, 0.0, 0.0, c_fil_hanning_16b, 16, 1, 14, 0, 19, 1, 26, 1, '0'); --u_2014 : ENTITY work.tb_verify_pfb_wg GENERIC MAP (2014, "WPFB", 61.0, 61.0, 1.0, 0.0, 0.0, 0.0, c_fil_hanning_16b, 16, 1, 14, 0, 19, 1, 26, 1, '0');
--u_2015 : ENTITY work.tb_verify_pfb_wg GENERIC MAP (2015, "WPFB", 61.0, 61.0, 1.0, 0.0, 0.0, 0.0, c_fil_hanning_16b, 16, 1, 14, 0, 19, 1, 27, 1, '0'); --u_2015 : ENTITY work.tb_verify_pfb_wg GENERIC MAP (2015, "WPFB", 61.0, 61.0, 1.0, 0.0, 0.0, 0.0, c_fil_hanning_16b, 16, 1, 14, 0, 19, 1, 27, 1, '0');
----u_2016 : ENTITY work.tb_verify_pfb_wg GENERIC MAP (2016, "WPFB", 61.0, 61.0, 1.0, 0.0, 0.0, 0.0, c_fil_hanning_16b, 16, 0, 14, 0, 19, 0, 25, 1, '0'); --u_2016 : ENTITY work.tb_verify_pfb_wg GENERIC MAP (2016, "WPFB", 61.0, 61.0, 1.0, 0.0, 0.0, 0.0, c_fil_hanning_16b, 16, 0, 14, 0, 19, 0, 25, 1, '0');
----u_2017 : ENTITY work.tb_verify_pfb_wg GENERIC MAP (2017, "WPFB", 61.0, 61.0, 1.0, 0.0, 0.0, 0.0, c_fil_hanning_16b, 16, 0, 14, 0, 19, 0, 26, 1, '0'); --u_2017 : ENTITY work.tb_verify_pfb_wg GENERIC MAP (2017, "WPFB", 61.0, 61.0, 1.0, 0.0, 0.0, 0.0, c_fil_hanning_16b, 16, 0, 14, 0, 19, 0, 26, 1, '0');
--
--c_wpfb_lofar2_subbands_dts_18b and c_twiddle_w = 20:
--u_2070 : ENTITY work.tb_verify_pfb_wg GENERIC MAP (2070, "WPFB", 61.0, 61.0, 1.0, 0.0, 0.0, 0.0, c_fil_coefs, 16, 1, 14, 0, 18, 1, 22, 1, '0');
--u_2071 : ENTITY work.tb_verify_pfb_wg GENERIC MAP (2071, "WPFB", 61.0, 61.0, 1.0, 0.0, 0.0, 0.0, c_fil_coefs, 16, 1, 14, 0, 18, 1, 23, 1, '0');
--u_2072 : ENTITY work.tb_verify_pfb_wg GENERIC MAP (2072, "WPFB", 61.0, 61.0, 1.0, 0.0, 0.0, 0.0, c_fil_coefs, 16, 1, 14, 0, 18, 1, 24, 1, '0'); -- = 2000
--u_2073 : ENTITY work.tb_verify_pfb_wg GENERIC MAP (2073, "WPFB", 61.0, 61.0, 1.0, 0.0, 0.0, 0.0, c_fil_coefs, 16, 1, 14, 0, 18, 1, 25, 1, '0');
--u_2074 : ENTITY work.tb_verify_pfb_wg GENERIC MAP (2074, "WPFB", 61.0, 61.0, 1.0, 0.0, 0.0, 0.0, c_fil_coefs, 16, 1, 14, 0, 18, 1, 26, 1, '0');
--u_2075 : ENTITY work.tb_verify_pfb_wg GENERIC MAP (2075, "WPFB", 61.0, 61.0, 1.0, 0.0, 0.0, 0.0, c_fil_coefs, 16, 1, 14, 0, 18, 1, 27, 1, '0');
--
--c_wpfb_lofar2_subbands_dts_19b and c_twiddle_w = 20:
--u_2080 : ENTITY work.tb_verify_pfb_wg GENERIC MAP (2080, "WPFB", 61.0, 61.0, 1.0, 0.0, 0.0, 0.0, c_fil_coefs, 16, 1, 14, 0, 19, 1, 22, 1, '0');
--u_2081 : ENTITY work.tb_verify_pfb_wg GENERIC MAP (2081, "WPFB", 61.0, 61.0, 1.0, 0.0, 0.0, 0.0, c_fil_coefs, 16, 1, 14, 0, 19, 1, 23, 1, '0');
--u_2082 : ENTITY work.tb_verify_pfb_wg GENERIC MAP (2082, "WPFB", 61.0, 61.0, 1.0, 0.0, 0.0, 0.0, c_fil_coefs, 16, 1, 14, 0, 19, 1, 24, 1, '0'); -- = 2001
--u_2083 : ENTITY work.tb_verify_pfb_wg GENERIC MAP (2083, "WPFB", 61.0, 61.0, 1.0, 0.0, 0.0, 0.0, c_fil_coefs, 16, 1, 14, 0, 19, 1, 25, 1, '0');
--u_2084 : ENTITY work.tb_verify_pfb_wg GENERIC MAP (2084, "WPFB", 61.0, 61.0, 1.0, 0.0, 0.0, 0.0, c_fil_coefs, 16, 1, 14, 0, 19, 1, 26, 1, '0');
--u_2085 : ENTITY work.tb_verify_pfb_wg GENERIC MAP (2085, "WPFB", 61.0, 61.0, 1.0, 0.0, 0.0, 0.0, c_fil_coefs, 16, 1, 14, 0, 19, 1, 27, 1, '0');
-- --
u_2070 : ENTITY work.tb_verify_pfb_wg GENERIC MAP (2070, "WPFB", 61.0, 61.0, 1.0, 0.0, 0.0, 0.0, c_fil_coefs, 16, 1, 14, 0, 18, 1, 22, 1, '0'); --g_fft_out_dat_w = 20 and c_twiddle_w = 20:
u_2071 : ENTITY work.tb_verify_pfb_wg GENERIC MAP (2071, "WPFB", 61.0, 61.0, 1.0, 0.0, 0.0, 0.0, c_fil_coefs, 16, 1, 14, 0, 18, 1, 23, 1, '0'); --u_2090 : ENTITY work.tb_verify_pfb_wg GENERIC MAP (2090, "WPFB", 61.0, 61.0, 1.0, 0.0, 0.0, 0.0, c_fil_coefs, 16, 1, 14, 0, 20, 1, 22, 1, '0');
u_2072 : ENTITY work.tb_verify_pfb_wg GENERIC MAP (2072, "WPFB", 61.0, 61.0, 1.0, 0.0, 0.0, 0.0, c_fil_coefs, 16, 1, 14, 0, 18, 1, 24, 1, '0'); -- ~= 2001 --u_2091 : ENTITY work.tb_verify_pfb_wg GENERIC MAP (2091, "WPFB", 61.0, 61.0, 1.0, 0.0, 0.0, 0.0, c_fil_coefs, 16, 1, 14, 0, 20, 1, 23, 1, '0');
u_2073 : ENTITY work.tb_verify_pfb_wg GENERIC MAP (2073, "WPFB", 61.0, 61.0, 1.0, 0.0, 0.0, 0.0, c_fil_coefs, 16, 1, 14, 0, 18, 1, 25, 1, '0'); --u_2092 : ENTITY work.tb_verify_pfb_wg GENERIC MAP (2092, "WPFB", 61.0, 61.0, 1.0, 0.0, 0.0, 0.0, c_fil_coefs, 16, 1, 14, 0, 20, 1, 24, 1, '0'); -- ~= 2001
u_2074 : ENTITY work.tb_verify_pfb_wg GENERIC MAP (2074, "WPFB", 61.0, 61.0, 1.0, 0.0, 0.0, 0.0, c_fil_coefs, 16, 1, 14, 0, 18, 1, 26, 1, '0'); --u_2093 : ENTITY work.tb_verify_pfb_wg GENERIC MAP (2093, "WPFB", 61.0, 61.0, 1.0, 0.0, 0.0, 0.0, c_fil_coefs, 16, 1, 14, 0, 20, 1, 25, 1, '0');
u_2075 : ENTITY work.tb_verify_pfb_wg GENERIC MAP (2075, "WPFB", 61.0, 61.0, 1.0, 0.0, 0.0, 0.0, c_fil_coefs, 16, 1, 14, 0, 18, 1, 27, 1, '0'); --u_2094 : ENTITY work.tb_verify_pfb_wg GENERIC MAP (2094, "WPFB", 61.0, 61.0, 1.0, 0.0, 0.0, 0.0, c_fil_coefs, 16, 1, 14, 0, 20, 1, 26, 1, '0');
--u_2095 : ENTITY work.tb_verify_pfb_wg GENERIC MAP (2095, "WPFB", 61.0, 61.0, 1.0, 0.0, 0.0, 0.0, c_fil_coefs, 16, 1, 14, 0, 20, 1, 27, 1, '0');
--
--g_fft_out_dat_w = 19 and c_twiddle_w = 20:
--u_2100 : ENTITY work.tb_verify_pfb_wg GENERIC MAP (2100, "WPFB", 61.0, 61.0, 1.0, 0.0, 0.0, 0.0, c_fil_coefs, 16, 1, 12, 0, 19, 1, 22, 1, '0');
--u_2101 : ENTITY work.tb_verify_pfb_wg GENERIC MAP (2101, "WPFB", 61.0, 61.0, 1.0, 0.0, 0.0, 0.0, c_fil_coefs, 16, 1, 13, 0, 19, 1, 23, 1, '0');
--u_2102 : ENTITY work.tb_verify_pfb_wg GENERIC MAP (2102, "WPFB", 61.0, 61.0, 1.0, 0.0, 0.0, 0.0, c_fil_coefs, 16, 1, 14, 0, 19, 1, 24, 1, '0'); -- = 2001
--u_2103 : ENTITY work.tb_verify_pfb_wg GENERIC MAP (2103, "WPFB", 61.0, 61.0, 1.0, 0.0, 0.0, 0.0, c_fil_coefs, 16, 1, 15, 0, 19, 1, 25, 1, '0');
--u_2104 : ENTITY work.tb_verify_pfb_wg GENERIC MAP (2104, "WPFB", 61.0, 61.0, 1.0, 0.0, 0.0, 0.0, c_fil_coefs, 16, 1, 16, 0, 19, 1, 26, 1, '0');
--u_2105 : ENTITY work.tb_verify_pfb_wg GENERIC MAP (2105, "WPFB", 61.0, 61.0, 1.0, 0.0, 0.0, 0.0, c_fil_coefs, 16, 1, 17, 0, 19, 1, 27, 1, '0');
-- --
--u_2030 : ENTITY work.tb_verify_pfb_wg GENERIC MAP (2030, "WPFB", 61.0, 61.0, 1.0, 0.0, 0.0, 0.0, c_fil_hanning_18b, 18, 1, 14, 0, 19, 1, 22, 1, '0'); --u_2030 : ENTITY work.tb_verify_pfb_wg GENERIC MAP (2030, "WPFB", 61.0, 61.0, 1.0, 0.0, 0.0, 0.0, c_fil_hanning_18b, 18, 1, 14, 0, 19, 1, 22, 1, '0');
--u_2031 : ENTITY work.tb_verify_pfb_wg GENERIC MAP (2031, "WPFB", 61.0, 61.0, 1.0, 0.0, 0.0, 0.0, c_fil_hanning_18b, 18, 1, 14, 0, 19, 1, 23, 1, '0'); --u_2031 : ENTITY work.tb_verify_pfb_wg GENERIC MAP (2031, "WPFB", 61.0, 61.0, 1.0, 0.0, 0.0, 0.0, c_fil_hanning_18b, 18, 1, 14, 0, 19, 1, 23, 1, '0');
...@@ -756,6 +782,7 @@ gen_2022_mar_21 : IF c_gen_2022_mar GENERATE ...@@ -756,6 +782,7 @@ gen_2022_mar_21 : IF c_gen_2022_mar GENERATE
-- 20 24 : wpfb_measured_proc_gain_a_dB = 19.26 [dB] -- 20 24 : wpfb_measured_proc_gain_a_dB = 19.26 [dB]
-- --
-- c_fil_coefs -- c_fil_coefs
-- c_twiddle_w = 18
-- g_fil_backoff_w = g_fft_out_gain_w = 1 -- g_fil_backoff_w = g_fft_out_gain_w = 1
-- g_fft_out_dat_w = 19 -- g_fft_out_dat_w = 19
-- c_fil_coefs c_fil_nodc c_fil_coefs -- c_fil_coefs c_fil_nodc c_fil_coefs
...@@ -768,6 +795,32 @@ gen_2022_mar_21 : IF c_gen_2022_mar GENERATE ...@@ -768,6 +795,32 @@ gen_2022_mar_21 : IF c_gen_2022_mar GENERATE
-- 26 : wpfb_measured_proc_gain_a_dB = 19.14 [dB] 25.64 [dB] 19.12 [dB] -- 26 : wpfb_measured_proc_gain_a_dB = 19.14 [dB] 25.64 [dB] 19.12 [dB]
-- 27 : wpfb_measured_proc_gain_a_dB = 19.23 [dB] 25.78 [dB] 19.28 [dB] -- 27 : wpfb_measured_proc_gain_a_dB = 19.23 [dB] 25.78 [dB] 19.28 [dB]
-- --
-- c_fil_coefs
-- c_twiddle_w = 20
-- g_fil_backoff_w = g_fft_out_gain_w = 1
-- g_stage_dat_w g_fft_out_dat_w = 18 19 20
-- .
-- 22 : wpfb_measured_proc_gain_a_dB = 17.09 [dB] 16.66 [dB] 16.73 [dB]
-- 23 : wpfb_measured_proc_gain_a_dB = 19.39 [dB] 18.01 [dB] 18.06 [dB]
-- 24 : wpfb_measured_proc_gain_a_dB = 20.12 [dB] 18.50 [dB] 18.77 [dB]
-- 25 : wpfb_measured_proc_gain_a_dB = 20.23 [dB] 19.02 [dB] 19.25 [dB]
-- 26 : wpfb_measured_proc_gain_a_dB = 20.23 [dB] 19.12 [dB] 19.38 [dB]
-- 27 : wpfb_measured_proc_gain_a_dB = 20.31 [dB] 19.28 [dB] 19.43 [dB]
--
-- c_fil_coefs
-- c_twiddle_w = 20
-- g_fil_backoff_w = g_fft_out_gain_w = 1
-- g_stage_dat_w = 24
-- g_fft_out_dat_w = 19
-- g_fil_in_dat_w
-- .
-- 12 . wpfb_measured_proc_gain_a_dB = 24.74 [dB]
-- 13 . wpfb_measured_proc_gain_a_dB = 22.09 [dB]
-- 14 . wpfb_measured_proc_gain_a_dB = 18.50 [dB]
-- 15 . wpfb_measured_proc_gain_a_dB = 13.36 [dB] +6.02 = 19.38
-- 16 . wpfb_measured_proc_gain_a_dB = 7.55 [dB] +12.04 = 19.59
-- 17 . wpfb_measured_proc_gain_a_dB = 3.00 [dB] +18.06 = 21.06
--
-- c_twiddle_w =18 c_fil_ c_fil_ c_fil_ c_fil_ c_fil_ -- c_twiddle_w =18 c_fil_ c_fil_ c_fil_ c_fil_ c_fil_
-- g_stage_dat_w c_fil_coefs hanning_16b hanning_18b hanning_20b kaiser_16b kaiser_18b -- g_stage_dat_w c_fil_coefs hanning_16b hanning_18b hanning_20b kaiser_16b kaiser_18b
-- . . . . . . . -- . . . . . . .
...@@ -778,6 +831,7 @@ gen_2022_mar_21 : IF c_gen_2022_mar GENERATE ...@@ -778,6 +831,7 @@ gen_2022_mar_21 : IF c_gen_2022_mar GENERATE
-- 26 : wpfb_measured_proc_gain_a_dB = 19.14 [dB] 24.75 [dB] 25.37 [dB] 25.70 [dB] 18.91 [dB] 18.66 [dB] -- 26 : wpfb_measured_proc_gain_a_dB = 19.14 [dB] 24.75 [dB] 25.37 [dB] 25.70 [dB] 18.91 [dB] 18.66 [dB]
-- 27 : wpfb_measured_proc_gain_a_dB = 19.23 [dB] 24.86 [dB] 25.37 [dB] 25.77 [dB] 18.89 [dB] 18.81 [dB] -- 27 : wpfb_measured_proc_gain_a_dB = 19.23 [dB] 24.86 [dB] 25.37 [dB] 25.77 [dB] 18.89 [dB] 18.81 [dB]
-- --
-- c_twiddle_w = 18
-- g_stage_dat_w -- g_stage_dat_w
-- . g_fft_out_dat_w = 19 18 -- . g_fft_out_dat_w = 19 18
-- 23 : wpfb_measured_proc_gain_a_dB = 16.62 [dB] 17.17 [dB] -- 23 : wpfb_measured_proc_gain_a_dB = 16.62 [dB] 17.17 [dB]
...@@ -805,26 +859,52 @@ gen_2022_mar_21 : IF c_gen_2022_mar GENERATE ...@@ -805,26 +859,52 @@ gen_2022_mar_21 : IF c_gen_2022_mar GENERATE
-- 15 : wpfb_measured_proc_gain_a_dB = 12.70 [dB] -- 15 : wpfb_measured_proc_gain_a_dB = 12.70 [dB]
-- --
-- Conclusion: -- Conclusion:
-- . g_fil_coef_dat_w = 16b: -- . Choose c_twiddle_w = 20 b >= g_fft_out_dat_w = 18 or 19 b (see
-- . the LOFAR1 FIR coefficients are fixed 16b, which is sufficient for the -- c_gen_vary_c_twiddle_w): The M20K is 20b and multipliers have 27b.
-- required stop band attenuation of 89 dB. -- Synthesis shows that using c_twiddle_w = 20b costs no extra M20K or
-- . Use g_fil_backoff_w = 1 to fit temporary overshoot of FIR filter of -- multipliers.
-- about 10 %. -- . g_fil_coef_dat_w = 16b: The LOFAR1 FIR coefficients are fixed 16b, which
-- . Use g_fft_out_gain_w = 1 to compensate for g_fil_backoff_w = 1 -- is sufficient for the required stop band attenuation of 89 dB, because 16
-- . Use g_fft_guard_w to compensate for FFT first stage gain > 2. Default -- 6.02 dB/bit = 96 dB.
-- g_fft_guard_w = 2 would ne needed and the FFT then does not scale in -- . Use g_fil_backoff_w = 1 to fit temporary overshoot of FIR filter of about
-- its last 2 stages to ensure that the total reponse of the FFT remains -- 10 %.
-- unit. With g_fil_backoff_w = 1 and an FIR filter overshoot of about -- . Use g_fft_out_gain_w = 1 to compensate for g_fil_backoff_w = 1.
-- 10 % using g_fft_guard_w = 1 is sufficient. -- . Use g_fft_guard_w to compensate for FFT first stage gain > 2 (I think 1 +
-- . wpfb_measured_proc_gain_a_dB: -- sqrt(2) ~= 2.41). Default g_fft_guard_w = 2 would be needed and the FFT
-- . is limited by stop band attenuation -- then does not scale in its last 2 stages to ensure that the total reponse
-- . is limited by FIR quantisation noise floor level -- of the FFT remains unit. With g_fil_backoff_w = 1 and an FIR filter
-- overshoot of about 10 % (is factor 1.1) using g_fft_guard_w = 1 is
-- sufficient, because 1.1 * 2.41 < 2**2 = 4.
-- . wpfb_measured_proc_gain_a_dB is limited by:
-- . stop band attenuation
-- . FIR quantisation noise floor level
-- . DC response not exactly the same for each of the N_fft polyphases, this
-- shows as a ripple in fil_noise_a, which is the difference between the
-- FIR filter output and a matching sine wave. This variation in FIR filter
-- output during a FFT block then cause leakage into other bins and thus a
-- reduction in PFB processing gain compared to FFT processing gain.
-- However the PFB does provide the required stop band attenuation, so the
-- limited processing gain is probably due to the allowed stop band ripple
-- of the FIR filter. Therefore I think the limited processing gain is not
-- an issue or bug.
-- . g_fft_out_dat_w = 19b is needed to accomodate g_fil_in_dat_w = 14 b +
-- log2(sqrt(N_sub)) = 4.5 bit processing gain.
-- . It is strange that wpfb_measured_proc_gain_a_dB is 20.12 [dB] for 18b
-- and only 18.50 [dB] for 19b, but this may be due to the WG stimuli and
-- related quantisation noise. Instead it would have been better to use a
-- REAL SIN generator and REAL gaussian noise as signal input, to avoid
-- WG artefacts.
-- . g_stage_dat_w: -- . g_stage_dat_w:
-- . in LOFAR1 g_stage_dat_w = 20b with W_adc = 12b, so for LOFAR2.0 with W_adc = 14b the -- . 27b is maximum for DSP multipliers, but does require extra logic and
-- g_stage_dat_w >= 22b -- some BRAM
-- . 27b is maximum for DSP multipliers, but does require extra logic and some BRAM -- . in LOFAR1 g_stage_dat_w = 20b with W_adc = 12b, so for LOFAR2.0 with
-- . 25b seems a good compromise for wpfb_measured_proc_gain_a_dB -- W_adc = 14b the g_stage_dat_w >= 22b
-- . 24b or 25b seems a good compromise for wpfb_measured_proc_gain_a_dB.
-- . Given a WG amplitude of A_wg the expected subband phasor amplitude will be:
-- A_sub = A_wg * func_wpfb_subband_gain(c_wpfb, fir_filter_dc_gain)
-- The expected SST level for an integration interval of N_int subband blocks
-- is then:
-- SST = func_wpfb_sst_level(A_sub, N_blk)
END GENERATE; END GENERATE;
......
This diff is collapsed.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment