diff --git a/applications/lofar2/designs/lofar2_unb2b_sdp_station/src/vhdl/lofar2_unb2b_sdp_station_pkg.vhd b/applications/lofar2/designs/lofar2_unb2b_sdp_station/src/vhdl/lofar2_unb2b_sdp_station_pkg.vhd index e8670d3d4481d113e06d37e40b81aa226b70951e..27f50b7c832e70e5a80cbf95031d09137cb8a720 100644 --- a/applications/lofar2/designs/lofar2_unb2b_sdp_station/src/vhdl/lofar2_unb2b_sdp_station_pkg.vhd +++ b/applications/lofar2/designs/lofar2_unb2b_sdp_station/src/vhdl/lofar2_unb2b_sdp_station_pkg.vhd @@ -36,21 +36,26 @@ package lofar2_unb2b_sdp_station_pkg is use_fsub : boolean; use_oversample : boolean; use_bf : boolean; + use_bdo_transpose : boolean; use_xsub : boolean; use_ring : boolean; P_sq : natural; end record; - constant c_ait : t_lofar2_unb2b_sdp_station_config := (false, false, false, false, false, false, 0); - constant c_fsub : t_lofar2_unb2b_sdp_station_config := (false, true, false, false, false, false, 0); - constant c_bf : t_lofar2_unb2b_sdp_station_config := (false, true, false, true, false, false, 0); - constant c_bf_ring : t_lofar2_unb2b_sdp_station_config := (false, true, false, true, false, true, 0); - constant c_xsub_one : t_lofar2_unb2b_sdp_station_config := (false, true, false, false, true, false, 1); - constant c_xsub_ring : t_lofar2_unb2b_sdp_station_config := (false, true, false, false, true, true, 9); - constant c_full_wg : t_lofar2_unb2b_sdp_station_config := (true, true, false, true, true, true, 9); - constant c_full : t_lofar2_unb2b_sdp_station_config := (false, true, false, true, true, true, 9); - constant c_full_wg_os : t_lofar2_unb2b_sdp_station_config := (true, true, true, true, true, true, 9); - constant c_full_os : t_lofar2_unb2b_sdp_station_config := (false, true, true, true, true, true, 9); + constant c_ait : t_lofar2_unb2b_sdp_station_config := (false, false, false, false, false, false, false, 0); + constant c_fsub : t_lofar2_unb2b_sdp_station_config := (false, true, false, false, false, false, false, 0); + -- use c_bf on one node also to simulate bdo transpose + -- use c_bf_ring with ring also to simulate bdo identity + constant c_bf : t_lofar2_unb2b_sdp_station_config := (false, true, false, true, false, false, false, 0); + constant c_bf_ring : t_lofar2_unb2b_sdp_station_config := (false, true, false, true, false, false, true, 0); + constant c_xsub_one : t_lofar2_unb2b_sdp_station_config := (false, true, false, false, false, true, false, 1); + constant c_xsub_ring : t_lofar2_unb2b_sdp_station_config := (false, true, false, false, false, true, true, 9); + -- use c_full_wg for SDP regression test on Arts-unb2b + constant c_full_wg : t_lofar2_unb2b_sdp_station_config := (true, true, false, true, false, true, true, 9); + constant c_full : t_lofar2_unb2b_sdp_station_config := (false, true, false, true, false, true, true, 9); + constant c_full_wg_os : t_lofar2_unb2b_sdp_station_config := (true, true, true, true, false, true, true, 9); + -- use c_full_os for SDP on LTS-unb2b of Disturb2 + constant c_full_os : t_lofar2_unb2b_sdp_station_config := (false, true, true, true, false, true, true, 9); -- Function to select the revision configuration. function func_sel_revision_rec(g_design_name : string) return t_lofar2_unb2b_sdp_station_config; diff --git a/applications/lofar2/designs/lofar2_unb2c_sdp_station/src/vhdl/lofar2_unb2c_sdp_station_pkg.vhd b/applications/lofar2/designs/lofar2_unb2c_sdp_station/src/vhdl/lofar2_unb2c_sdp_station_pkg.vhd index f7b15514a33880823548bec150ce5ca7bd4dbd13..b1115e5db29bfa03da01a6f73f8fcbfa81ec6533 100644 --- a/applications/lofar2/designs/lofar2_unb2c_sdp_station/src/vhdl/lofar2_unb2c_sdp_station_pkg.vhd +++ b/applications/lofar2/designs/lofar2_unb2c_sdp_station/src/vhdl/lofar2_unb2c_sdp_station_pkg.vhd @@ -36,21 +36,25 @@ package lofar2_unb2c_sdp_station_pkg is use_fsub : boolean; use_oversample : boolean; use_bf : boolean; + use_bdo_transpose : boolean; use_xsub : boolean; use_ring : boolean; P_sq : natural; end record; - constant c_ait : t_lofar2_unb2c_sdp_station_config := (false, false, false, false, false, false, 0); - constant c_fsub : t_lofar2_unb2c_sdp_station_config := (false, true, false, false, false, false, 0); - constant c_bf : t_lofar2_unb2c_sdp_station_config := (false, true, false, true, false, false, 0); - constant c_bf_ring : t_lofar2_unb2c_sdp_station_config := (false, true, false, true, false, true, 0); - constant c_xsub_one : t_lofar2_unb2c_sdp_station_config := (false, true, false, false, true, false, 1); - constant c_xsub_ring : t_lofar2_unb2c_sdp_station_config := (false, true, false, false, true, true, 9); - constant c_full_wg : t_lofar2_unb2c_sdp_station_config := (true, true, false, true, true, true, 9); - constant c_full : t_lofar2_unb2c_sdp_station_config := (false, true, false, true, true, true, 9); - constant c_full_wg_os : t_lofar2_unb2c_sdp_station_config := (true, true, true, true, true, true, 9); - constant c_full_os : t_lofar2_unb2c_sdp_station_config := (false, true, true, true, true, true, 9); + constant c_ait : t_lofar2_unb2c_sdp_station_config := (false, false, false, false, false, false, false, 0); + constant c_fsub : t_lofar2_unb2c_sdp_station_config := (false, true, false, false, false, false, false, 0); + -- use c_bf on one node also to simulate bdo transpose + -- use c_bf_ring with ring also to simulate bdo identity + constant c_bf : t_lofar2_unb2c_sdp_station_config := (false, true, false, true, false, false, false, 0); + constant c_bf_ring : t_lofar2_unb2c_sdp_station_config := (false, true, false, true, false, false, true, 0); + constant c_xsub_one : t_lofar2_unb2c_sdp_station_config := (false, true, false, false, false, true, false, 1); + constant c_xsub_ring : t_lofar2_unb2c_sdp_station_config := (false, true, false, false, false, true, true, 9); + constant c_full_wg : t_lofar2_unb2c_sdp_station_config := (true, true, false, true, false, true, true, 9); + -- Use c_full for LOFAR2 Station SDP operations + constant c_full : t_lofar2_unb2c_sdp_station_config := (false, true, false, true, false, true, true, 9); + constant c_full_wg_os : t_lofar2_unb2c_sdp_station_config := (true, true, true, true, false, true, true, 9); + constant c_full_os : t_lofar2_unb2c_sdp_station_config := (false, true, true, true, false, true, true, 9); -- Function to select the revision configuration. function func_sel_revision_rec(g_design_name : string) return t_lofar2_unb2c_sdp_station_config; 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 ccca16990ba2b4bd5037073fe8f4e238c4c4c171..0f5ae9e26f4a48ebfe7ae1b985ac16a0caabef8a 100644 --- a/applications/lofar2/libraries/sdp/src/vhdl/node_sdp_beamformer.vhd +++ b/applications/lofar2/libraries/sdp/src/vhdl/node_sdp_beamformer.vhd @@ -43,6 +43,7 @@ entity node_sdp_beamformer is g_sim : boolean := false; g_sim_sdp : t_sdp_sim := c_sdp_sim; g_beamset_id : natural := 0; + g_use_bdo_transpose : boolean := false; g_scope_selected_beamlet : natural := 0; -- Use no default raw width, to force instance to set it g_subband_raw_dat_w : natural; -- default: c_sdp_W_subband; @@ -257,7 +258,8 @@ begin --------------------------------------------------------------- u_sdp_beamformer_output : entity work.sdp_beamformer_output generic map( - g_beamset_id => g_beamset_id + g_beamset_id => g_beamset_id, + g_use_transpose => g_use_bdo_transpose ) port map ( mm_rst => mm_rst, diff --git a/applications/lofar2/libraries/sdp/src/vhdl/sdp_beamformer_output.vhd b/applications/lofar2/libraries/sdp/src/vhdl/sdp_beamformer_output.vhd index 0545074b81b422b77f4bf4ddbe6d3020b9344ef3..12d420d2eef731c1b2cff205bf4ebe1adebd95e9 100644 --- a/applications/lofar2/libraries/sdp/src/vhdl/sdp_beamformer_output.vhd +++ b/applications/lofar2/libraries/sdp/src/vhdl/sdp_beamformer_output.vhd @@ -22,7 +22,7 @@ -- -- Author: R. van der Walle, E. Kooistra (payload error support) -- Purpose: --- The beamformer output (BDO) packetizes the beamlet data into UDP/IP packets. +-- The beamformer data output (BDO) packetizes the beamlet data into UDP/IP packets. -- Description: -- * https://support.astron.nl/confluence/display/L2M/L5+SDPFW+Design+Document%3A+Beamformer -- * https://support.astron.nl/confluence/display/L2M/L4+SDPFW+Decision%3A+Multiple+beamlet+output+destinations @@ -146,6 +146,7 @@ begin snk_in_concat <= in_sosi; snk_in_concat.data(c_data_w - 1 downto 0) <= in_sosi.re(c_sdp_W_beamlet - 1 downto 0) & in_sosi.im(c_sdp_W_beamlet - 1 downto 0); + ------------------------------------------------------------------------------- -- synthesis translate_off -- Force BSN error in simulation to verify payload error in tb_lofar2_unb2c_sdp_station_bf.vhd, -- this will cause two times payload errors, one when BSN goes wrong and one when BSN goes ok again. @@ -174,6 +175,7 @@ begin snk_in_concat.bsn <= INCR_UVEC(in_sosi.bsn, 1); end if; -- synthesis translate_on + ------------------------------------------------------------------------------- end process; ------------------------------------------------------------------------------- diff --git a/applications/lofar2/libraries/sdp/src/vhdl/sdp_station.vhd b/applications/lofar2/libraries/sdp/src/vhdl/sdp_station.vhd index cf4189c6ce78763c23e2deedb067585d774051a7..50e73a3cc91cc8ab8a4a78a0722d8357d6f9af21 100644 --- a/applications/lofar2/libraries/sdp/src/vhdl/sdp_station.vhd +++ b/applications/lofar2/libraries/sdp/src/vhdl/sdp_station.vhd @@ -66,6 +66,7 @@ entity sdp_station is g_use_oversample : boolean := false; g_use_xsub : boolean := true; g_use_bf : boolean := true; + g_use_bdo_transpose : boolean := false; g_use_ring : boolean := true; g_P_sq : natural := 1 ); @@ -916,6 +917,7 @@ begin g_sim => g_sim, g_sim_sdp => g_sim_sdp, g_beamset_id => beamset_id, + g_use_bdo_transpose => g_use_bdo_transpose, g_scope_selected_beamlet => g_scope_selected_subband, g_subband_raw_dat_w => c_subband_raw_dat_w, g_subband_raw_fraction_w => c_subband_raw_fraction_w