From e6528c65912b331a5a360186edb26428a2d6459b Mon Sep 17 00:00:00 2001
From: Eric Kooistra <kooistra@astron.nl>
Date: Tue, 16 Mar 2021 16:40:44 +0100
Subject: [PATCH] Added peripheral sdp_beamformer_output_hdr_dat

---
 .../lofar2/libraries/sdp/sdp.peripheral.yaml  | 62 +++++++++++++++++++
 1 file changed, 62 insertions(+)

diff --git a/applications/lofar2/libraries/sdp/sdp.peripheral.yaml b/applications/lofar2/libraries/sdp/sdp.peripheral.yaml
index 11977f0fd3..5f26ca047a 100644
--- a/applications/lofar2/libraries/sdp/sdp.peripheral.yaml
+++ b/applications/lofar2/libraries/sdp/sdp.peripheral.yaml
@@ -32,6 +32,7 @@ peripherals:
           - - { field_name: block_period,            width: 16, access_mode: RO, address_offset: 0x30 }
           - - { field_name: beamlet_scale,           width: 16, access_mode: RW, address_offset: 0x34 }
 
+
   - peripheral_name: sdp_subband_equalizer    # pi_sdp_subband_equalizer.py
     peripheral_description: "SDP Subband equalizer coefficients."
     parameters:
@@ -59,6 +60,7 @@ peripherals:
               number_of_fields: 1024  # = Q_fft * N_sub = 2 signal inputs * 512 subbands
               radix: complx
 
+
   - peripheral_name: sdp_bf_weights    # pi_sdp_bf_weights.py
     peripheral_description: "SDP Beamformer weights (= beamlet weights)."
     parameters:
@@ -106,6 +108,7 @@ peripherals:
               number_of_fields: g_nof_gains
               radix: complx
 
+
   - peripheral_name: sdp_bf_scale    # pi_sdp_bf_scale.py
     peripheral_description: "SDP BF beamlet data output scaling and requantization."
     parameters:
@@ -139,3 +142,62 @@ peripherals:
           - - field_name: unused
               field_description: "Not used."
               address_offset: 0x4
+
+
+  - peripheral_name: sdp_beamformer_output_hdr_dat
+    peripheral_description: "SDP BF beamlet data output header."
+    parameters:
+      # Parameters fixed in sdp_beamformer_output.vhd / dp_offload_tx_v3.vhd / sdp_pkg.vhd
+      - { name: g_gain_w, value: 16 }
+      - { name: g_lsb_w, value: 15 }
+    slave_ports:
+      # MM port for sdp_beamformer_output.vhd / dp_offload_tx_v3.vhd
+      - slave_name: REG_DP_OFFLOAD_TX_HDR_DAT
+        slave_description: |
+          "The ETH/IP/UDP/application header fields for the beamlet data output offload UDP packets."
+        slave_type: REG
+        fields:
+          # eth field group
+          - - { field_name: eth_destination_mac,    width: 32,                 access_mode: RW, address_offset: 0x0,  radix_width: 48 }
+          - - { field_name: eth_source_mac,         width: 32,                 access_mode: RO, address_offset: 0x8,  radix_width: 48 }
+          - - { field_name: eth_type,               width: 16,                 access_mode: RO, address_offset: 0x10 }
+          # ip field group
+          - - { field_name: ip_version,             width:  4,                 access_mode: RW, address_offset: 0x14 }
+          - - { field_name: ip_header_length,       width:  4,                 access_mode: RW, address_offset: 0x18 }
+          - - { field_name: ip_services,            width:  8,                 access_mode: RW, address_offset: 0x1C }
+          - - { field_name: ip_total_length,        width: 16,                 access_mode: RW, address_offset: 0x20 }
+          - - { field_name: ip_identification,      width: 16,                 access_mode: RW, address_offset: 0x24 }
+          - - { field_name: ip_flags,               width:  3,                 access_mode: RW, address_offset: 0x28 }
+          - - { field_name: ip_fragment_offset,     width: 13,                 access_mode: RW, address_offset: 0x2C }
+          - - { field_name: ip_time_to_live,        width:  8,                 access_mode: RW, address_offset: 0x30 }
+          - - { field_name: ip_protocol,            width:  8,                 access_mode: RW, address_offset: 0x34 }
+          - - { field_name: ip_header_checksum,     width: 16,                 access_mode: RW, address_offset: 0x38 }
+          - - { field_name: ip_source_address,      width: 32,                 access_mode: RW, address_offset: 0x3C }
+          - - { field_name: ip_destination_address, width: 32,                 access_mode: RW, address_offset: 0x40 }
+          # udp field group
+          - - { field_name: udp_source_port,        width: 16,                 access_mode: RW, address_offset: 0x44 }
+          - - { field_name: udp_destination_port,   width: 16,                 access_mode: RW, address_offset: 0x48 }
+          - - { field_name: udp_length,             width: 16,                 access_mode: RW, address_offset: 0x4C }
+          - - { field_name: udp_checksum,           width: 16,                 access_mode: RW, address_offset: 0x50 }
+          # application field group
+          - - { field_name: marker,                 width:  8,                 access_mode: RO, address_offset: 0x54 }
+          - - { field_name: version_id,             width:  8,                 access_mode: RO, address_offset: 0x58 }
+          - - { field_name: observation_id,         width: 32,                 access_mode: RW, address_offset: 0x5C }
+          - - { field_name: station_id,             width: 16,                 access_mode: RW, address_offset: 0x60 }
+          - - { field_name: source_info,            width: 16,                 access_mode: RW, address_offset: 0x64 }
+          - "source_info":
+            - { field_name: antenna_band_index,     width:  1, bit_offset: 15, access_mode: RW, address_offset: 0x64 }
+            - { field_name: nyquist_zone_index,     width:  2, bit_offset: 13, access_mode: RW, address_offset: 0x64 }
+            - { field_name: f_adc,                  width:  1, bit_offset: 12, access_mode: RW, address_offset: 0x64 }
+            - { field_name: fsub_type,              width:  1, bit_offset: 11, access_mode: RW, address_offset: 0x64 }
+            - { field_name: payload_error,          width:  1, bit_offset: 10, access_mode: RW, address_offset: 0x64 }
+            - { field_name: repositioning_flag,     width:  1, bit_offset:  9, access_mode: RW, address_offset: 0x64 }
+            - { field_name: beamlet_width,          width:  3, bit_offset:  5, access_mode: RW, address_offset: 0x64 }
+            - { field_name: gn_index,               width:  5, bit_offset:  0, access_mode: RW, address_offset: 0x64 }
+          - - { field_name: reserved,               width: 32,                 access_mode: RW, address_offset: 0x68, radix_width: 40 }
+          - - { field_name: beamlet_scale,          width: 16,                 access_mode: RW, address_offset: 0x70 }
+          - - { field_name: beamlet_index,          width: 16,                 access_mode: RW, address_offset: 0x74 }
+          - - { field_name: nof_blocks_per_packet,  width:  8,                 access_mode: RW, address_offset: 0x78 }
+          - - { field_name: nof_beamlets_per_block, width: 16,                 access_mode: RW, address_offset: 0x7C }
+          - - { field_name: block_period,           width: 16,                 access_mode: RW, address_offset: 0x80 }
+          - - { field_name: BSN,                    width: 32,                 access_mode: RW, address_offset: 0x84, radix_width: 64 }
-- 
GitLab