Skip to content
Snippets Groups Projects
Commit 73cd845b authored by Eric Kooistra's avatar Eric Kooistra
Browse files

Use c_sdp_W_statistics_sz. Add func_sdp_get_stat_from_mm_*().

parent 3b82b0ca
Branches
No related tags found
1 merge request!175Added t_sdp_sim. Add func_sdp_get_stat_*() functions to determine the header...
...@@ -99,6 +99,7 @@ PACKAGE sdp_pkg is ...@@ -99,6 +99,7 @@ PACKAGE sdp_pkg is
CONSTANT c_sdp_W_beamlet : NATURAL := 8; CONSTANT c_sdp_W_beamlet : NATURAL := 8;
CONSTANT c_sdp_W_gn_id : NATURAL := 5; CONSTANT c_sdp_W_gn_id : NATURAL := 5;
CONSTANT c_sdp_W_statistic : NATURAL := 64; CONSTANT c_sdp_W_statistic : NATURAL := 64;
CONSTANT c_sdp_W_statistic_sz : NATURAL := 2; -- = c_sdp_W_statistic / c_word_w
CONSTANT c_sdp_W_sub_weight : NATURAL := 16; -- = w in s(w, p), s = signed CONSTANT c_sdp_W_sub_weight : NATURAL := 16; -- = w in s(w, p), s = signed
CONSTANT c_sdp_W_sub_weight_fraction : NATURAL := 13; -- = p in s(w, p) CONSTANT c_sdp_W_sub_weight_fraction : NATURAL := 13; -- = p in s(w, p)
CONSTANT c_sdp_W_sub_weight_magnitude : NATURAL := c_sdp_W_sub_weight - c_sdp_W_sub_weight_fraction - 1; -- = 2 CONSTANT c_sdp_W_sub_weight_magnitude : NATURAL := c_sdp_W_sub_weight - c_sdp_W_sub_weight_fraction - 1; -- = 2
...@@ -146,7 +147,7 @@ PACKAGE sdp_pkg is ...@@ -146,7 +147,7 @@ PACKAGE sdp_pkg is
(1, c_sdp_N_fft, 0, c_sdp_P_pfb, (1, c_sdp_N_fft, 0, c_sdp_P_pfb,
c_sdp_N_taps, 0, c_sdp_W_adc, 17, c_sdp_W_fir_coef, c_sdp_N_taps, 0, c_sdp_W_adc, 17, c_sdp_W_fir_coef,
true, false, true, 17, c_sdp_W_subband, 0, 22, 1, true, false, true, 17, c_sdp_W_subband, 0, 22, 1,
true, 54, 2, 195313, c_fft_pipeline, c_fft_pipeline, true, 54, c_sdp_W_statistic_sz, 195313, c_fft_pipeline, c_fft_pipeline,
c_fil_ppf_pipeline); c_fil_ppf_pipeline);
----------------------------------------------------------------------------- -----------------------------------------------------------------------------
...@@ -161,17 +162,18 @@ PACKAGE sdp_pkg is ...@@ -161,17 +162,18 @@ PACKAGE sdp_pkg is
-- https://git.astron.nl/desp/hdl/-/blob/master/boards/uniboard2b/libraries/unb2b_board/src/vhdl/ctrl_unb2b_board.vhd -- https://git.astron.nl/desp/hdl/-/blob/master/boards/uniboard2b/libraries/unb2b_board/src/vhdl/ctrl_unb2b_board.vhd
--CONSTANT c_sdp_offload_time : NATURAL := 13000; -- from wave window 62855nS / 5nS = 12571 cycles. --CONSTANT c_sdp_offload_time : NATURAL := 13000; -- from wave window 62855nS / 5nS = 12571 cycles.
CONSTANT c_sdp_offload_time : NATURAL := 600000; -- L2SDP-452 CONSTANT c_sdp_offload_time : NATURAL := 600000; -- see L2SDP-452
-- packet lengths, see ICD SC-SDP -- packet lengths, see ICD SC-SDP
CONSTANT c_sdp_stat_data_sz : NATURAL := 2; -- = 2 words = 64 bit data (= c_sdp_wpfb_subbands.stat_data_sz) CONSTANT c_sdp_nof_bytes_per_statistic : NATURAL := 8; -- c_sdp_W_statistic_sz * c_word_sz = 2 * 4 = 8
CONSTANT c_sdp_stat_data_byte_sz : NATURAL := c_sdp_stat_data_sz * c_word_sz; -- = 8 bytes = 64 bit data
CONSTANT c_sdp_nof_bytes_per_statistic : NATURAL := 8;
CONSTANT c_sdp_stat_app_header_len : NATURAL := 32; CONSTANT c_sdp_stat_app_header_len : NATURAL := 32;
FUNCTION func_sdp_get_stat_marker(g_statistics_type : STRING) RETURN NATURAL; FUNCTION func_sdp_get_stat_marker(g_statistics_type : STRING) RETURN NATURAL;
FUNCTION func_sdp_get_stat_nof_signal_inputs(g_statistics_type : STRING) RETURN NATURAL; FUNCTION func_sdp_get_stat_nof_signal_inputs(g_statistics_type : STRING) RETURN NATURAL;
FUNCTION func_sdp_get_stat_from_mm_data_size(g_statistics_type : STRING) RETURN NATURAL;
FUNCTION func_sdp_get_stat_from_mm_step_size(g_statistics_type : STRING) RETURN NATURAL;
FUNCTION func_sdp_get_stat_from_mm_nof_data(g_statistics_type : STRING) RETURN NATURAL;
FUNCTION func_sdp_get_stat_nof_statistics_per_packet(g_statistics_type : STRING) RETURN NATURAL; FUNCTION func_sdp_get_stat_nof_statistics_per_packet(g_statistics_type : STRING) RETURN NATURAL;
FUNCTION func_sdp_get_stat_app_total_length(g_statistics_type : STRING) RETURN NATURAL; FUNCTION func_sdp_get_stat_app_total_length(g_statistics_type : STRING) RETURN NATURAL;
FUNCTION func_sdp_get_stat_udp_total_length(g_statistics_type : STRING) RETURN NATURAL; FUNCTION func_sdp_get_stat_udp_total_length(g_statistics_type : STRING) RETURN NATURAL;
...@@ -180,7 +182,7 @@ PACKAGE sdp_pkg is ...@@ -180,7 +182,7 @@ PACKAGE sdp_pkg is
-- . For XST func_sdp_get_stat_nof_packets returns the maximum nof_packets. -- . For XST func_sdp_get_stat_nof_packets returns the maximum nof_packets.
-- The actual nof_packets for XST will depend on the MM programmable -- The actual nof_packets for XST will depend on the MM programmable
-- nof_crosslets <= c_sdp_N_crosslets_max in sdp_statistics_offload. -- nof_crosslets <= c_sdp_N_crosslets_max in sdp_statistics_offload.
FUNCTION func_sdp_get_stat_nof_packets(g_statistics_type : STRING; S_pn, P_sq : NATURAL) RETURN NATURAL; FUNCTION func_sdp_get_stat_nof_packets(g_statistics_type : STRING; S_pn, P_sq, nof_crosslets : NATURAL) RETURN NATURAL;
FUNCTION func_sdp_get_stat_nof_packets(g_statistics_type : STRING) RETURN NATURAL; FUNCTION func_sdp_get_stat_nof_packets(g_statistics_type : STRING) RETURN NATURAL;
CONSTANT c_sdp_stat_eth_dst_mac : STD_LOGIC_VECTOR(47 DOWNTO 0) := x"001B217176B9"; -- 001B217176B9 = DOP36-enp2s0 CONSTANT c_sdp_stat_eth_dst_mac : STD_LOGIC_VECTOR(47 DOWNTO 0) := x"001B217176B9"; -- 001B217176B9 = DOP36-enp2s0
...@@ -429,7 +431,7 @@ PACKAGE sdp_pkg is ...@@ -429,7 +431,7 @@ PACKAGE sdp_pkg is
-- FSUB MM address widths -- FSUB MM address widths
CONSTANT c_sdp_ram_fil_coefs_addr_w : NATURAL := ceil_log2(c_sdp_N_fft * c_sdp_N_taps); CONSTANT c_sdp_ram_fil_coefs_addr_w : NATURAL := ceil_log2(c_sdp_N_fft * c_sdp_N_taps);
CONSTANT c_sdp_ram_st_sst_addr_w : NATURAL := ceil_log2(c_sdp_P_pfb * c_sdp_N_sub * c_sdp_Q_fft * c_sdp_stat_data_sz); CONSTANT c_sdp_ram_st_sst_addr_w : NATURAL := ceil_log2(c_sdp_P_pfb * c_sdp_N_sub * c_sdp_Q_fft * c_sdp_W_statistic_sz);
CONSTANT c_sdp_reg_si_addr_w : NATURAL := 1; --enable/disable CONSTANT c_sdp_reg_si_addr_w : NATURAL := 1; --enable/disable
CONSTANT c_sdp_ram_equalizer_gains_addr_w : NATURAL := ceil_log2(c_sdp_P_pfb*c_sdp_N_sub*c_sdp_Q_fft); CONSTANT c_sdp_ram_equalizer_gains_addr_w : NATURAL := ceil_log2(c_sdp_P_pfb*c_sdp_N_sub*c_sdp_Q_fft);
CONSTANT c_sdp_reg_dp_selector_addr_w : NATURAL := 1; --Select input 0 or 1. CONSTANT c_sdp_reg_dp_selector_addr_w : NATURAL := 1; --Select input 0 or 1.
...@@ -443,7 +445,7 @@ PACKAGE sdp_pkg is ...@@ -443,7 +445,7 @@ PACKAGE sdp_pkg is
CONSTANT c_sdp_ram_bf_weights_addr_w : NATURAL := ceil_log2(c_sdp_N_beamsets) + ceil_log2(c_sdp_N_pol_bf * c_sdp_P_pfb * c_sdp_S_sub_bf * c_sdp_Q_fft); CONSTANT c_sdp_ram_bf_weights_addr_w : NATURAL := ceil_log2(c_sdp_N_beamsets) + ceil_log2(c_sdp_N_pol_bf * c_sdp_P_pfb * c_sdp_S_sub_bf * c_sdp_Q_fft);
CONSTANT c_sdp_reg_bf_scale_addr_w : NATURAL := ceil_log2(c_sdp_N_beamsets) + 1; CONSTANT c_sdp_reg_bf_scale_addr_w : NATURAL := ceil_log2(c_sdp_N_beamsets) + 1;
CONSTANT c_sdp_reg_dp_xonoff_addr_w : NATURAL := ceil_log2(c_sdp_N_beamsets) + 1; CONSTANT c_sdp_reg_dp_xonoff_addr_w : NATURAL := ceil_log2(c_sdp_N_beamsets) + 1;
CONSTANT c_sdp_ram_st_bst_addr_w : NATURAL := ceil_log2(c_sdp_N_beamsets) + ceil_log2(c_sdp_S_sub_bf * c_sdp_N_pol_bf * c_sdp_stat_data_sz); CONSTANT c_sdp_ram_st_bst_addr_w : NATURAL := ceil_log2(c_sdp_N_beamsets) + ceil_log2(c_sdp_S_sub_bf * c_sdp_N_pol_bf * c_sdp_W_statistic_sz);
CONSTANT c_sdp_reg_stat_enable_bst_addr_w : NATURAL := ceil_log2(c_sdp_N_beamsets) + c_sdp_reg_stat_enable_addr_w; CONSTANT c_sdp_reg_stat_enable_bst_addr_w : NATURAL := ceil_log2(c_sdp_N_beamsets) + c_sdp_reg_stat_enable_addr_w;
CONSTANT c_sdp_reg_stat_hdr_dat_bst_addr_w: NATURAL := ceil_log2(c_sdp_N_beamsets) + c_sdp_reg_stat_hdr_dat_addr_w; CONSTANT c_sdp_reg_stat_hdr_dat_bst_addr_w: NATURAL := ceil_log2(c_sdp_N_beamsets) + c_sdp_reg_stat_hdr_dat_addr_w;
...@@ -478,7 +480,7 @@ PACKAGE sdp_pkg is ...@@ -478,7 +480,7 @@ PACKAGE sdp_pkg is
CONSTANT c_sdp_reg_crosslets_info_addr_w : NATURAL := c_sdp_mm_reg_crosslets_info.adr_w; CONSTANT c_sdp_reg_crosslets_info_addr_w : NATURAL := c_sdp_mm_reg_crosslets_info.adr_w;
CONSTANT c_sdp_reg_nof_crosslets_addr_w : NATURAL := c_sdp_mm_reg_nof_crosslets.adr_w; CONSTANT c_sdp_reg_nof_crosslets_addr_w : NATURAL := c_sdp_mm_reg_nof_crosslets.adr_w;
CONSTANT c_sdp_reg_bsn_sync_scheduler_xsub_addr_w : NATURAL := 4; CONSTANT c_sdp_reg_bsn_sync_scheduler_xsub_addr_w : NATURAL := 4;
CONSTANT c_sdp_ram_st_xsq_addr_w : NATURAL := ceil_log2(c_sdp_P_sq) + ceil_log2(c_sdp_N_crosslets_max * c_sdp_X_sq * c_nof_complex * c_sdp_stat_data_sz ); CONSTANT c_sdp_ram_st_xsq_addr_w : NATURAL := ceil_log2(c_sdp_P_sq) + ceil_log2(c_sdp_N_crosslets_max * c_sdp_X_sq * c_nof_complex * c_sdp_W_statistic_sz );
-- RING MM address widths -- RING MM address widths
CONSTANT c_sdp_reg_bsn_monitor_v2_ring_rx_addr_w : NATURAL := ceil_log2(c_sdp_N_ring_lanes_max) + ceil_log2(c_sdp_N_pn_max) + ceil_Log2(7); CONSTANT c_sdp_reg_bsn_monitor_v2_ring_rx_addr_w : NATURAL := ceil_log2(c_sdp_N_ring_lanes_max) + ceil_log2(c_sdp_N_pn_max) + ceil_Log2(7);
...@@ -525,11 +527,33 @@ PACKAGE BODY sdp_pkg IS ...@@ -525,11 +527,33 @@ PACKAGE BODY sdp_pkg IS
1)); -- SST 1)); -- SST
END func_sdp_get_stat_nof_signal_inputs; END func_sdp_get_stat_nof_signal_inputs;
FUNCTION func_sdp_get_stat_from_mm_data_size(g_statistics_type : STRING) RETURN NATURAL IS
BEGIN
RETURN sel_a_b(g_statistics_type="BST", c_sdp_N_pol_bf * c_sdp_W_statistic_sz, -- = 4
sel_a_b(g_statistics_type="XST", c_nof_complex * c_sdp_W_statistic_sz, -- = 4
c_sdp_W_statistic_sz)); -- = 2, SST
END func_sdp_get_stat_from_mm_data_size;
FUNCTION func_sdp_get_stat_from_mm_step_size(g_statistics_type : STRING) RETURN NATURAL IS
CONSTANT c_data_size : NATURAL := func_sdp_get_stat_from_mm_data_size(g_statistics_type);
BEGIN
RETURN sel_a_b(g_statistics_type="BST", c_data_size, -- = 4
sel_a_b(g_statistics_type="XST", c_data_size, -- = 4
c_sdp_Q_fft * c_data_size)); -- = 4, SST
END func_sdp_get_stat_from_mm_step_size;
FUNCTION func_sdp_get_stat_from_mm_nof_data(g_statistics_type : STRING) RETURN NATURAL IS
BEGIN
RETURN sel_a_b(g_statistics_type="BST", c_sdp_S_sub_bf, -- = 488
sel_a_b(g_statistics_type="XST", c_sdp_X_sq, -- = 144
c_sdp_N_sub)); -- = 512, SST
END func_sdp_get_stat_from_mm_nof_data;
FUNCTION func_sdp_get_stat_nof_statistics_per_packet(g_statistics_type : STRING) RETURN NATURAL IS FUNCTION func_sdp_get_stat_nof_statistics_per_packet(g_statistics_type : STRING) RETURN NATURAL IS
BEGIN BEGIN
RETURN sel_a_b(g_statistics_type="BST", c_sdp_N_pol_bf * c_sdp_S_sub_bf, -- = 976 RETURN sel_a_b(g_statistics_type="BST", c_sdp_S_sub_bf * c_sdp_N_pol_bf, -- = 976
sel_a_b(g_statistics_type="XST", c_sdp_S_pn * c_sdp_S_pn * c_nof_complex, -- = 288 sel_a_b(g_statistics_type="XST", c_sdp_X_sq * c_nof_complex, -- = 288
c_sdp_N_sub)); -- = 512, SST c_sdp_N_sub)); -- = 512, SST
END func_sdp_get_stat_nof_statistics_per_packet; END func_sdp_get_stat_nof_statistics_per_packet;
FUNCTION func_sdp_get_stat_app_total_length(g_statistics_type : STRING) RETURN NATURAL IS FUNCTION func_sdp_get_stat_app_total_length(g_statistics_type : STRING) RETURN NATURAL IS
...@@ -539,7 +563,7 @@ PACKAGE BODY sdp_pkg IS ...@@ -539,7 +563,7 @@ PACKAGE BODY sdp_pkg IS
-- . SST : 4128 (= 4096 + 32) -- . SST : 4128 (= 4096 + 32)
-- . BST : 7840 (= 7808 + 32) -- . BST : 7840 (= 7808 + 32)
-- . XST : 2336 (= 2304 + 32) -- . XST : 2336 (= 2304 + 32)
RETURN c_nof_statistics_per_packet * c_sdp_stat_data_byte_sz + c_sdp_stat_app_header_len; RETURN c_nof_statistics_per_packet * c_sdp_nof_bytes_per_statistic + c_sdp_stat_app_header_len;
END func_sdp_get_stat_app_total_length; END func_sdp_get_stat_app_total_length;
FUNCTION func_sdp_get_stat_udp_total_length(g_statistics_type : STRING) RETURN NATURAL IS FUNCTION func_sdp_get_stat_udp_total_length(g_statistics_type : STRING) RETURN NATURAL IS
...@@ -562,16 +586,16 @@ PACKAGE BODY sdp_pkg IS ...@@ -562,16 +586,16 @@ PACKAGE BODY sdp_pkg IS
RETURN c_sdp_udp_total_length + c_network_ip_header_len; RETURN c_sdp_udp_total_length + c_network_ip_header_len;
END func_sdp_get_stat_ip_total_length; END func_sdp_get_stat_ip_total_length;
FUNCTION func_sdp_get_stat_nof_packets(g_statistics_type : STRING; S_pn, P_sq : NATURAL) RETURN NATURAL IS FUNCTION func_sdp_get_stat_nof_packets(g_statistics_type : STRING; S_pn, P_sq, nof_crosslets : NATURAL) RETURN NATURAL IS
BEGIN BEGIN
RETURN sel_a_b(g_statistics_type="BST", 1, RETURN sel_a_b(g_statistics_type="BST", 1,
sel_a_b(g_statistics_type="XST", P_sq * c_sdp_N_crosslets_max, sel_a_b(g_statistics_type="XST", P_sq * nof_crosslets,
S_pn)); -- SST S_pn)); -- SST
END func_sdp_get_stat_nof_packets; END func_sdp_get_stat_nof_packets;
FUNCTION func_sdp_get_stat_nof_packets(g_statistics_type : STRING) RETURN NATURAL IS FUNCTION func_sdp_get_stat_nof_packets(g_statistics_type : STRING) RETURN NATURAL IS
BEGIN BEGIN
RETURN func_sdp_get_stat_nof_packets(g_statistics_type, c_sdp_S_pn, c_sdp_P_sq); RETURN func_sdp_get_stat_nof_packets(g_statistics_type, c_sdp_S_pn, c_sdp_P_sq, c_sdp_N_crosslets_max);
END func_sdp_get_stat_nof_packets; END func_sdp_get_stat_nof_packets;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment