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 134b80aa33fee8a984a5e9a0d60fe94f8023ba5e..39f94923b302fcb5ac28f72cf5cc5185b84901b8 100644 --- a/applications/lofar2/libraries/sdp/src/vhdl/sdp_beamformer_local.vhd +++ b/applications/lofar2/libraries/sdp/src/vhdl/sdp_beamformer_local.vhd @@ -77,11 +77,15 @@ ARCHITECTURE str OF sdp_beamformer_local IS BEGIN --------------------------------------------------------------- - -- COPY INPUT STERAMS FOR X AND Y POLARIZATION PATHS - --------------------------------------------------------------- - 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_bf * c_sdp_P_pfb + P_pfb) <= in_sosi_arr(P_pfb); + -- COPY INPUT STREAMS FOR X AND Y POLARIZATION PATHS + -- 0: 5 = S_pn signal inputs (time multiplexed by Q_fft) for BF X pol + -- 6:11 = S_pn signal inputs (time multiplexed by Q_fft) for BF Y pol + --------------------------------------------------------------- + -- Use short index variables PB (= Polarization Beamlet), I (= Instance) + -- names, to ease recognizing them as loop indices. + gen_pol : FOR PB IN 0 TO c_sdp_N_pol_bf-1 GENERATE + gen_pfb : FOR I IN 0 TO c_sdp_P_pfb-1 GENERATE + sub_sosi_arr(PB * c_sdp_P_pfb + I) <= in_sosi_arr(I); END GENERATE; END GENERATE; @@ -109,23 +113,8 @@ BEGIN -- X pol is lower half of bf_weights_out bf_weights_x_sosi_arr <= bf_weights_out_sosi_arr(c_sdp_P_pfb-1 DOWNTO 0); - --------------------------------------------------------------- - -- DP PIPELINE Y PATH - --------------------------------------------------------------- - -- The weighted subbands from the Y polarization path are pipelined - -- by one cycle so that they can be time multiplexed with the - -- weighted subbands from the X polarization. - u_pipeline_y_pol : ENTITY dp_lib.dp_pipeline_arr - GENERIC MAP ( - g_nof_streams => c_sdp_P_pfb, - g_pipeline => 1 - ) - PORT MAP ( - rst => dp_rst, - clk => dp_clk, - snk_in_arr => bf_weights_out_sosi_arr(2*c_sdp_P_pfb-1 DOWNTO c_sdp_P_pfb), - src_out_arr => bf_weights_y_sosi_arr - ); + -- Y pol is upper half of bf_weights_out + bf_weights_y_sosi_arr <= bf_weights_out_sosi_arr(2*c_sdp_P_pfb-1 DOWNTO c_sdp_P_pfb); --------------------------------------------------------------- -- DEINTERLEAVE X PATH @@ -157,7 +146,7 @@ BEGIN rst => dp_rst, clk => dp_clk, - snk_in => bf_weights_y_sosi_arr(I), + snk_in => bf_weights_y_sosi_arr(I), src_out_arr(0) => deinterleaved_y_sosi_arr(c_sdp_Q_fft*I), src_out_arr(1) => deinterleaved_y_sosi_arr(c_sdp_Q_fft*I+1) );