Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
H
HDL
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Iterations
Wiki
Requirements
Jira
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Container registry
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
RTSD
HDL
Commits
73cd845b
Commit
73cd845b
authored
3 years ago
by
Eric Kooistra
Browse files
Options
Downloads
Patches
Plain Diff
Use c_sdp_W_statistics_sz. Add func_sdp_get_stat_from_mm_*().
parent
3b82b0ca
Branches
Branches containing commit
No related tags found
1 merge request
!175
Added t_sdp_sim. Add func_sdp_get_stat_*() functions to determine the header...
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
applications/lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd
+40
-16
40 additions, 16 deletions
applications/lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd
with
40 additions
and
16 deletions
applications/lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd
+
40
−
16
View file @
73cd845b
...
@@ -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_
stat
istic
_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_
stat
istic
_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_
stat
istic
_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
;
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment