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

Clarify WPFB settings for L2TS.

parent 86b67d58
Branches
No related tags found
1 merge request!305Resolve L2SDP-846
...@@ -100,7 +100,7 @@ PACKAGE sdp_pkg is ...@@ -100,7 +100,7 @@ PACKAGE sdp_pkg is
CONSTANT c_sdp_W_statistic_sz : NATURAL := 2; -- = c_sdp_W_statistic / c_word_w 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 : NATURAL := 16; -- = w in s(w, p), s = signed
CONSTANT c_sdp_W_sub_weight_fraction : NATURAL := 14; -- = 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_sub_weight_magnitude : NATURAL := c_sdp_W_sub_weight - c_sdp_W_sub_weight_fraction - 1; -- = 1
CONSTANT c_sdp_W_beamlet_scale : NATURAL := 16; -- = w in u(w, p), u = unsigned 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) CONSTANT c_sdp_W_beamlet_scale_fraction : NATURAL := 15; -- = p in u(w, p)
CONSTANT c_sdp_W_beamlet_scale_magnitude : NATURAL := c_sdp_W_beamlet_scale - c_sdp_W_beamlet_scale_fraction; -- = 1 CONSTANT c_sdp_W_beamlet_scale_magnitude : NATURAL := c_sdp_W_beamlet_scale - c_sdp_W_beamlet_scale_fraction; -- = 1
...@@ -160,7 +160,9 @@ PACKAGE sdp_pkg is ...@@ -160,7 +160,9 @@ PACKAGE sdp_pkg is
--CONSTANT c_sdp_wpfb_subbands : t_wpfb := --CONSTANT c_sdp_wpfb_subbands : t_wpfb :=
-- (1, c_sdp_N_fft, 0, c_sdp_P_pfb, -- (1, c_sdp_N_fft, 0, c_sdp_P_pfb,
-- c_sdp_N_taps, 0, c_sdp_W_adc, 17, c_sdp_W_fir_coef, -- c_sdp_N_taps, 0, c_sdp_W_adc, 17, c_sdp_W_fir_coef,
-- true, false, true, 17, c_sdp_W_subband, 0, 22, 1, true, 54, c_sdp_W_statistic_sz, 195313, -- true, false, true,
-- 17, c_sdp_W_subband, 0, 22, 1, true,
-- 54, c_sdp_W_statistic_sz, 195313,
-- c_fft_pipeline, c_fft_pipeline, c_fil_ppf_pipeline); -- = c_wpfb_lofar2_subbands_lts_2021 -- c_fft_pipeline, c_fft_pipeline, c_fil_ppf_pipeline); -- = c_wpfb_lofar2_subbands_lts_2021
-- DTS 2022-04-04, changes based on results from in tb_tb_verify_pfb_wg.vhd: -- DTS 2022-04-04, changes based on results from in tb_tb_verify_pfb_wg.vhd:
...@@ -172,14 +174,41 @@ PACKAGE sdp_pkg is ...@@ -172,14 +174,41 @@ PACKAGE sdp_pkg is
--CONSTANT c_sdp_wpfb_subbands : t_wpfb := --CONSTANT c_sdp_wpfb_subbands : t_wpfb :=
-- (1, c_sdp_N_fft, 0, c_sdp_P_pfb, -- (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, -- 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, -- 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 -- c_fft_pipeline, c_fft_pipeline, c_fil_ppf_pipeline); -- = c_wpfb_lofar2_subbands_dts_18b
-- L2TS -- L2TS
-- . Use fft_guard_w = 1, instead of 2 to avoid overflow in first FFT stage,
-- because fil_backoff_w = 1 already provides sufficient FFT input margin
-- . Use fft_out_gain_w = 1 + 1 = 2. One to compensate for fil_backoff_w
-- = 1 and one to preserve the W_fft_proc = 5b while using fft_out_dat_w
-- = c_sdp_W_subband = 18b instead of 19b, to fit a 18x19 multiplier for
-- SST.
-- . From hdl/libraries/base/common/python/try_round_weight.py it follows
-- that using -r = 6 extra internal bits per stage is sufficient to have
-- < 1% disturbance on the sigma of the subband noise. The disturbance
-- on the sigma is about proportional to 1/2**r, so with -r = 4 it is
-- about < 4%. Therefore use fft_stage_dat_w = fft_out_dat_w +
-- fft_out_gain_w + 6b = 26b.
-- . The raw_dat_w for FFT output of real input is fft_stage_dat_w + 1,
-- because the use_separate in the FFT feature does not divide by 2.
-- This implies that preferrably fft_stage_dat_w <= 26, to fit the 18x27
-- multiplier resources.
CONSTANT c_sdp_W_fil_backoff : NATURAL := 1;
CONSTANT c_sdp_W_fft_guard : NATURAL := 1;
CONSTANT c_sdp_W_fft_stage_dat : NATURAL := 24; -- TODO try 26b, compare synthesis results
CONSTANT c_sdp_W_fft_in_dat : NATURAL := c_sdp_W_fft_stage_dat - c_sdp_W_fft_guard;
CONSTANT c_sdp_W_fft_out_gain : NATURAL := 2;
CONSTANT c_sdp_W_stat_data : NATURAL := c_sdp_W_subband * 2 + ceil_log2(c_sdp_N_int_sub_hi); -- = 54
CONSTANT c_sdp_wpfb_subbands : t_wpfb := CONSTANT c_sdp_wpfb_subbands : t_wpfb :=
(1, c_sdp_N_fft, 0, c_sdp_P_pfb, (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, c_sdp_N_taps, c_sdp_W_fil_backoff, c_sdp_W_adc, c_sdp_W_fft_in_dat, c_sdp_W_fir_coef,
true, false, true, 23, c_sdp_W_subband, 2, 24, 1, true, 54, c_sdp_W_statistic_sz, 195313, true, false, true,
c_sdp_W_fft_in_dat, c_sdp_W_subband, c_sdp_W_fft_out_gain, c_sdp_W_fft_stage_dat, c_sdp_W_fft_guard, true,
c_sdp_W_stat_data, c_sdp_W_statistic_sz, c_sdp_N_int_sub_hi,
c_fft_pipeline, c_fft_pipeline, c_fil_ppf_pipeline); -- = c_wpfb_lofar2_subbands_l2ts_18b 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); CONSTANT c_sdp_wpfb_complex_subbands : t_wpfb := func_wpfb_map_real_input_wpfb_parameters_to_complex_input(c_sdp_wpfb_subbands);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment