diff --git a/libraries/dsp/st/st.peripheral.yaml b/libraries/dsp/st/st.peripheral.yaml
index 23b11ddf8086194ade628fc1ec8e98d84e14d0b3..805b806ab85e5b5e6d6798883148f55d1d553814 100644
--- a/libraries/dsp/st/st.peripheral.yaml
+++ b/libraries/dsp/st/st.peripheral.yaml
@@ -34,7 +34,7 @@ peripherals:
         fields:
           - - field_name: power
               field_description: ""
-              number_of_fields: g_nof_stat * g_stat_data_sz
+              number_of_fields: g_nof_stat
               address_offset: 0x0
               mm_width: 32
               user_width: g_stat_data_w
@@ -46,7 +46,7 @@ peripherals:
        "Accumulate the subband auto power values during a sync interval for the subband statistics (SST) in LOFAR2.0 SDP"
     parameters:
       # 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
       - { 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
@@ -67,7 +67,7 @@ peripherals:
         fields:
           - - field_name: power
               field_description: ""
-              number_of_fields: g_nof_stat * g_stat_data_sz
+              number_of_fields: g_nof_stat
               address_offset: 0x0
               mm_width: 32
               user_width: g_stat_data_w
@@ -79,7 +79,7 @@ peripherals:
        "Accumulate the beamlet auto power values during a sync interval for the beamlet statistics (BST) in LOFAR2.0 SDP"
     parameters:
       # 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
       - { 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
@@ -95,11 +95,11 @@ peripherals:
            (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."
-        number_of_mm_ports: 1
+        number_of_mm_ports: g_nof_instances
         fields:
           - - field_name: power
               field_description: ""
-              number_of_fields: g_nof_stat * g_stat_data_sz
+              number_of_fields: g_nof_stat
               address_offset: 0x0
               mm_width: 32
               user_width: g_stat_data_w
@@ -112,27 +112,50 @@ peripherals:
     parameters:
       # Parameters of pi_st_xst.py, fixed in node_sdp_correlator.vhd / sdp_pkg.vhd
       - { 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_signal_inputs, value: 12 }  # S_pn = 12
       - { name: g_in_data_w, value: 16 }  # W_crosslet = 16
       - { name: g_stat_data_w, value: 64 }  # W_statistic = 64
       - { name: g_stat_data_sz, value: 2 }  # W_statistic_sz = 2
     mm_ports:
-      # MM port for st_sst.vhd
+      # MM port for st_xst.vhd
       - mm_port_name: RAM_ST_XSQ
         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: |
-          "The crosslets statistics per PN are stored in 1 block of 
-           g_nof_crosslets * g_nof_signal_inputs**2 * c_nof_complex * g_stat_data_sz = 1 * 12 * 12 * 2 * 2 = 576 values as:
+          "The crosslets statistics per PN are stored in g_nof_streams blocks
+           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:
           - - field_name: power
               field_description: ""
-              number_of_fields: 576
+              number_of_fields: g_nof_crosslets * g_nof_signal_inputs**2
               address_offset: 0x0
               mm_width: 32
               user_width: g_stat_data_w