diff --git a/libraries/dsp/wpfb/tb/vhdl/tb_tb_wpfb_unit_wide.vhd b/libraries/dsp/wpfb/tb/vhdl/tb_tb_wpfb_unit_wide.vhd index 9d79db8b79e7a8c0c7409ae189456f6b93523556..dcbd3daf59990f9fb97c6ac62d0a77cd5051ad42 100644 --- a/libraries/dsp/wpfb/tb/vhdl/tb_tb_wpfb_unit_wide.vhd +++ b/libraries/dsp/wpfb/tb/vhdl/tb_tb_wpfb_unit_wide.vhd @@ -59,6 +59,11 @@ ARCHITECTURE tb OF tb_tb_wpfb_unit_wide IS true, false, true, 16, 16, 1, c_dsp_mult_w, 2, true, 56, 2, c_fft_pipeline, c_fft_pipeline, c_fil_ppf_pipeline); + CONSTANT c_wb1_two_real_4channels : t_wpfb := (1, 32, 2, 1, + 16, 1, 8, 16, 16, + true, false, true, 16, 16, 1, c_dsp_mult_w, 2, true, 56, 2, + c_fft_pipeline, c_fft_pipeline, c_fil_ppf_pipeline); + -- wb 4, two real CONSTANT c_wb4_two_real_1024 : t_wpfb := (4, 1024, 0, 1, 16, 1, 8, 16, 16, @@ -74,6 +79,11 @@ ARCHITECTURE tb OF tb_tb_wpfb_unit_wide IS true, false, true, 16, 16, 1, c_dsp_mult_w, 2, true, 56, 2, c_fft_pipeline, c_fft_pipeline, c_fil_ppf_pipeline); + CONSTANT c_wb4_two_real_4channels : t_wpfb := (4, 32, 2, 1, + 16, 1, 8, 16, 16, + true, false, true, 16, 16, 1, c_dsp_mult_w, 2, true, 56, 2, + c_fft_pipeline, c_fft_pipeline, c_fil_ppf_pipeline); + -- wb 1, complex reordered CONSTANT c_wb1_complex_1024 : t_wpfb := (1, 1024, 0, 1, 16, 1, 8, 16, 16, @@ -92,6 +102,11 @@ ARCHITECTURE tb OF tb_tb_wpfb_unit_wide IS true, false, false, 16, 16, 0, c_dsp_mult_w, 2, true, 56, 2, c_fft_pipeline, c_fft_pipeline, c_fil_ppf_pipeline); + CONSTANT c_wb1_complex_4channels : t_wpfb := (1, 32, 2, 1, + 16, 1, 8, 16, 16, + true, false, false, 16, 16, 0, c_dsp_mult_w, 2, true, 56, 2, + c_fft_pipeline, c_fft_pipeline, c_fil_ppf_pipeline); + -- wb 1, complex fft_shift CONSTANT c_wb1_complex_fft_shift : t_wpfb := (1, 32, 0, 1, 16, 1, 8, 16, 16, @@ -130,6 +145,11 @@ ARCHITECTURE tb OF tb_tb_wpfb_unit_wide IS true, false, false, 16, 16, 0, c_dsp_mult_w, 2, true, 56, 2, c_fft_pipeline, c_fft_pipeline, c_fil_ppf_pipeline); + CONSTANT c_wb4_complex_4channels : t_wpfb := (4, 32, 2, 1, + 16, 1, 8, 16, 16, + true, false, false, 16, 16, 0, c_dsp_mult_w, 2, true, 56, 2, + c_fft_pipeline, c_fft_pipeline, c_fil_ppf_pipeline); + -- wb 4, complex fft_shift CONSTANT c_wb4_complex_fft_shift : t_wpfb := (4, 32, 0, 1, 16, 1, 8, 16, 16, @@ -137,19 +157,24 @@ ARCHITECTURE tb OF tb_tb_wpfb_unit_wide IS c_fft_pipeline, c_fft_pipeline, c_fil_ppf_pipeline); -- wb 4, complex without reorder - CONSTANT c_wb4_complex_flipped_1024 : t_wpfb := (4, 1024, 0, 1, - 16, 1, 8, 16, 16, - false, false, false, 16, 16, 0, c_dsp_mult_w, 2, true, 56, 2, - c_fft_pipeline, c_fft_pipeline, c_fil_ppf_pipeline); - CONSTANT c_wb4_complex_flipped_64 : t_wpfb := (4, 64, 0, 1, - 16, 1, 8, 16, 16, - false, false, false, 16, 16, 0, c_dsp_mult_w, 2, true, 56, 2, - c_fft_pipeline, c_fft_pipeline, c_fil_ppf_pipeline); - CONSTANT c_wb4_complex_flipped : t_wpfb := (4, 32, 0, 1, - 16, 1, 8, 16, 16, - false, false, false, 16, 16, 0, c_dsp_mult_w, 2, true, 56, 2, - c_fft_pipeline, c_fft_pipeline, c_fil_ppf_pipeline); + CONSTANT c_wb4_complex_flipped_1024 : t_wpfb := (4, 1024, 0, 1, + 16, 1, 8, 16, 16, + false, false, false, 16, 16, 0, c_dsp_mult_w, 2, true, 56, 2, + c_fft_pipeline, c_fft_pipeline, c_fil_ppf_pipeline); + CONSTANT c_wb4_complex_flipped_64 : t_wpfb := (4, 64, 0, 1, + 16, 1, 8, 16, 16, + false, false, false, 16, 16, 0, c_dsp_mult_w, 2, true, 56, 2, + c_fft_pipeline, c_fft_pipeline, c_fil_ppf_pipeline); + CONSTANT c_wb4_complex_flipped : t_wpfb := (4, 32, 0, 1, + 16, 1, 8, 16, 16, + false, false, false, 16, 16, 0, c_dsp_mult_w, 2, true, 56, 2, + c_fft_pipeline, c_fft_pipeline, c_fil_ppf_pipeline); + CONSTANT c_wb4_complex_flipped_channels : t_wpfb := (4, 32, 2, 1, + 16, 1, 8, 16, 16, + false, false, false, 16, 16, 0, c_dsp_mult_w, 2, true, 56, 2, + c_fft_pipeline, c_fft_pipeline, c_fil_ppf_pipeline); + CONSTANT c_dm_1 : natural := 1; -- diff margin (for stage_dat_w >> c_dsp_mult_w) CONSTANT c_dm_3 : natural := 3; -- diff margin (for 32 point dm=2 appears sufficient, for 1024 point dm=3 is sufficient) CONSTANT c_dm_5 : natural := 5; -- diff margin (for 32 point dm=2 appears sufficient, for 1024 point dm=3 is sufficient) @@ -276,13 +301,15 @@ BEGIN u_act_wb1_two_real_chirp_1024 : ENTITY work.tb_wpfb_unit_wide GENERIC MAP (c_wb1_two_real_1024, c_dm_5, c_pre_ab, c_pre_c, c_sinusoid_chirp_1024, 204800, c_zero, 51200, c_un, 0, 51200, FALSE); -- * 32 point - u_act_wb1_two_real_chirp : ENTITY work.tb_wpfb_unit_wide GENERIC MAP (c_wb1_two_real, c_dm_5, c_pre_ab, c_pre_c, c_sinusoid_chirp, 6400, c_impulse_chirp, 6400, c_un, 0, 6400, FALSE); - u_act_wb1_two_real_a0 : ENTITY work.tb_wpfb_unit_wide GENERIC MAP (c_wb1_two_real, c_dm_5, c_pre_ab, c_pre_c, c_zero, 6400, c_impulse_chirp, 6400, c_un, 0, 6400, FALSE); - u_act_wb1_two_real_b0 : ENTITY work.tb_wpfb_unit_wide GENERIC MAP (c_wb1_two_real, c_dm_5, c_pre_ab, c_pre_c, c_sinusoid_chirp, 6400, c_zero, 6400, c_un, 0, 6400, FALSE); - u_rnd_wb4_two_real_noise : ENTITY work.tb_wpfb_unit_wide GENERIC MAP (c_wb4_two_real, c_dm_5, c_pre_ab, c_pre_c, c_noise, 1600, c_dc_agwn, 1600, c_un, 0, 1600, TRUE); - u_rnd_wb4_two_real_noise_streams : ENTITY work.tb_wpfb_unit_wide GENERIC MAP (c_wb4_two_real_4streams, c_dm_5, c_pre_ab, c_pre_c, c_noise, 1600, c_dc_agwn, 1600, c_un, 0, 1600, TRUE); - u_rnd_wb1_two_real_noise : ENTITY work.tb_wpfb_unit_wide GENERIC MAP (c_wb1_two_real, c_dm_5, c_pre_ab, c_pre_c, c_noise, 1600, c_dc_agwn, 1600, c_un, 0, 1600, TRUE); - u_rnd_wb1_two_real_noise_streams : ENTITY work.tb_wpfb_unit_wide GENERIC MAP (c_wb1_two_real_4streams, c_dm_5, c_pre_ab, c_pre_c, c_noise, 1600, c_dc_agwn, 1600, c_un, 0, 1600, TRUE); + u_act_wb1_two_real_chirp : ENTITY work.tb_wpfb_unit_wide GENERIC MAP (c_wb1_two_real, c_dm_5, c_pre_ab, c_pre_c, c_sinusoid_chirp, 6400, c_impulse_chirp, 6400, c_un, 0, 6400, FALSE); + u_act_wb1_two_real_a0 : ENTITY work.tb_wpfb_unit_wide GENERIC MAP (c_wb1_two_real, c_dm_5, c_pre_ab, c_pre_c, c_zero, 6400, c_impulse_chirp, 6400, c_un, 0, 6400, FALSE); + u_act_wb1_two_real_b0 : ENTITY work.tb_wpfb_unit_wide GENERIC MAP (c_wb1_two_real, c_dm_5, c_pre_ab, c_pre_c, c_sinusoid_chirp, 6400, c_zero, 6400, c_un, 0, 6400, FALSE); + u_rnd_wb4_two_real_noise : ENTITY work.tb_wpfb_unit_wide GENERIC MAP (c_wb4_two_real, c_dm_5, c_pre_ab, c_pre_c, c_noise, 1600, c_dc_agwn, 1600, c_un, 0, 1600, TRUE); + u_rnd_wb4_two_real_noise_channels : ENTITY work.tb_wpfb_unit_wide GENERIC MAP (c_wb4_two_real_4channels, c_dm_5, c_pre_ab, c_pre_c, c_noise, 1600, c_dc_agwn, 1600, c_un, 0, 1600, TRUE); + u_rnd_wb4_two_real_noise_streams : ENTITY work.tb_wpfb_unit_wide GENERIC MAP (c_wb4_two_real_4streams, c_dm_5, c_pre_ab, c_pre_c, c_noise, 1600, c_dc_agwn, 1600, c_un, 0, 1600, TRUE); + u_rnd_wb1_two_real_noise : ENTITY work.tb_wpfb_unit_wide GENERIC MAP (c_wb1_two_real, c_dm_5, c_pre_ab, c_pre_c, c_noise, 1600, c_dc_agwn, 1600, c_un, 0, 1600, TRUE); + u_rnd_wb1_two_real_noise_channels : ENTITY work.tb_wpfb_unit_wide GENERIC MAP (c_wb1_two_real_4channels, c_dm_5, c_pre_ab, c_pre_c, c_noise, 1600, c_dc_agwn, 1600, c_un, 0, 1600, TRUE); + u_rnd_wb1_two_real_noise_streams : ENTITY work.tb_wpfb_unit_wide GENERIC MAP (c_wb1_two_real_4streams, c_dm_5, c_pre_ab, c_pre_c, c_noise, 1600, c_dc_agwn, 1600, c_un, 0, 1600, TRUE); -- Complex input data -- * 1024 point @@ -296,14 +323,17 @@ BEGIN u_act_wb4_complex_flipped_noise_64 : ENTITY work.tb_wpfb_unit_wide GENERIC MAP (c_wb4_complex_flipped_64, c_dm_3, c_pre_ab, c_pre_c, c_un, 0, c_un, 0, c_noise_complex_64, 3200, 3200, FALSE); -- * 32 point - u_act_wb4_complex_chirp : ENTITY work.tb_wpfb_unit_wide GENERIC MAP (c_wb4_complex, c_dm_3, c_pre_ab, c_pre_c, c_un, 0, c_un, 0, c_phasor_chirp, 6400, 6400, FALSE); - u_act_wb4_complex_flipped : ENTITY work.tb_wpfb_unit_wide GENERIC MAP (c_wb4_complex_flipped, c_dm_3, c_pre_ab, c_pre_c, c_un, 0, c_un, 0, c_phasor_chirp, 6400, 6400, FALSE); - u_rnd_wb1_complex_phasor : ENTITY work.tb_wpfb_unit_wide GENERIC MAP (c_wb1_complex, c_dm_3, c_pre_ab, c_pre_c, c_un, 0, c_un, 0, c_phasor, 1600, 1600, TRUE); - u_rnd_wb4_complex_phasor : ENTITY work.tb_wpfb_unit_wide GENERIC MAP (c_wb4_complex, c_dm_3, c_pre_ab, c_pre_c, c_un, 0, c_un, 0, c_phasor, 1600, 1600, TRUE); - u_rnd_wb1_complex_fft_shift_phasor : ENTITY work.tb_wpfb_unit_wide GENERIC MAP (c_wb1_complex_fft_shift, c_dm_3, c_pre_ab, c_pre_c, c_un, 0, c_un, 0, c_phasor, 1600, 1600, TRUE); - u_rnd_wb4_complex_fft_shift_phasor : ENTITY work.tb_wpfb_unit_wide GENERIC MAP (c_wb4_complex_fft_shift, c_dm_3, c_pre_ab, c_pre_c, c_un, 0, c_un, 0, c_phasor, 1600, 1600, TRUE); - u_rnd_wb1_complex_noise : ENTITY work.tb_wpfb_unit_wide GENERIC MAP (c_wb1_complex, c_dm_3, c_pre_ab, c_pre_c, c_un, 0, c_un, 0, c_noise_complex, 1600, 1600, TRUE); - u_rnd_wb1_complex_noise_streams : ENTITY work.tb_wpfb_unit_wide GENERIC MAP (c_wb1_complex_4streams, c_dm_3, c_pre_ab, c_pre_c, c_un, 0, c_un, 0, c_noise_complex, 1600, 1600, TRUE); - u_rnd_wb4_complex_noise : ENTITY work.tb_wpfb_unit_wide GENERIC MAP (c_wb4_complex, c_dm_3, c_pre_ab, c_pre_c, c_un, 0, c_un, 0, c_noise_complex, 1600, 1600, TRUE); - u_rnd_wb4_complex_noise_streams : ENTITY work.tb_wpfb_unit_wide GENERIC MAP (c_wb4_complex_4streams, c_dm_3, c_pre_ab, c_pre_c, c_un, 0, c_un, 0, c_noise_complex, 1600, 1600, TRUE); + u_act_wb4_complex_chirp : ENTITY work.tb_wpfb_unit_wide GENERIC MAP (c_wb4_complex, c_dm_3, c_pre_ab, c_pre_c, c_un, 0, c_un, 0, c_phasor_chirp, 6400, 6400, FALSE); + u_act_wb4_complex_flipped : ENTITY work.tb_wpfb_unit_wide GENERIC MAP (c_wb4_complex_flipped, c_dm_3, c_pre_ab, c_pre_c, c_un, 0, c_un, 0, c_phasor_chirp, 6400, 6400, FALSE); + u_rnd_wb4_complex_flipped_channels : ENTITY work.tb_wpfb_unit_wide GENERIC MAP (c_wb4_complex_flipped_channels, c_dm_3, c_pre_ab, c_pre_c, c_un, 0, c_un, 0, c_phasor_chirp, 6400, 6400, FALSE); + u_rnd_wb1_complex_phasor : ENTITY work.tb_wpfb_unit_wide GENERIC MAP (c_wb1_complex, c_dm_3, c_pre_ab, c_pre_c, c_un, 0, c_un, 0, c_phasor, 1600, 1600, TRUE); + u_rnd_wb4_complex_phasor : ENTITY work.tb_wpfb_unit_wide GENERIC MAP (c_wb4_complex, c_dm_3, c_pre_ab, c_pre_c, c_un, 0, c_un, 0, c_phasor, 1600, 1600, TRUE); + u_rnd_wb1_complex_fft_shift_phasor : ENTITY work.tb_wpfb_unit_wide GENERIC MAP (c_wb1_complex_fft_shift, c_dm_3, c_pre_ab, c_pre_c, c_un, 0, c_un, 0, c_phasor, 1600, 1600, TRUE); + u_rnd_wb4_complex_fft_shift_phasor : ENTITY work.tb_wpfb_unit_wide GENERIC MAP (c_wb4_complex_fft_shift, c_dm_3, c_pre_ab, c_pre_c, c_un, 0, c_un, 0, c_phasor, 1600, 1600, TRUE); + u_rnd_wb1_complex_noise : ENTITY work.tb_wpfb_unit_wide GENERIC MAP (c_wb1_complex, c_dm_3, c_pre_ab, c_pre_c, c_un, 0, c_un, 0, c_noise_complex, 1600, 1600, TRUE); + u_rnd_wb1_complex_noise_channels : ENTITY work.tb_wpfb_unit_wide GENERIC MAP (c_wb1_complex_4channels, c_dm_3, c_pre_ab, c_pre_c, c_un, 0, c_un, 0, c_noise_complex, 1600, 1600, TRUE); + u_rnd_wb1_complex_noise_streams : ENTITY work.tb_wpfb_unit_wide GENERIC MAP (c_wb1_complex_4streams, c_dm_3, c_pre_ab, c_pre_c, c_un, 0, c_un, 0, c_noise_complex, 1600, 1600, TRUE); + u_rnd_wb4_complex_noise : ENTITY work.tb_wpfb_unit_wide GENERIC MAP (c_wb4_complex, c_dm_3, c_pre_ab, c_pre_c, c_un, 0, c_un, 0, c_noise_complex, 1600, 1600, TRUE); + u_rnd_wb4_complex_noise_channels : ENTITY work.tb_wpfb_unit_wide GENERIC MAP (c_wb4_complex_4channels, c_dm_3, c_pre_ab, c_pre_c, c_un, 0, c_un, 0, c_noise_complex, 1600, 1600, TRUE); + u_rnd_wb4_complex_noise_streams : ENTITY work.tb_wpfb_unit_wide GENERIC MAP (c_wb4_complex_4streams, c_dm_3, c_pre_ab, c_pre_c, c_un, 0, c_un, 0, c_noise_complex, 1600, 1600, TRUE); END tb;