diff --git a/applications/lofar2/libraries/sdp/src/vhdl/sdp_beamformer_remote.vhd b/applications/lofar2/libraries/sdp/src/vhdl/sdp_beamformer_remote.vhd index 228352b870220677113f15240d5e8d580f70b60e..1a515832488603df758a204255b8f4ff5f571c1d 100644 --- a/applications/lofar2/libraries/sdp/src/vhdl/sdp_beamformer_remote.vhd +++ b/applications/lofar2/libraries/sdp/src/vhdl/sdp_beamformer_remote.vhd @@ -70,11 +70,11 @@ architecture str of sdp_beamformer_remote is constant c_block_size : natural := c_sdp_S_sub_bf * c_sdp_N_pol_bf; constant c_fifo_size : natural := 2**ceil_log2((c_block_size * 9) / 16); -- 9/16 = 36/64, 1 block of 64 bit words rounded to the next power of 2 = 1024. - signal dispatch_sosi_arr : t_dp_sosi_arr(c_dual - 1 downto 0) := (others => c_dp_sosi_rst); -- 1 for local, 1 for remote. + signal dispatch_sosi_arr : t_dp_sosi_arr(c_sdp_P_sum - 1 downto 0) := (others => c_dp_sosi_rst); -- 1 for local, 1 for remote. signal dp_fifo_sosi : t_dp_sosi := c_dp_sosi_rst; signal dp_fifo_siso : t_dp_siso := c_dp_siso_rdy; - signal beamlets_data_sosi_arr : t_dp_sosi_arr(c_dual - 1 downto 0) := (others => c_dp_sosi_rst); - signal beamlets_sosi_arr : t_dp_sosi_arr(c_dual - 1 downto 0) := (others => c_dp_sosi_rst); + signal beamlets_data_sosi_arr : t_dp_sosi_arr(c_sdp_P_sum - 1 downto 0) := (others => c_dp_sosi_rst); + signal beamlets_sosi_arr : t_dp_sosi_arr(c_sdp_P_sum - 1 downto 0) := (others => c_dp_sosi_rst); signal i_bf_sum_sosi : t_dp_sosi := c_dp_sosi_rst; signal bf_sum_data_sosi : t_dp_sosi := c_dp_sosi_rst; begin @@ -132,7 +132,7 @@ begin u_mmp_dp_bsn_align_v2 : entity dp_lib.mmp_dp_bsn_align_v2 generic map( -- for dp_bsn_align_v2 - g_nof_streams => c_dual, + g_nof_streams => c_sdp_P_sum, g_bsn_latency_max => 2, -- max 2 blocks latency g_nof_aligners_max => g_nof_aligners_max, g_block_size => c_block_size, @@ -141,7 +141,7 @@ begin g_rd_latency => 1, -- for mms_dp_bsn_monitor_v2 g_nof_clk_per_sync => c_sdp_N_clk_sync_timeout, -- Using c_sdp_N_clk_sync_timeout as g_nof_clk_per_sync is used for BSN monitor timeout. - g_nof_input_bsn_monitors => c_dual, + g_nof_input_bsn_monitors => c_sdp_P_sum, g_use_bsn_output_monitor => true ) port map ( @@ -185,7 +185,7 @@ begin --------------------------------------------------------------- u_dp_complex_add : entity dp_lib.dp_complex_add generic map( - g_nof_inputs => c_dual, + g_nof_inputs => c_sdp_P_sum, g_data_w => c_sdp_W_beamlet_sum ) port map( diff --git a/applications/lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd b/applications/lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd index 1e11aca4f8f8450f7c75170cf30f1ea9ba2e27e2..8f6701daf221360c81c7ba470e92bbf4ec5e7042 100644 --- a/applications/lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd +++ b/applications/lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd @@ -74,12 +74,13 @@ package sdp_pkg is constant c_sdp_N_pn_max : natural := 16; -- max 16 PN per ring = per antenna band constant c_sdp_N_pol : natural := 2; constant c_sdp_N_pol_bf : natural := 2; - constant c_sdp_N_rings_sdp : natural := 1; + constant c_sdp_N_rings_sdp : natural := 1; -- number of QSFP rings in SDP, each has N_lane = 8 lanes constant c_sdp_N_ring_lanes_max : natural := 8; -- = N_lane in doc constant c_sdp_N_sub : natural := 512; constant c_sdp_N_sync_rcu : natural := 1; constant c_sdp_N_taps : natural := 16; - constant c_sdp_P_sq : natural := 9; -- = N_pn / 2 + 1 + constant c_sdp_P_sq : natural := 9; -- = N_pn / 2 + 1 square correlator cells for XST + constant c_sdp_P_sum : natural := 2; -- sums of two in ring beamformer adder tree constant c_sdp_Q_fft : natural := 2; constant c_sdp_S_pn : natural := 12; constant c_sdp_S_rcu : natural := 3; @@ -589,8 +590,8 @@ package sdp_pkg is 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; constant c_sdp_reg_bsn_monitor_v2_bst_offload_addr_w : natural := ceil_log2(c_sdp_N_beamsets) + c_sdp_reg_bsn_monitor_v2_addr_w; constant c_sdp_reg_bsn_monitor_v2_beamlet_output_addr_w : natural := ceil_log2(c_sdp_N_beamsets) + c_sdp_reg_bsn_monitor_v2_addr_w; - constant c_sdp_reg_bsn_align_v2_bf_addr_w : natural := ceil_log2(c_sdp_N_beamsets) + ceil_log2(c_dual) + c_sdp_reg_bsn_align_v2_addr_w; - constant c_sdp_reg_bsn_monitor_v2_rx_align_bf_addr_w : natural := ceil_log2(c_sdp_N_beamsets) + ceil_log2(c_dual) + c_sdp_reg_bsn_monitor_v2_addr_w; + constant c_sdp_reg_bsn_align_v2_bf_addr_w : natural := ceil_log2(c_sdp_N_beamsets) + ceil_log2(c_sdp_P_sum) + c_sdp_reg_bsn_align_v2_addr_w; + constant c_sdp_reg_bsn_monitor_v2_rx_align_bf_addr_w : natural := ceil_log2(c_sdp_N_beamsets) + ceil_log2(c_sdp_P_sum) + c_sdp_reg_bsn_monitor_v2_addr_w; constant c_sdp_reg_bsn_monitor_v2_aligned_bf_addr_w : natural := ceil_log2(c_sdp_N_beamsets) + c_sdp_reg_bsn_monitor_v2_addr_w; constant c_sdp_reg_ring_lane_info_bf_addr_w : natural := ceil_log2(c_sdp_N_beamsets) + 1; constant c_sdp_reg_bsn_monitor_v2_ring_rx_bf_addr_w : natural := ceil_log2(c_sdp_N_beamsets) + c_sdp_reg_bsn_monitor_v2_addr_w; diff --git a/applications/lofar2/libraries/sdp/src/vhdl/sdp_station.vhd b/applications/lofar2/libraries/sdp/src/vhdl/sdp_station.vhd index 727c59d7774ed8e9207a182450e5452e177994d0..dee188c0b1a2d0c1e24e21be34797d944da75c36 100644 --- a/applications/lofar2/libraries/sdp/src/vhdl/sdp_station.vhd +++ b/applications/lofar2/libraries/sdp/src/vhdl/sdp_station.vhd @@ -419,8 +419,8 @@ architecture str of sdp_station is constant c_addr_w_reg_bdo_destinations : natural := c_sdp_reg_bdo_destinations_info_w_one; constant c_addr_w_reg_dp_xonoff : natural := 1; constant c_addr_w_ram_st_bst : natural := ceil_log2(c_sdp_S_sub_bf * c_sdp_N_pol * (c_longword_sz / c_word_sz)); - constant c_addr_w_reg_bsn_align_v2_bf : natural := ceil_log2(c_dual) + c_sdp_reg_bsn_align_v2_addr_w; - constant c_addr_w_reg_bsn_monitor_v2_rx_align_bf : natural := ceil_log2(c_dual) + c_sdp_reg_bsn_monitor_v2_addr_w; + constant c_addr_w_reg_bsn_align_v2_bf : natural := ceil_log2(c_sdp_P_sum) + c_sdp_reg_bsn_align_v2_addr_w; + constant c_addr_w_reg_bsn_monitor_v2_rx_align_bf : natural := ceil_log2(c_sdp_P_sum) + c_sdp_reg_bsn_monitor_v2_addr_w; constant c_addr_w_reg_ring_lane_info_bf : natural := 1; -- Read only sdp_info values