Skip to content
Snippets Groups Projects
Commit e010829a authored by Reinier van der Walle's avatar Reinier van der Walle
Browse files

Merge branch 'L2SDP-846' into 'master'

Resolve L2SDP-846

Closes L2SDP-846

See merge request desp/hdl!305
parents 0aff5b13 66e11931
No related branches found
No related tags found
1 merge request!305Resolve L2SDP-846
Pipeline #42750 passed
Showing
with 590 additions and 268 deletions
...@@ -99,8 +99,8 @@ PACKAGE sdp_pkg is ...@@ -99,8 +99,8 @@ PACKAGE sdp_pkg is
CONSTANT c_sdp_W_statistic : NATURAL := 64; 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_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 := 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_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
...@@ -159,9 +159,11 @@ PACKAGE sdp_pkg is ...@@ -159,9 +159,11 @@ PACKAGE sdp_pkg is
-- . g_fft_guard_w = 1 (was 2) -- . g_fft_guard_w = 1 (was 2)
--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,
-- c_fft_pipeline, c_fft_pipeline, c_fil_ppf_pipeline); -- = c_wpfb_lofar2_subbands_lts_2021 -- 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
-- 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:
-- . fil_backoff_w = 1 -- . fil_backoff_w = 1
...@@ -169,11 +171,52 @@ PACKAGE sdp_pkg is ...@@ -169,11 +171,52 @@ PACKAGE sdp_pkg is
-- . g_fft_out_gain_w = 1 (compensate for fil_backoff_w = 1) -- . g_fft_out_gain_w = 1 (compensate for fil_backoff_w = 1)
-- . g_fft_stage_dat_w = 24 -- . g_fft_stage_dat_w = 24
-- . g_fft_guard_w = 1 -- . 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
-- . 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 27b
-- multiplier resources.
-- . Increasing fft_stage_dat_w from 24b to 26b does increase M20K usage:
-- 24b 26b
-- FFT 6 x 27 M20K, 6 x 28 M20K, due to separate
-- BF 2 x 403 M20K, 2 x 397 M20K, due to reorder_col
-- where 6 = c_sdp_P_pfb and 2 = c_sdp_N_beamsets.
-- The total design increase is 18 m20K = 2.5 % and 4000 FF = 1.2 %. The
-- nof DSP remains 611.
CONSTANT c_sdp_W_fil_backoff : NATURAL := 1;
CONSTANT c_sdp_W_fft_guard : NATURAL := 1;
CONSTANT c_sdp_W_fft_stage_dat : NATURAL := 25; -- 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, 1, 24, 1, true, 54, c_sdp_W_statistic_sz, 195313, true, false, true,
c_fft_pipeline, c_fft_pipeline, c_fil_ppf_pipeline); -- = c_wpfb_lofar2_subbands_dts_18b 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
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);
......
Source diff could not be displayed: it is too large. Options to address this: view the blob.
applications/lofar2/model/plots/lofar2_station_sdp_firmware_model_bin_phasor.jpg

222 KiB

applications/lofar2/model/plots/lofar2_station_sdp_firmware_model_block_spectrum.jpg

154 KiB

applications/lofar2/model/plots/lofar2_station_sdp_firmware_model_incr_sigma_sys.jpg

208 KiB

applications/lofar2/model/plots/lofar2_station_sdp_firmware_model_noise_spectrum.jpg

248 KiB

applications/lofar2/model/plots/lofar2_station_sdp_firmware_model_sine_spectrum.jpg

137 KiB

applications/lofar2/model/plots/lofar2_station_sdp_firmware_model_sst_db_si_bits.jpg

216 KiB

applications/lofar2/model/plots/signal_statistics_auto_correlator_mean.jpg

190 KiB

applications/lofar2/model/plots/signal_statistics_auto_correlator_mean_power_std.jpg

303 KiB

applications/lofar2/model/plots/signal_statistics_auto_correlator_snr.jpg

411 KiB

applications/lofar2/model/plots/signal_statistics_cross_correlator_mean.jpg

210 KiB

applications/lofar2/model/plots/signal_statistics_cross_correlator_snr.jpg

282 KiB

applications/lofar2/model/plots/signal_statistics_summator_snr.jpg

230 KiB

applications/lofar2/model/plots/signal_statistics_summator_std.jpg

228 KiB

Source diff could not be displayed: it is too large. Options to address this: view the blob.
libraries/base/common/python/plots/try_round_weight_r0_s_sigmas_ratio_qq_sq.jpg

159 KiB

libraries/base/common/python/plots/try_round_weight_r0_sw_sigmas_ratio_qq_sq.jpg

124 KiB

libraries/base/common/python/plots/try_round_weight_r0_w_sigma_qq.jpg

156 KiB

libraries/base/common/python/plots/try_round_weight_r0_w_sigma_qq_normalized.jpg

181 KiB

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