diff --git a/applications/lofar2/libraries/sdp/src/vhdl/node_sdp_correlator.vhd b/applications/lofar2/libraries/sdp/src/vhdl/node_sdp_correlator.vhd index fa6125942137aa015fcd22f39833fecda5fed067..1a28839eecb89d4fec64d3176b3d0bed61bb06d9 100644 --- a/applications/lofar2/libraries/sdp/src/vhdl/node_sdp_correlator.vhd +++ b/applications/lofar2/libraries/sdp/src/vhdl/node_sdp_correlator.vhd @@ -39,8 +39,9 @@ USE work.sdp_pkg.ALL; ENTITY node_sdp_correlator IS GENERIC ( - g_sim : BOOLEAN := FALSE - --g_offload_time : NATURAL := c_sdp_offload_time + g_sim : BOOLEAN := FALSE; + g_P_sq : NATURAL := c_sdp_P_sq + --g_offload_time : NATURAL := c_sdp_offload_time ); PORT ( dp_clk : IN STD_LOGIC; @@ -89,9 +90,9 @@ ARCHITECTURE str OF node_sdp_correlator IS SIGNAL quant_sosi_arr : t_dp_sosi_arr(c_sdp_P_pfb-1 DOWNTO 0) := (OTHERS => c_dp_sosi_rst); SIGNAL xin_sosi_arr : t_dp_sosi_arr(c_sdp_P_pfb-1 DOWNTO 0) := (OTHERS => c_dp_sosi_rst); SIGNAL xsel_sosi : t_dp_sosi := c_dp_sosi_rst; - SIGNAL crosslets_sosi : t_dp_sosi := c_dp_sosi_rst; - SIGNAL crosslets_mosi_arr : t_mem_mosi_arr(0 TO 0) := (OTHERS=>c_mem_mosi_rst); -- (0 TO c_sdp_P_sq-1) - SIGNAL crosslets_miso_arr : t_mem_miso_arr(0 TO 0) := (OTHERS=>c_mem_miso_rst); -- (0 TO c_sdp_P_sq-1) + SIGNAL crosslets_sosi_arr : t_dp_sosi_arr(g_P_sq-1 DOWNTO 0) := (OTHERS => c_dp_sosi_rst); + SIGNAL crosslets_mosi_arr : t_mem_mosi_arr(g_P_sq-1 DOWNTO 0) := (OTHERS => c_mem_mosi_rst); + SIGNAL crosslets_miso_arr : t_mem_miso_arr(g_P_sq-1 DOWNTO 0) := (OTHERS => c_mem_miso_rst); BEGIN --------------------------------------------------------------- @@ -188,31 +189,33 @@ BEGIN -- Not implemented yet --------------------------------------------------------------- - -- dp_bsn_aligner_v2 Not implemented yet, using st_xsq_dp_to_mm as a replacement + -- dp_bsn_aligner_v2 Not implemented yet, using st_xsq_dp_to_mm as a tempory replacement --------------------------------------------------------------- - u_st_xsq_dp_to_mm : ENTITY st_lib.st_xsq_dp_to_mm - GENERIC MAP( - g_nof_crosslets => c_sdp_N_crosslets, - g_nof_signal_inputs => c_sdp_S_pn, - g_dsp_data_w => c_sdp_W_crosslet - ) - PORT MAP ( - rst => dp_rst, - clk => dp_clk, - - in_sosi => xsel_sosi, - out_sosi_info => crosslets_sosi, - - mm_mosi => crosslets_mosi_arr(0), - mm_miso => crosslets_miso_arr(0) - ); + gen_dp_to_mm : FOR I IN 0 TO g_P_sq-1 GENERATE + u_st_xsq_dp_to_mm : ENTITY st_lib.st_xsq_dp_to_mm + GENERIC MAP( + g_nof_crosslets => c_sdp_N_crosslets, + g_nof_signal_inputs => c_sdp_S_pn, + g_dsp_data_w => c_sdp_W_crosslet + ) + PORT MAP ( + rst => dp_rst, + clk => dp_clk, + + in_sosi => xsel_sosi, + out_sosi_info => crosslets_sosi_arr(I), + + mm_mosi => crosslets_mosi_arr(I), + mm_miso => crosslets_miso_arr(I) + ); + END GENERATE; --------------------------------------------------------------- -- Crosslets Statistics (XST) --------------------------------------------------------------- u_crosslets_stats : ENTITY st_lib.st_xst GENERIC MAP( - g_nof_streams => 1, -- c_sdp_P_sq + g_nof_streams => g_P_sq, g_nof_crosslets => c_sdp_N_crosslets, g_nof_signal_inputs => c_sdp_S_pn, g_in_data_w => c_sdp_W_crosslet, @@ -224,7 +227,7 @@ BEGIN mm_clk => mm_clk, dp_rst => dp_rst, dp_clk => dp_clk, - in_sosi => crosslets_sosi, + in_sosi => crosslets_sosi_arr(0), mm_mosi_arr => crosslets_mosi_arr, mm_miso_arr => crosslets_miso_arr, diff --git a/applications/lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd b/applications/lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd index a9f05b3bc51e2db98f91a3c46397d6fbdb2004f6..00b4b5ed89099bea08523565cf334bf162088f70 100644 --- a/applications/lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd +++ b/applications/lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd @@ -77,6 +77,7 @@ PACKAGE sdp_pkg is CONSTANT c_sdp_N_pol : NATURAL := 2; CONSTANT c_sdp_N_sub : NATURAL := 512; CONSTANT c_sdp_N_taps : NATURAL := 16; + CONSTANT c_sdp_P_sq : NATURAL := 9; CONSTANT c_sdp_Q_fft : NATURAL := 2; CONSTANT c_sdp_S_pn : NATURAL := 12; CONSTANT c_sdp_S_rcu : NATURAL := 3; diff --git a/libraries/dsp/st/src/vhdl/st_xsq_dp_to_mm.vhd b/libraries/dsp/st/src/vhdl/st_xsq_dp_to_mm.vhd index d3834eeea9172db07612f79c87fc0dfc10cb9fe0..c12b28090198fd721d9e5f2610f28b6db06b378e 100644 --- a/libraries/dsp/st/src/vhdl/st_xsq_dp_to_mm.vhd +++ b/libraries/dsp/st/src/vhdl/st_xsq_dp_to_mm.vhd @@ -66,7 +66,7 @@ BEGIN p_in_sosi : PROCESS(in_sosi) BEGIN in_sosi_rewired <= in_sosi; - in_sosi_rewired.data(g_dsp_data_w -1 DOWNTO 0) <= in_sosi.re(g_dsp_data_w-1 DOWNTO 0); + in_sosi_rewired.data( g_dsp_data_w -1 DOWNTO 0) <= in_sosi.re(g_dsp_data_w-1 DOWNTO 0); in_sosi_rewired.data(c_nof_complex * g_dsp_data_w -1 DOWNTO 0) <= in_sosi.im(g_dsp_data_w-1 DOWNTO 0); END PROCESS;