Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
sdp.peripheral.yaml 39.03 KiB
schema_name: args
schema_version: 1.0
schema_type: peripheral

hdl_library_name: sdp
hdl_library_description: "Station Digital Processor (SDP) for LOFAR2.0"

peripherals:
  - peripheral_name: sdp_info    # pi_sdp_info.py
    peripheral_description: "SDP info."
    mm_ports:
      # MM port for sdp_info.vhd
      - mm_port_name: REG_SDP_INFO
        mm_port_type: REG
        mm_port_span: 16 * MM_BUS_SIZE
        mm_port_description: |
          "The SDP info contains central SDP information. The station_id applies to the entire station.
           The other info fields apply per antenna band (low band or high band). An FPGA node only
           participates in one band."
        fields:
          - - { field_name: station_id,              mm_width: 16, access_mode: RW, address_offset: 0x1C }
          - - { field_name: antenna_band_index,      mm_width:  1, access_mode: RW, address_offset: 0x18 }
          - - { field_name: observation_id,          mm_width: 32, access_mode: RW, address_offset: 0x14 }
          - - { field_name: nyquist_zone_index,      mm_width:  2, access_mode: RW, address_offset: 0x10 }
          - - { field_name: f_adc,                   mm_width:  1, access_mode: RO, address_offset: 0xC  }
          - - { field_name: fsub_type,               mm_width:  1, access_mode: RO, address_offset: 0x8  }
          - - { field_name: beam_repositioning_flag, mm_width:  1, access_mode: RW, address_offset: 0x4  }
          - - { field_name: block_period,            mm_width: 16, access_mode: RO, address_offset: 0x0  }


  - peripheral_name: sdp_crosslets_subband_select    # pi_sdp_crosslets_info.py 
    peripheral_description: "SDP crosslets info."
    mm_ports:
      # MM port for sdp_info.vhd
      - mm_port_name: REG_CROSSLETS_INFO
        mm_port_type: REG
        mm_port_span: 16 * MM_BUS_SIZE
        mm_port_description: |
          "The SDP crosslets info contains the step size and 15 offsets, that are used to select a new 
           crosslet subband for every integration interval"
        fields:
          - - { field_name: step, access_mode: RW, address_offset: 0x3C }
          - - field_name: offset
              number_of_fields: 15  
              address_offset: 0x0

  - peripheral_name: sdp_nof_crosslets    # pi_sdp_nof_crosslets.py 
    peripheral_description: "SDP nof crosslets."
    mm_ports:
      - mm_port_name: REG_NOF_CROSSLETS
        mm_port_type: REG
        mm_port_span: 2 * MM_BUS_SIZE
        mm_port_description: |
          "The SDP nof crosslets contains the number of crosslets that are being sent out the UDP offload
           where 1 <= nof_crosslets <= N_crosslets_max"
        fields:
          - - { field_name: nof_crosslets, access_mode: RW, address_offset: 0x0 }
          - - { field_name: unused,        access_mode: RW, address_offset: 0x4 }

  - peripheral_name: sdp_subband_equalizer    # pi_sdp_subband_equalizer.py
    peripheral_description: "SDP Subband equalizer coefficients."
    parameters:
      # Parameters of pi_sdp_subband_equalizer.py, fixed in sdp_subband_equalizer.vhd / sdp_pkg.vhd
      - { name: P_pfb, value: 6 }  # P_pfb = S_pn / Q_fft = 12 / 2 = 6
      - { name: Q_fft, value: 2 }
      - { name: N_sub, value: 512 }
    mm_ports:
      # MM port for sdp_subband_equalizer.vhd
      - mm_port_name: RAM_EQUALIZER_GAINS
        mm_port_type: RAM