From 99b25f6630887023f7229755982a94e0c0518791 Mon Sep 17 00:00:00 2001 From: Eric Kooistra <kooistra@astron.nl> Date: Tue, 19 Sep 2023 10:36:30 +0200 Subject: [PATCH] Add func_sdp_bdo_cep_hdr_field_sel_dest(). --- .../libraries/sdp/src/vhdl/sdp_bdo_pkg.vhd | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/applications/lofar2/libraries/sdp/src/vhdl/sdp_bdo_pkg.vhd b/applications/lofar2/libraries/sdp/src/vhdl/sdp_bdo_pkg.vhd index 3142ce9dd4..8a855419e5 100644 --- a/applications/lofar2/libraries/sdp/src/vhdl/sdp_bdo_pkg.vhd +++ b/applications/lofar2/libraries/sdp/src/vhdl/sdp_bdo_pkg.vhd @@ -53,15 +53,34 @@ package sdp_bdo_pkg is (others => (others => '0')), (others => (others => '0')), 0, 0, 0 ); + -- Select header destination MAC, IP, UDP field from data path, to support + -- BDO multiple destinations register + function func_sdp_bdo_cep_hdr_field_sel_dest(sl : std_logic) return std_logic_vector; + + -- Determine actual nof_destinations and actual nof_blocks_per_packet function func_sdp_bdo_parse_nof_destinations(nof_destinations : natural) return natural; function func_sdp_bdo_nof_blocks_per_packet_look_up_table return t_natural_arr; + + -- Determine nof_beamlets_per_block per destination function func_sdp_nof_beamlets_per_block_look_up_table return t_natural_arr; function func_sdp_nof_beamlets_per_block_look_up_matrix return t_natural_matrix; end package sdp_bdo_pkg; package body sdp_bdo_pkg is + function func_sdp_bdo_cep_hdr_field_sel_dest(sl : std_logic) return std_logic_vector is + variable v_sel : std_logic_vector(c_sdp_cep_nof_hdr_fields - 1 downto 0) := c_sdp_cep_hdr_field_sel; + begin + -- Select header destination MAC, IP, UDP field from data path instead of + -- from MM in dp_offload_tx_v3 + v_sel(38) := sl; -- eth_dst_mac + v_sel(24) := sl; -- ip_dst_addr + v_sel(22) := sl; -- udp_dst_port + return v_sel; + end func_sdp_bdo_cep_hdr_field_sel_dest; + function func_sdp_bdo_parse_nof_destinations(nof_destinations : natural) return natural is begin + -- Parse input nof_destinations value if nof_destinations = 0 then return 1; elsif nof_destinations > c_sdp_bdo_nof_destinations_max then -- GitLab