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

Corrected number_of_fields for statistics (SST, BST and XST). Corrected...

Corrected number_of_fields for statistics (SST, BST and XST). Corrected g_nof_instances = 1 in BST and use number_of_mm_ports = g_nof_instances in BST. Added mm_port_span to XST and improved mm_port_description of XST.
parent d9c11fac
No related branches found
No related tags found
1 merge request!130Corrected number_of_fields for statistics (SST, BST and XST). Corrected...
...@@ -34,7 +34,7 @@ peripherals: ...@@ -34,7 +34,7 @@ peripherals:
fields: fields:
- - field_name: power - - field_name: power
field_description: "" field_description: ""
number_of_fields: g_nof_stat * g_stat_data_sz number_of_fields: g_nof_stat
address_offset: 0x0 address_offset: 0x0
mm_width: 32 mm_width: 32
user_width: g_stat_data_w user_width: g_stat_data_w
...@@ -46,7 +46,7 @@ peripherals: ...@@ -46,7 +46,7 @@ peripherals:
"Accumulate the subband auto power values during a sync interval for the subband statistics (SST) in LOFAR2.0 SDP" "Accumulate the subband auto power values during a sync interval for the subband statistics (SST) in LOFAR2.0 SDP"
parameters: parameters:
# Parameters of pi_st_sst.py, fixed in node_sdp_filterbank.vhd / sdp_pkg.vhd # Parameters of pi_st_sst.py, fixed in node_sdp_filterbank.vhd / sdp_pkg.vhd
- { name: g_nof_instances, value: 6 } - { name: g_nof_instances, value: 6 } # c_sdp_P_pfb = 6
# Parameters of st_sst.vhd, fixed in node_sdp_filterbank.vhd / sdp_pkg.vhd # Parameters of st_sst.vhd, fixed in node_sdp_filterbank.vhd / sdp_pkg.vhd
- { name: g_nof_stat, value: 1024 } # nof accumulators: N_sub * Q_fft = 512 * 2 = 1024 - { name: g_nof_stat, value: 1024 } # nof accumulators: N_sub * Q_fft = 512 * 2 = 1024
- { name: g_stat_data_w, value: 54 } # statistics accumulator user_width in bits: W_statistic = 64 - { name: g_stat_data_w, value: 54 } # statistics accumulator user_width in bits: W_statistic = 64
...@@ -67,7 +67,7 @@ peripherals: ...@@ -67,7 +67,7 @@ peripherals:
fields: fields:
- - field_name: power - - field_name: power
field_description: "" field_description: ""
number_of_fields: g_nof_stat * g_stat_data_sz number_of_fields: g_nof_stat
address_offset: 0x0 address_offset: 0x0
mm_width: 32 mm_width: 32
user_width: g_stat_data_w user_width: g_stat_data_w
...@@ -79,7 +79,7 @@ peripherals: ...@@ -79,7 +79,7 @@ peripherals:
"Accumulate the beamlet auto power values during a sync interval for the beamlet statistics (BST) in LOFAR2.0 SDP" "Accumulate the beamlet auto power values during a sync interval for the beamlet statistics (BST) in LOFAR2.0 SDP"
parameters: parameters:
# Parameters of pi_st_bst.py, fixed in node_sdp_beamformer.vhd / sdp_pkg.vhd # Parameters of pi_st_bst.py, fixed in node_sdp_beamformer.vhd / sdp_pkg.vhd
- { name: g_nof_instances, value: 6 } - { name: g_nof_instances, value: 1 }
# Parameters of st_sst.vhd, fixed in node_sdp_filterbank.vhd / sdp_pkg.vhd # Parameters of st_sst.vhd, fixed in node_sdp_filterbank.vhd / sdp_pkg.vhd
- { name: g_nof_stat, value: 976 } # nof accumulators: S_sub_bf * N_pol_bf = 488 * 2 = 976 - { name: g_nof_stat, value: 976 } # nof accumulators: S_sub_bf * N_pol_bf = 488 * 2 = 976
- { name: g_stat_data_w, value: 54 } # statistics accumulator user_width in bits: W_statistic = 64 - { name: g_stat_data_w, value: 54 } # statistics accumulator user_width in bits: W_statistic = 64
...@@ -95,11 +95,11 @@ peripherals: ...@@ -95,11 +95,11 @@ peripherals:
(uint64)BST[g_nof_stat] = (uint64)BST[S_sub_bf][N_pol_bf] (uint64)BST[g_nof_stat] = (uint64)BST[S_sub_bf][N_pol_bf]
where N_pol_bf = 2 and S_sub_bf = 488 are defined in sdp_pkg.vhd." where N_pol_bf = 2 and S_sub_bf = 488 are defined in sdp_pkg.vhd."
number_of_mm_ports: 1 number_of_mm_ports: g_nof_instances
fields: fields:
- - field_name: power - - field_name: power
field_description: "" field_description: ""
number_of_fields: g_nof_stat * g_stat_data_sz number_of_fields: g_nof_stat
address_offset: 0x0 address_offset: 0x0
mm_width: 32 mm_width: 32
user_width: g_stat_data_w user_width: g_stat_data_w
...@@ -112,27 +112,50 @@ peripherals: ...@@ -112,27 +112,50 @@ peripherals:
parameters: parameters:
# Parameters of pi_st_xst.py, fixed in node_sdp_correlator.vhd / sdp_pkg.vhd # Parameters of pi_st_xst.py, fixed in node_sdp_correlator.vhd / sdp_pkg.vhd
- { name: g_nof_streams, value: 9 } # P_sq - { name: g_nof_streams, value: 9 } # P_sq
# Parameters of st_xst.vhd, fixed in node_sdp_correlator.vhd / sdp_pkg.vhd # Parameters of st_xst.vhd, st_xsq_arr.vhd fixed in node_sdp_correlator.vhd / sdp_pkg.vhd
- { name: g_nof_crosslets, value: 1 } # N_crosslets - { name: g_nof_crosslets, value: 1 } # N_crosslets
- { name: g_nof_signal_inputs, value: 12 } # S_pn = 12 - { name: g_nof_signal_inputs, value: 12 } # S_pn = 12
- { name: g_in_data_w, value: 16 } # W_crosslet = 16 - { name: g_in_data_w, value: 16 } # W_crosslet = 16
- { name: g_stat_data_w, value: 64 } # W_statistic = 64 - { name: g_stat_data_w, value: 64 } # W_statistic = 64
- { name: g_stat_data_sz, value: 2 } # W_statistic_sz = 2 - { name: g_stat_data_sz, value: 2 } # W_statistic_sz = 2
mm_ports: mm_ports:
# MM port for st_sst.vhd # MM port for st_xst.vhd
- mm_port_name: RAM_ST_XSQ - mm_port_name: RAM_ST_XSQ
mm_port_type: RAM mm_port_type: RAM
# from sdp_pkg.vhd:
# . c_sdp_ram_st_xsq_addr_w = ceil_log2(P_sq) + ceil_log2(N_crosslets * X_sq * c_nof_complex * (c_longword_sz/c_word_sz)
# . c_sdp_X_sq = S_pn**2 = g_nof_signal_inputs**2
mm_port_span: ceil_pow2(g_nof_streams) + ceil_pow2(g_nof_crosslets * g_nof_signal_inputs**2 * c_nof_complex * g_stat_data_sz) * MM_BUS_SIZE
mm_port_description: | mm_port_description: |
"The crosslets statistics per PN are stored in 1 block of "The crosslets statistics per PN are stored in g_nof_streams blocks
g_nof_crosslets * g_nof_signal_inputs**2 * c_nof_complex * g_stat_data_sz = 1 * 12 * 12 * 2 * 2 = 576 values as: of each nof_stat values per block (= per X_sq correlator cell). The
N_crosslets are stored tightly in series per block:
nof_stat = g_nof_crosslets * g_nof_signal_inputs**2
# g_nof_crosslets = 1:
= 1 * 12 * 12 = 144 complex values = number_of_fields
= c_nof_complex * 144 = 288 real values
= g_stat_data_sz * 288 = 576 MM words --> mm_port_span = 1024
# g_nof_crosslets = 7:
= 7 * 12 * 12 = 1008 complex values = number_of_fields
= c_nof_complex * 1008 = 2016 real values
= g_stat_data_sz * 2016 = 4032 MM words --> mm_port_span = 4096
in this format:
(cint64)XST[] = XST[crosslets][in A][in B][N_complex][g_stat_data_sz]
(cint64)XST[] = (cint64)XST[crosslets][in A][in B][complex][word]" In total there are g_nof_streams = P_sq parallel X_sq blocks in the MM
peripheral span:
number_of_mm_ports: 1 mm_peripheral_span = ceil_pow2(g_nof_streams) * ceil_pow2(nof_stat MM words)
= 16 * 1024 = 16K = 0x4000 when N_crosslets = 1
= 16 * 4096 = 64K = 0x10000 when N_crosslets = 7."
number_of_mm_ports: g_nof_streams
fields: fields:
- - field_name: power - - field_name: power
field_description: "" field_description: ""
number_of_fields: 576 number_of_fields: g_nof_crosslets * g_nof_signal_inputs**2
address_offset: 0x0 address_offset: 0x0
mm_width: 32 mm_width: 32
user_width: g_stat_data_w user_width: g_stat_data_w
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment