Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
H
HDL
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Iterations
Wiki
Requirements
Jira
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Container registry
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
RTSD
HDL
Commits
fa74ff73
Commit
fa74ff73
authored
3 years ago
by
Eric Kooistra
Browse files
Options
Downloads
Patches
Plain Diff
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
!231
Use applications/lofar2/model/pfs_coeff_final.m to create FIR coefficients for...
Pipeline
#27973
passed
3 years ago
Stage: simulation
Stage: synthesis
Changes
2
Pipelines
1
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
libraries/dsp/verify_pfb/tb_tb_verify_pfb_wg.vhd
+117
-37
117 additions, 37 deletions
libraries/dsp/verify_pfb/tb_tb_verify_pfb_wg.vhd
libraries/dsp/verify_pfb/tb_verify_pfb_wg.txt
+1451
-0
1451 additions, 0 deletions
libraries/dsp/verify_pfb/tb_verify_pfb_wg.txt
with
1568 additions
and
37 deletions
libraries/dsp/verify_pfb/tb_tb_verify_pfb_wg.vhd
+
117
−
37
View file @
fa74ff73
...
...
@@ -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');
---- 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_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 : 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_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
--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 -- . .
--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_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
--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_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');
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'
);
-- c_twiddle_w = 18
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
-- c_twiddle_w = 20
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:
-- Coeffs16384Kaiser-quant
-- . Coeffs16384Kaiser-quant-nodc
...
...
@@ -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-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-1013 . wpfb_measured_proc_gain_a_dB = 17.38 [dB] = u_2003
--tb-1014 . wpfb_measured_proc_gain_a_dB = 20.04 [dB] = u_2002
--tb-1015 . wpfb_measured_proc_gain_a_dB = 18.53 [dB] = u_2001 = u_wpfb_sdp_2022
--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 = 20.12 [dB] = u_2000
--tb-1014 . wpfb_measured_proc_gain_a_dB = 18.50 [dB] = u_2001
--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.
...
...
@@ -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_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_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_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');
--
--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');
--
--g_fft_out_dat_w = 20 and c_twiddle_w = 20:
--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_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_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_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_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');
--
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'
);
-- ~= 2001
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'
);
--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_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
-- 20 24 : wpfb_measured_proc_gain_a_dB = 19.26 [dB]
--
-- c_fil_coefs
-- c_twiddle_w = 18
-- g_fil_backoff_w = g_fft_out_gain_w = 1
-- g_fft_out_dat_w = 19
-- c_fil_coefs c_fil_nodc c_fil_coefs
...
...
@@ -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]
-- 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_
-- 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
-- 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]
--
-- c_twiddle_w = 18
-- g_stage_dat_w
-- . g_fft_out_dat_w = 19 18
-- 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
-- 15 : wpfb_measured_proc_gain_a_dB = 12.70 [dB]
--
-- Conclusion:
-- . g_fil_coef_dat_w = 16b:
-- . the LOFAR1 FIR coefficients are fixed 16b, which is sufficient for the
-- required stop band attenuation of 89 dB.
-- . Use g_fil_backoff_w = 1 to fit temporary overshoot of FIR filter of
-- about 10 %.
-- . Use g_fft_out_gain_w = 1 to compensate for g_fil_backoff_w = 1
-- . Use g_fft_guard_w to compensate for FFT first stage gain > 2. Default
-- g_fft_guard_w = 2 would ne needed and the FFT then does not scale in
-- its last 2 stages to ensure that the total reponse of the FFT remains
-- unit. With g_fil_backoff_w = 1 and an FIR filter overshoot of about
-- 10 % using g_fft_guard_w = 1 is sufficient.
-- . wpfb_measured_proc_gain_a_dB:
-- . is limited by stop band attenuation
-- . is limited by FIR quantisation noise floor level
-- . Choose c_twiddle_w = 20 b >= g_fft_out_dat_w = 18 or 19 b (see
-- c_gen_vary_c_twiddle_w): The M20K is 20b and multipliers have 27b.
-- Synthesis shows that using c_twiddle_w = 20b costs no extra M20K or
-- multipliers.
-- . g_fil_coef_dat_w = 16b: The LOFAR1 FIR coefficients are fixed 16b, which
-- is sufficient for the required stop band attenuation of 89 dB, because 16
-- 6.02 dB/bit = 96 dB.
-- . Use g_fil_backoff_w = 1 to fit temporary overshoot of FIR filter of about
-- 10 %.
-- . Use g_fft_out_gain_w = 1 to compensate for g_fil_backoff_w = 1.
-- . Use g_fft_guard_w to compensate for FFT first stage gain > 2 (I think 1 +
-- sqrt(2) ~= 2.41). Default g_fft_guard_w = 2 would be needed and the FFT
-- then does not scale in its last 2 stages to ensure that the total reponse
-- 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:
-- . in LOFAR1 g_stage_dat_w = 20b with W_adc = 12b, so for LOFAR2.0 with W_adc = 14b the
-- g_stage_dat_w >= 22b
-- . 27b is maximum for DSP multipliers, but does require extra logic and some BRAM
-- . 25b seems a good compromise for wpfb_measured_proc_gain_a_dB
-- . 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
-- 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
;
...
...
This diff is collapsed.
Click to expand it.
libraries/dsp/verify_pfb/tb_verify_pfb_wg.txt
+
1451
−
0
View file @
fa74ff73
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment