Skip to content
Snippets Groups Projects
Commit 3a11467d authored by Pieter Donker's avatar Pieter Donker
Browse files

Merge branch 'L2SDP-426' into 'master'

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

Closes L2SDP-426

See merge request desp/hdl!130
parents 17191613 a9d2aa1f
No related branches found
No related tags found
1 merge request!130Corrected number_of_fields for statistics (SST, BST and XST). Corrected...
...@@ -11,8 +11,12 @@ parameters: ...@@ -11,8 +11,12 @@ parameters:
- { name: c_N_beamsets, value: 2 } - { name: c_N_beamsets, value: 2 }
- { name: c_N_sub, value: 512 } - { name: c_N_sub, value: 512 }
- { name: c_N_fft, value: 1024 } - { name: c_N_fft, value: 1024 }
- { name: c_N_pn_lb, value: 16 }
- { name: c_S_pn, value: 12 } - { name: c_S_pn, value: 12 }
- { name: c_Q_fft, value: 2 } - { name: c_Q_fft, value: 2 }
- { name: c_P_sq, value: 1 + c_N_pn_lb // 2 } # = 1 + 16 // 2 = 9, on revision xsub_one only first X_sq cell is used
- { name: c_X_sq, value: c_S_pn * c_S_pn } # = 144
- { name: c_N_crosslets, value: 1 }
- { name: c_N_taps, value: 16 } - { name: c_N_taps, value: 16 }
- { name: c_W_adc_jesd, value: 16 } - { name: c_W_adc_jesd, value: 16 }
- { name: c_W_adc, value: 14 } - { name: c_W_adc, value: 14 }
...@@ -220,6 +224,9 @@ peripherals: ...@@ -220,6 +224,9 @@ peripherals:
- REG_DP_SYNC_INSERT_V2 - REG_DP_SYNC_INSERT_V2
- peripheral_name: st/st_xst_for_sdp - peripheral_name: st/st_xst_for_sdp
parameter_overrides:
- { name: g_nof_streams, value: c_P_sq }
- { name: g_nof_crosslets, value: c_N_crosslets }
mm_port_names: mm_port_names:
- RAM_ST_XSQ - RAM_ST_XSQ
...@@ -236,6 +243,7 @@ peripherals: ...@@ -236,6 +243,7 @@ peripherals:
peripheral_group: xst peripheral_group: xst
mm_port_names: mm_port_names:
- REG_STAT_HDR_DAT_XST - REG_STAT_HDR_DAT_XST
############################################################################# #############################################################################
# BF = Beamformer (from node_sdp_beamformer.vhd) # BF = Beamformer (from node_sdp_beamformer.vhd)
############################################################################# #############################################################################
......
...@@ -146,7 +146,7 @@ number_of_columns = 13 ...@@ -146,7 +146,7 @@ number_of_columns = 13
RAM_FIL_COEFS 1 16 RAM data 0x00024000 1024 RW uint32 b[15:0] - - 1024 RAM_FIL_COEFS 1 16 RAM data 0x00024000 1024 RW uint32 b[15:0] - - 1024
RAM_EQUALIZER_GAINS 1 6 RAM data 0x00006000 1024 RW cint16_ir b[31:0] - - 1024 RAM_EQUALIZER_GAINS 1 6 RAM data 0x00006000 1024 RW cint16_ir b[31:0] - - 1024
REG_DP_SELECTOR 1 1 REG input_select 0x0002d066 1 RW uint32 b[0:0] - - - REG_DP_SELECTOR 1 1 REG input_select 0x0002d066 1 RW uint32 b[0:0] - - -
RAM_ST_SST 1 6 RAM data 0x00028000 2048 RW uint64 b[31:0] b[31:0] - 2048 RAM_ST_SST 1 6 RAM data 0x00028000 1024 RW uint64 b[31:0] b[31:0] - 2048
- - - - - 0x0002d067 - - - b[21:0] b[53:32] - - - - - - - 0x0002d067 - - - b[21:0] b[53:32] - -
REG_STAT_ENABLE_SST 1 1 REG enable 0x0002d060 1 RW uint32 b[0:0] - - - REG_STAT_ENABLE_SST 1 1 REG enable 0x0002d060 1 RW uint32 b[0:0] - - -
REG_STAT_HDR_DAT_SST 1 1 REG bsn 0x00000c40 1 RW uint64 b[31:0] b[31:0] - - REG_STAT_HDR_DAT_SST 1 1 REG bsn 0x00000c40 1 RW uint64 b[31:0] b[31:0] - -
...@@ -198,7 +198,7 @@ number_of_columns = 13 ...@@ -198,7 +198,7 @@ number_of_columns = 13
REG_BSN_SCHEDULER_XSUB 1 1 REG scheduled_bsn 0x0002d05c 1 RW uint64 b[31:0] b[31:0] - - REG_BSN_SCHEDULER_XSUB 1 1 REG scheduled_bsn 0x0002d05c 1 RW uint64 b[31:0] b[31:0] - -
- - - - - 0x0002d05d - - - b[31:0] b[63:32] - - - - - - - 0x0002d05d - - - b[31:0] b[63:32] - -
REG_DP_SYNC_INSERT_V2 1 1 REG nof_blk_per_sync 0x0002d05e 1 RW uint32 b[31:0] - - - REG_DP_SYNC_INSERT_V2 1 1 REG nof_blk_per_sync 0x0002d05e 1 RW uint32 b[31:0] - - -
RAM_ST_XSQ 1 1 RAM data 0x00018000 576 RW cint64_ir b[31:0] b[31:0] - - RAM_ST_XSQ 1 9 RAM data 0x00018000 144 RW cint64_ir b[31:0] b[31:0] - 1028
- - - - - 0x0002d05f - - - b[31:0] b[63:32] - - - - - - - 0x0002d05f - - - b[31:0] b[63:32] - -
REG_CROSSLETS_INFO 1 1 REG offset 0x0002d000 15 RW uint32 b[31:0] - - - REG_CROSSLETS_INFO 1 1 REG offset 0x0002d000 15 RW uint32 b[31:0] - - -
- - - - step 0x0002d00f 1 RW uint32 b[31:0] - - - - - - - step 0x0002d00f 1 RW uint32 b[31:0] - - -
...@@ -298,7 +298,7 @@ number_of_columns = 13 ...@@ -298,7 +298,7 @@ number_of_columns = 13
- - - - eth_destination_mac 0x00000ca8 1 RW uint64 b[31:0] b[31:0] - - - - - - eth_destination_mac 0x00000ca8 1 RW uint64 b[31:0] b[31:0] - -
- - - - - 0x00000ca9 - - - b[15:0] b[47:32] - - - - - - - 0x00000ca9 - - - b[15:0] b[47:32] - -
REG_DP_XONOFF 2 1 REG enable_stream 0x0002d054 1 RW uint32 b[0:0] - 2 2 REG_DP_XONOFF 2 1 REG enable_stream 0x0002d054 1 RW uint32 b[0:0] - 2 2
RAM_ST_BST 2 1 RAM data 0x00001000 1952 RW uint64 b[31:0] b[31:0] 2048 2048 RAM_ST_BST 2 1 RAM data 0x00001000 976 RW uint64 b[31:0] b[31:0] 2048 2048
- - - - - 0x0002d055 - - - b[21:0] b[53:32] - - - - - - - 0x0002d055 - - - b[21:0] b[53:32] - -
REG_STAT_ENABLE_BST 2 1 REG enable 0x0002d050 1 RW uint32 b[0:0] - 2 2 REG_STAT_ENABLE_BST 2 1 REG enable 0x0002d050 1 RW uint32 b[0:0] - 2 2
REG_STAT_HDR_DAT_BST 2 1 REG bsn 0x00000080 1 RW uint64 b[31:0] b[31:0] 64 64 REG_STAT_HDR_DAT_BST 2 1 REG bsn 0x00000080 1 RW uint64 b[31:0] b[31:0] 64 64
......
...@@ -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