From 00028b8ae2f540ad683ae5d379dd43c59de42415 Mon Sep 17 00:00:00 2001 From: Eric Kooistra <kooistra@astron.nl> Date: Fri, 26 Nov 2021 10:20:34 +0100 Subject: [PATCH] Use func_sdp_get_stat_*() functions to determine the header field parameters. --- .../sdp/src/vhdl/sdp_statistics_offload.vhd | 48 +++++++------------ 1 file changed, 17 insertions(+), 31 deletions(-) diff --git a/applications/lofar2/libraries/sdp/src/vhdl/sdp_statistics_offload.vhd b/applications/lofar2/libraries/sdp/src/vhdl/sdp_statistics_offload.vhd index e756819c79..64aaceceee 100644 --- a/applications/lofar2/libraries/sdp/src/vhdl/sdp_statistics_offload.vhd +++ b/applications/lofar2/libraries/sdp/src/vhdl/sdp_statistics_offload.vhd @@ -90,42 +90,28 @@ END sdp_statistics_offload; ARCHITECTURE str OF sdp_statistics_offload IS - CONSTANT c_nof_streams : NATURAL := 1; - CONSTANT c_data_size : NATURAL := 2; - CONSTANT c_nof_data_per_step : NATURAL := 2; + + -- header fields + CONSTANT c_marker : NATURAL := func_sdp_get_stat_marker(g_statistics_type); + CONSTANT c_nof_signal_inputs : NATURAL := func_sdp_get_stat_nof_signal_inputs(g_statistics_type); + CONSTANT c_nof_statistics_per_packet : NATURAL := func_sdp_get_stat_nof_statistics_per_packet(g_statistics_type); + CONSTANT c_udp_total_length : NATURAL := func_sdp_get_stat_udp_total_length(g_statistics_type); + CONSTANT c_ip_total_length : NATURAL := func_sdp_get_stat_ip_total_length(g_statistics_type); + CONSTANT c_nof_packets : NATURAL := func_sdp_get_stat_nof_packets(g_statistics_type, c_sdp_S_pn, g_P_sq); + + CONSTANT c_beamlet_id : NATURAL := g_beamset_id * c_sdp_S_sub_bf; + -- payload data + CONSTANT c_data_size : NATURAL := 2; + CONSTANT c_nof_data_per_step : NATURAL := 2; CONSTANT c_step_size : NATURAL := sel_a_b(g_statistics_type="BST", c_data_size, - sel_a_b(g_statistics_type="XST", c_data_size, + sel_a_b(g_statistics_type="XST", c_data_size, c_data_size * c_nof_data_per_step)); -- SST - - CONSTANT c_nof_data : NATURAL := sel_a_b(g_statistics_type="BST", c_sdp_N_pol_bf * c_sdp_S_sub_bf, - sel_a_b(g_statistics_type="XST", c_sdp_S_pn * c_sdp_S_pn * c_nof_complex, - c_sdp_N_sub)); -- SST + CONSTANT c_nof_data : NATURAL := c_nof_statistics_per_packet; CONSTANT c_block_size : NATURAL := c_nof_data * c_step_size; - - CONSTANT c_nof_packets : NATURAL := sel_a_b(g_statistics_type="BST", 1, - sel_a_b(g_statistics_type="XST", g_P_sq * c_sdp_N_crosslets_max, - c_sdp_S_pn)); -- SST - - CONSTANT c_marker : NATURAL := sel_a_b(g_statistics_type="BST", c_sdp_marker_bst, - sel_a_b(g_statistics_type="XST", c_sdp_marker_xst, - c_sdp_marker_sst)); - - CONSTANT c_nof_signal_inputs : NATURAL := sel_a_b(g_statistics_type="BST", 0, - sel_a_b(g_statistics_type="XST", c_sdp_S_pn, - 1)); -- SST - - CONSTANT c_nof_statistics_per_packet : NATURAL := sel_a_b(g_statistics_type="BST", c_sdp_N_pol_bf * c_sdp_S_sub_bf, - sel_a_b(g_statistics_type="XST", (c_sdp_S_pn * c_sdp_S_pn * c_nof_complex), - c_sdp_N_sub)); -- SST - - CONSTANT c_beamlet_id : NATURAL := g_beamset_id * c_sdp_S_sub_bf; - - CONSTANT c_app_total_length : NATURAL := c_sdp_stat_app_header_len + c_nof_data * c_longword_sz; - CONSTANT c_udp_total_length : NATURAL := c_app_total_length + c_network_udp_header_len; - CONSTANT c_ip_total_length : NATURAL := c_app_total_length + c_network_udp_header_len + c_network_ip_header_len; + -- offload control TYPE t_reg IS RECORD block_count : NATURAL; start_address : NATURAL; @@ -193,7 +179,7 @@ BEGIN dp_header_info(field_hi(c_sdp_stat_hdr_field_arr, "sdp_nof_signal_inputs" ) DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "sdp_nof_signal_inputs" )) <= TO_UVEC(c_nof_signal_inputs, 8); dp_header_info(field_hi(c_sdp_stat_hdr_field_arr, "sdp_nof_statistics_per_packet" ) DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "sdp_nof_statistics_per_packet" )) <= TO_UVEC(c_nof_statistics_per_packet, 16); dp_header_info(field_hi(c_sdp_stat_hdr_field_arr, "sdp_block_period" ) DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "sdp_block_period" )) <= sdp_info.block_period; - dp_header_info(field_hi(c_sdp_stat_hdr_field_arr, "dp_bsn" ) DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "dp_bsn" )) <= bsn_at_sync; + dp_header_info(field_hi(c_sdp_stat_hdr_field_arr, "dp_bsn" ) DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "dp_bsn" )) <= bsn_at_sync; p_reg : PROCESS(dp_rst, dp_clk) BEGIN -- GitLab