diff --git a/applications/lofar1/pft2/tb/vhdl/tb_pft2.vhd b/applications/lofar1/pft2/tb/vhdl/tb_pft2.vhd index af4ce49e2fd107b8205d0a47f27b22de1bd20697..639aec03827a49f61bf2058c75f959043e0e2cb7 100644 --- a/applications/lofar1/pft2/tb/vhdl/tb_pft2.vhd +++ b/applications/lofar1/pft2/tb/vhdl/tb_pft2.vhd @@ -66,19 +66,21 @@ ENTITY tb_pft2 IS --g_name_x : STRING := "u_noise"; -- Select one input signal for Y (used as imag input to the PFT) - --g_name_y : STRING := "cosin_N2" - --g_name_y : STRING := "cosin_1" - --g_name_y : STRING := "cosin_39" - --g_name_y : STRING := "sinus_1" - --g_name_y : STRING := "sinus_13" - --g_name_y : STRING := "sinus_13s" - --g_name_y : STRING := "impulse_0" - --g_name_y : STRING := "impulse_1" - g_name_y : STRING := "zeros" -- For PFT_MODE_BITREV and PFT_MODE_COMPLEX select zeros for Y input. - --g_name_y : STRING := "dc" - --g_name_y : STRING := "block_1" - --g_name_y : STRING := "block_117" - --g_name_y : STRING := "u_noise" + --g_name_y : STRING := "cosin_N2"; + --g_name_y : STRING := "cosin_1"; + --g_name_y : STRING := "cosin_39"; + --g_name_y : STRING := "sinus_1"; + --g_name_y : STRING := "sinus_13"; + --g_name_y : STRING := "sinus_13s"; + --g_name_y : STRING := "impulse_0"; + --g_name_y : STRING := "impulse_1"; + g_name_y : STRING := "zeros"; -- For PFT_MODE_BITREV and PFT_MODE_COMPLEX select zeros for Y input. + --g_name_y : STRING := "dc"; + --g_name_y : STRING := "block_1"; + --g_name_y : STRING := "block_117"; + --g_name_y : STRING := "u_noise"; + g_repeat : NATURAL := 2 -- minimal 2 due to PFT latency + --g_repeat : NATURAL := 10 -- > c_nof_block_per_sync to view multiple in_sync and out_sync intervals ); END tb_pft2; @@ -90,11 +92,11 @@ ARCHITECTURE tb OF tb_pft2 IS CONSTANT c_in_dat_w : NATURAL := 18; CONSTANT c_out_dat_w : NATURAL := 18; + CONSTANT c_nof_block_per_sync : NATURAL := 2; + -- The input stimuli signals are located in c_tst_data_dir and have been -- generated with TC 5.2 and are used in the PFT continuous test TC 5.19. CONSTANT c_tst_data_dir : STRING := "data/"; - - CONSTANT c_repeat : NATURAL := 2; -- minimal 2 due to PFT latency -- Maximum quantization error in PFT output CONSTANT c_diff_max : NATURAL := 20; -- Maximum quantization error in PFT output, as used in tc.tcl @@ -122,6 +124,7 @@ ARCHITECTURE tb OF tb_pft2 IS SIGNAL tb_end : STD_LOGIC := '0'; SIGNAL clk : STD_LOGIC := '1'; SIGNAL rst : STD_LOGIC := '1'; + SIGNAL rst_sync : STD_LOGIC := '1'; -- PFT input stimuli from file SIGNAL in_en : STD_LOGIC; @@ -310,9 +313,11 @@ BEGIN clk <= (NOT clk) OR tb_end AFTER c_clk_period / 2; - in_sync <= '0', '1' AFTER c_clk_period*c_rst_period*2, '0' AFTER c_clk_period*(c_rst_period*2+1); - in_en <= '0', '1' AFTER c_clk_period*c_rst_period*2; - in_val <= in_val_x; + in_en <= '0', '1' AFTER c_clk_period*c_rst_period*2; + in_val <= in_val_x; + + rst_sync <= '1', '0' AFTER c_clk_period*(c_rst_period*2 - 1); -- start in_sync pulse interval 1 clk cycle before first in_val = '1' + proc_common_gen_pulse(1, c_nof_block_per_sync*c_fft_size, '1', rst_sync, clk, in_sync); ----------------------------------------------------------------------------- @@ -322,7 +327,7 @@ BEGIN u_in_x: ENTITY tst_lib.tst_input GENERIC MAP ( g_file_name => c_file_pft_in_x, - g_file_repeat => c_repeat, + g_file_repeat => g_repeat, g_nof_data => 1, g_data_width => c_in_dat_w, g_data_type => "SIGNED" @@ -338,7 +343,7 @@ BEGIN u_in_y: ENTITY tst_lib.tst_input GENERIC MAP ( g_file_name => c_file_pft_in_y, - g_file_repeat => c_repeat, + g_file_repeat => g_repeat, g_nof_data => 1, g_data_width => c_in_dat_w, g_data_type => "SIGNED" diff --git a/applications/lofar1/pft2/tb/vhdl/tb_tb_pft2.vhd b/applications/lofar1/pft2/tb/vhdl/tb_tb_pft2.vhd index 71353fabcf71cdd8319c3f733db4e990351e2abc..398c87d757559208ec380a4c1a5a75a20b7604fa 100644 --- a/applications/lofar1/pft2/tb/vhdl/tb_tb_pft2.vhd +++ b/applications/lofar1/pft2/tb/vhdl/tb_tb_pft2.vhd @@ -75,26 +75,29 @@ BEGIN --g_name_y : STRING := "block_1" --g_name_y : STRING := "block_117" --g_name_y : STRING := "u_noise" + -- + --g_repeat : NATURAL := 2 -- minimal 2 due to PFT latency + --g_repeat : NATURAL := 10 -- > c_nof_block_per_sync to view multiple in_sync and out_sync intervals - u_cosin_N2 : ENTITY work.tb_pft2 GENERIC MAP(PFT_MODE_REAL2, "cosin_N2" , "zeros"); - u_cosin_1 : ENTITY work.tb_pft2 GENERIC MAP(PFT_MODE_REAL2, "cosin_1" , "zeros"); - u_cosin_39 : ENTITY work.tb_pft2 GENERIC MAP(PFT_MODE_REAL2, "cosin_39" , "zeros"); - u_sinus_1 : ENTITY work.tb_pft2 GENERIC MAP(PFT_MODE_REAL2, "sinus_1" , "zeros"); - u_sinus_13 : ENTITY work.tb_pft2 GENERIC MAP(PFT_MODE_REAL2, "sinus_13" , "zeros"); - u_sinus_13s : ENTITY work.tb_pft2 GENERIC MAP(PFT_MODE_REAL2, "sinus_13s", "zeros"); - u_impulse_0 : ENTITY work.tb_pft2 GENERIC MAP(PFT_MODE_REAL2, "impulse_0", "zeros"); - u_impulse_1 : ENTITY work.tb_pft2 GENERIC MAP(PFT_MODE_REAL2, "impulse_1", "zeros"); - u_zeros : ENTITY work.tb_pft2 GENERIC MAP(PFT_MODE_REAL2, "zeros" , "zeros"); - --u_dc : ENTITY work.tb_pft2 GENERIC MAP(PFT_MODE_REAL2, "dc" , "zeros"); - u_block_1 : ENTITY work.tb_pft2 GENERIC MAP(PFT_MODE_REAL2, "block_1" , "zeros"); - u_block_117 : ENTITY work.tb_pft2 GENERIC MAP(PFT_MODE_REAL2, "block_117", "zeros"); - u_u_noise : ENTITY work.tb_pft2 GENERIC MAP(PFT_MODE_REAL2, "u_noise" , "zeros"); + u_cosin_N2 : ENTITY work.tb_pft2 GENERIC MAP(PFT_MODE_REAL2, "cosin_N2" , "zeros", 2); + u_cosin_1 : ENTITY work.tb_pft2 GENERIC MAP(PFT_MODE_REAL2, "cosin_1" , "zeros", 2); + u_cosin_39 : ENTITY work.tb_pft2 GENERIC MAP(PFT_MODE_REAL2, "cosin_39" , "zeros", 2); + u_sinus_1 : ENTITY work.tb_pft2 GENERIC MAP(PFT_MODE_REAL2, "sinus_1" , "zeros", 2); + u_sinus_13 : ENTITY work.tb_pft2 GENERIC MAP(PFT_MODE_REAL2, "sinus_13" , "zeros", 2); + u_sinus_13s : ENTITY work.tb_pft2 GENERIC MAP(PFT_MODE_REAL2, "sinus_13s", "zeros", 2); + u_impulse_0 : ENTITY work.tb_pft2 GENERIC MAP(PFT_MODE_REAL2, "impulse_0", "zeros", 2); + u_impulse_1 : ENTITY work.tb_pft2 GENERIC MAP(PFT_MODE_REAL2, "impulse_1", "zeros", 2); + u_zeros : ENTITY work.tb_pft2 GENERIC MAP(PFT_MODE_REAL2, "zeros" , "zeros", 2); + u_dc : ENTITY work.tb_pft2 GENERIC MAP(PFT_MODE_REAL2, "dc" , "zeros", 2); + u_block_1 : ENTITY work.tb_pft2 GENERIC MAP(PFT_MODE_REAL2, "block_1" , "zeros", 2); + u_block_117 : ENTITY work.tb_pft2 GENERIC MAP(PFT_MODE_REAL2, "block_117", "zeros", 2); + u_u_noise : ENTITY work.tb_pft2 GENERIC MAP(PFT_MODE_REAL2, "u_noise" , "zeros", 2); - u_impulse_0_impulse_1 : ENTITY work.tb_pft2 GENERIC MAP(PFT_MODE_REAL2, "impulse_0", "impulse_1"); - --u_dc_cosin_N2 : ENTITY work.tb_pft2 GENERIC MAP(PFT_MODE_REAL2, "dc" , "cosin_N2"); - --u_dc_sinus_13 : ENTITY work.tb_pft2 GENERIC MAP(PFT_MODE_REAL2, "dc" , "sinus_13"); - u_block_117_u_noise : ENTITY work.tb_pft2 GENERIC MAP(PFT_MODE_REAL2, "block_117", "u_noise"); - u_u_noise_u_noise : ENTITY work.tb_pft2 GENERIC MAP(PFT_MODE_REAL2, "u_noise" , "u_noise"); + u_impulse_0_impulse_1 : ENTITY work.tb_pft2 GENERIC MAP(PFT_MODE_REAL2, "impulse_0", "impulse_1", 2); + u_dc_cosin_N2 : ENTITY work.tb_pft2 GENERIC MAP(PFT_MODE_REAL2, "dc", "cosin_N2", 2); + u_dc_sinus_13 : ENTITY work.tb_pft2 GENERIC MAP(PFT_MODE_REAL2, "dc", "sinus_13", 2); + u_block_117_u_noise : ENTITY work.tb_pft2 GENERIC MAP(PFT_MODE_REAL2, "block_117", "u_noise", 2); + u_u_noise_u_noise : ENTITY work.tb_pft2 GENERIC MAP(PFT_MODE_REAL2, "u_noise", "u_noise", 2); END tb;