diff --git a/applications/lofar2/libraries/sdp/src/vhdl/node_sdp_beamformer.vhd b/applications/lofar2/libraries/sdp/src/vhdl/node_sdp_beamformer.vhd index ff65bd028369c3506fe83e4e120ddacb57fe6b12..2f74ef1528571469ec7352232ea0016c810e57a8 100644 --- a/applications/lofar2/libraries/sdp/src/vhdl/node_sdp_beamformer.vhd +++ b/applications/lofar2/libraries/sdp/src/vhdl/node_sdp_beamformer.vhd @@ -110,9 +110,9 @@ ARCHITECTURE str OF node_sdp_beamformer IS SIGNAL local_bf_sosi : t_dp_sosi := c_dp_sosi_rst; SIGNAL bf_sum_sosi : t_dp_sosi := c_dp_sosi_rst; SIGNAL bf_out_sosi : t_dp_sosi := c_dp_sosi_rst; - SIGNAL scope_local_bf_sosi_arr : t_dp_sosi_integer_arr(c_sdp_N_pol-1 DOWNTO 0); - SIGNAL scope_bf_sum_sosi_arr : t_dp_sosi_integer_arr(c_sdp_N_pol-1 DOWNTO 0); - SIGNAL scope_bf_out_sosi_arr : t_dp_sosi_integer_arr(c_sdp_N_pol-1 DOWNTO 0); + SIGNAL scope_local_bf_sosi_arr : t_dp_sosi_integer_arr(c_sdp_N_pol_bf-1 DOWNTO 0); + SIGNAL scope_bf_sum_sosi_arr : t_dp_sosi_integer_arr(c_sdp_N_pol_bf-1 DOWNTO 0); + SIGNAL scope_bf_out_sosi_arr : t_dp_sosi_integer_arr(c_sdp_N_pol_bf-1 DOWNTO 0); SIGNAL beamlet_scale : STD_LOGIC_VECTOR(c_sdp_W_beamlet_scale-1 DOWNTO 0); BEGIN --------------------------------------------------------------- @@ -237,7 +237,7 @@ BEGIN --------------------------------------------------------------- u_beamlet_stats : ENTITY st_lib.st_sst GENERIC MAP( - g_nof_stat => c_sdp_S_sub_bf*c_sdp_N_pol, + g_nof_stat => c_sdp_S_sub_bf*c_sdp_N_pol_bf, g_in_data_w => c_sdp_W_beamlet_sum, g_stat_data_w => c_longword_w, g_stat_data_sz => c_longword_sz/c_word_sz @@ -320,7 +320,7 @@ BEGIN g_sim => g_sim, g_selection => g_scope_selected_beamlet, g_nof_input => 1, - g_n_deinterleave => c_sdp_N_pol, + g_n_deinterleave => c_sdp_N_pol_bf, g_dat_w => c_sdp_W_beamlet_sum ) PORT MAP ( @@ -335,7 +335,7 @@ BEGIN g_sim => g_sim, g_selection => g_scope_selected_beamlet, g_nof_input => 1, - g_n_deinterleave => c_sdp_N_pol, + g_n_deinterleave => c_sdp_N_pol_bf, g_dat_w => c_sdp_W_beamlet_sum ) @@ -351,7 +351,7 @@ BEGIN g_sim => g_sim, g_selection => g_scope_selected_beamlet, g_nof_input => 1, - g_n_deinterleave => c_sdp_N_pol, + g_n_deinterleave => c_sdp_N_pol_bf, g_dat_w => c_sdp_W_beamlet ) diff --git a/applications/lofar2/libraries/sdp/src/vhdl/sdp_beamformer_local.vhd b/applications/lofar2/libraries/sdp/src/vhdl/sdp_beamformer_local.vhd index f1cdb3465b719aba7a7802067a0d3eff5d4329e4..2f75f2f098ace38313417f95651dfd84db0232e0 100644 --- a/applications/lofar2/libraries/sdp/src/vhdl/sdp_beamformer_local.vhd +++ b/applications/lofar2/libraries/sdp/src/vhdl/sdp_beamformer_local.vhd @@ -64,8 +64,8 @@ ARCHITECTURE str OF sdp_beamformer_local IS CONSTANT c_complex_adder_sum_w : NATURAL := c_sdp_W_bf_product + ceil_log2(c_sdp_S_pn); - SIGNAL sub_sosi_arr : t_dp_sosi_arr(c_sdp_N_pol*c_sdp_P_pfb-1 DOWNTO 0) := (OTHERS => c_dp_sosi_rst); - SIGNAL bf_weights_out_sosi_arr : t_dp_sosi_arr(c_sdp_N_pol*c_sdp_P_pfb-1 DOWNTO 0) := (OTHERS => c_dp_sosi_rst); + SIGNAL sub_sosi_arr : t_dp_sosi_arr(c_sdp_N_pol_bf*c_sdp_P_pfb-1 DOWNTO 0) := (OTHERS => c_dp_sosi_rst); + SIGNAL bf_weights_out_sosi_arr : t_dp_sosi_arr(c_sdp_N_pol_bf*c_sdp_P_pfb-1 DOWNTO 0) := (OTHERS => c_dp_sosi_rst); SIGNAL bf_weights_x_sosi_arr : t_dp_sosi_arr(c_sdp_P_pfb-1 DOWNTO 0) := (OTHERS => c_dp_sosi_rst); SIGNAL bf_weights_y_sosi_arr : t_dp_sosi_arr(c_sdp_P_pfb-1 DOWNTO 0) := (OTHERS => c_dp_sosi_rst); SIGNAL deinterleaved_x_sosi_arr : t_dp_sosi_arr(c_sdp_S_pn-1 DOWNTO 0) := (OTHERS => c_dp_sosi_rst); @@ -79,9 +79,9 @@ BEGIN --------------------------------------------------------------- -- COPY INPUT STERAMS FOR X AND Y POLARIZATION PATHS --------------------------------------------------------------- - gen_pol : FOR N_pol IN 0 TO c_sdp_N_pol-1 GENERATE + gen_pol : FOR N_pol_bf IN 0 TO c_sdp_N_pol_bf-1 GENERATE gen_pfb : FOR P_pfb IN 0 TO c_sdp_P_pfb-1 GENERATE - sub_sosi_arr(N_pol*c_sdp_P_pfb + P_pfb) <= in_sosi_arr(P_pfb); + sub_sosi_arr(N_pol_bf * c_sdp_P_pfb + P_pfb) <= in_sosi_arr(P_pfb); END GENERATE; END GENERATE; @@ -169,7 +169,7 @@ BEGIN gen_interleave : FOR I IN 0 TO c_sdp_S_pn-1 GENERATE u_dp_interleave : ENTITY dp_lib.dp_interleave_n_to_one GENERIC MAP( - g_nof_inputs => c_sdp_N_pol + g_nof_inputs => c_sdp_N_pol_bf ) PORT MAP( rst => dp_rst, diff --git a/applications/lofar2/libraries/sdp/src/vhdl/sdp_bf_weights.vhd b/applications/lofar2/libraries/sdp/src/vhdl/sdp_bf_weights.vhd index 229ca24f7ea55d1f21704cc8d4138c8fe3339121..0b868af821c25a614814cb356f9f93a6fbadeadf 100644 --- a/applications/lofar2/libraries/sdp/src/vhdl/sdp_bf_weights.vhd +++ b/applications/lofar2/libraries/sdp/src/vhdl/sdp_bf_weights.vhd @@ -48,8 +48,8 @@ ENTITY sdp_bf_weights IS dp_clk : IN STD_LOGIC; dp_rst : IN STD_LOGIC; - in_sosi_arr : IN t_dp_sosi_arr(c_sdp_N_pol * c_sdp_P_pfb-1 DOWNTO 0); - out_sosi_arr : OUT t_dp_sosi_arr(c_sdp_N_pol * c_sdp_P_pfb-1 DOWNTO 0); + in_sosi_arr : IN t_dp_sosi_arr(c_sdp_N_pol_bf * c_sdp_P_pfb-1 DOWNTO 0); + out_sosi_arr : OUT t_dp_sosi_arr(c_sdp_N_pol_bf * c_sdp_P_pfb-1 DOWNTO 0); mm_rst : IN STD_LOGIC; mm_clk : IN STD_LOGIC; @@ -72,9 +72,9 @@ BEGIN -- Counter --------------------------------------------------------------- -- The BF weigths per PN are stored as - -- (cint16)subband_weights[N_pol][S_pn/Q_fft]_[Q_fft][S_sub_bf], but have + -- (cint16)bf_weights[N_pol_bf][S_pn/Q_fft]_[Q_fft][S_sub_bf], but have -- to be applied according the subband data order - -- [N_pol][S_pn/Q_fft]_[S_sub_bf][Q_fft]. Therefore this counter + -- [N_pol_bf][S_pn/Q_fft]_[S_sub_bf][Q_fft]. Therefore this counter -- has to account for this difference in order. p_cnt : PROCESS(dp_clk, dp_rst) VARIABLE v_Q_fft, v_S_sub_bf : NATURAL; @@ -111,7 +111,7 @@ BEGIN --------------------------------------------------------------- u_mms_dp_gain_serial_arr : ENTITY dp_lib.mms_dp_gain_serial_arr GENERIC MAP ( - g_nof_streams => c_sdp_N_pol * c_sdp_P_pfb, + g_nof_streams => c_sdp_N_pol_bf * c_sdp_P_pfb, g_nof_gains => c_sdp_Q_fft * c_sdp_S_sub_bf, g_complex_data => TRUE, g_complex_gain => TRUE, diff --git a/applications/lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd b/applications/lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd index 235e5a8cc89744f128a594c683b8ac824aa1ab5a..89c3c83b02ea5a3ca056f3ee57ecda58b27d8c17 100644 --- a/applications/lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd +++ b/applications/lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd @@ -73,6 +73,7 @@ PACKAGE sdp_pkg is CONSTANT c_sdp_N_fft : NATURAL := 1024; CONSTANT c_sdp_N_pn_lb : NATURAL := 16; CONSTANT c_sdp_N_pol : NATURAL := 2; + CONSTANT c_sdp_N_pol_bf : NATURAL := 2; CONSTANT c_sdp_N_sub : NATURAL := 512; CONSTANT c_sdp_N_taps : NATURAL := 16; CONSTANT c_sdp_P_sq : NATURAL := 9; @@ -213,7 +214,7 @@ PACKAGE sdp_pkg is CONSTANT c_sdp_cep_udp_src_port_15_8 : STD_LOGIC_VECTOR(7 DOWNTO 0) := x"D0"; -- 15:8, 7:0 = gn_id (= ID[7:0] = backplane[5:0] & node[1:0]) CONSTANT c_sdp_cep_nof_blocks_per_packet : NATURAL := 4; - CONSTANT c_sdp_cep_nof_beamlets_per_block : NATURAL := c_sdp_N_pol * c_sdp_S_sub_bf; + CONSTANT c_sdp_cep_nof_beamlets_per_block : NATURAL := c_sdp_N_pol_bf * c_sdp_S_sub_bf; -- FIXME in L2SDP-471 CONSTANT c_sdp_cep_nof_hdr_fields : NATURAL := 3+12+4+18+1; -- 592b; 9.25 64b words CONSTANT c_sdp_cep_hdr_field_sel : STD_LOGIC_VECTOR(c_sdp_cep_nof_hdr_fields-1 DOWNTO 0) := "101"&"111111111001"&"0111"&"1100"&"00000010"&"000110"&"0"; -- 0=data path, 1=MM controlled TODO --CONSTANT c_sdp_cep_hdr_field_sel : STD_LOGIC_VECTOR(c_sdp_cep_nof_hdr_fields-1 DOWNTO 0) := "100"&"000000010001"&"0100"&"0100"&"00000000"&"101000"&"0"; -- 0=data path, 1=MM controlled TODO @@ -304,10 +305,10 @@ PACKAGE sdp_pkg is -- BF MM address widths CONSTANT c_sdp_reg_sdp_info_addr_w : NATURAL := 4; CONSTANT c_sdp_ram_ss_ss_wide_addr_w : NATURAL := ceil_log2(c_sdp_N_beamsets) + ceil_log2(c_sdp_P_pfb * c_sdp_S_sub_bf * c_sdp_Q_fft); - CONSTANT c_sdp_ram_bf_weights_addr_w : NATURAL := ceil_log2(c_sdp_N_beamsets) + ceil_log2(c_sdp_N_pol * c_sdp_P_pfb * c_sdp_S_sub_bf * c_sdp_Q_fft); + CONSTANT c_sdp_ram_bf_weights_addr_w : NATURAL := ceil_log2(c_sdp_N_beamsets) + ceil_log2(c_sdp_N_pol_bf * c_sdp_P_pfb * c_sdp_S_sub_bf * c_sdp_Q_fft); CONSTANT c_sdp_reg_bf_scale_addr_w : NATURAL := ceil_log2(c_sdp_N_beamsets) + 1; CONSTANT c_sdp_reg_dp_xonoff_addr_w : NATURAL := ceil_log2(c_sdp_N_beamsets) + 1; - CONSTANT c_sdp_ram_st_bst_addr_w : NATURAL := ceil_log2(c_sdp_N_beamsets) + ceil_log2(c_sdp_S_sub_bf*c_sdp_N_pol*(c_longword_sz/c_word_sz)); + CONSTANT c_sdp_ram_st_bst_addr_w : NATURAL := ceil_log2(c_sdp_N_beamsets) + ceil_log2(c_sdp_S_sub_bf*c_sdp_N_pol_bf*(c_longword_sz/c_word_sz)); CONSTANT c_sdp_reg_stat_enable_bst_addr_w : NATURAL := ceil_log2(c_sdp_N_beamsets) + c_sdp_reg_stat_enable_addr_w; CONSTANT c_sdp_reg_stat_hdr_dat_bst_addr_w: NATURAL := ceil_log2(c_sdp_N_beamsets) + c_sdp_reg_stat_hdr_dat_addr_w;