diff --git a/applications/disturb2/designs/disturb2_unb2b_station/disturb2_unb2b_station.fpga.yaml b/applications/disturb2/designs/disturb2_unb2b_station/disturb2_unb2b_station.fpga.yaml index 2efc86165268dcfaea09b683b45a957a99fc854d..26742d9c1683435453e26636746d78c83712772a 100644 --- a/applications/disturb2/designs/disturb2_unb2b_station/disturb2_unb2b_station.fpga.yaml +++ b/applications/disturb2/designs/disturb2_unb2b_station/disturb2_unb2b_station.fpga.yaml @@ -101,7 +101,7 @@ peripherals: # SDP Info ############################################################################# - - peripheral_name: disturb/disturb_info + - peripheral_name: sdp/sdp_info mm_port_names: - REG_SDP_INFO @@ -195,7 +195,7 @@ peripherals: - RAM_DIAG_DATA_BUFFER_BSN ############################################################################# - # Fsub = Subband Filterbank (from node_disturb_filterbank.vhd) + # Fsub = Subband Filterbank (from node_sdp_filterbank.vhd) ############################################################################# - peripheral_name: si/si @@ -213,7 +213,7 @@ peripherals: mm_port_names: - RAM_FIL_COEFS - - peripheral_name: disturb/disturb_subband_equalizer + - peripheral_name: sdp/sdp_subband_equalizer mm_port_names: - RAM_EQUALIZER_GAINS @@ -221,7 +221,7 @@ peripherals: mm_port_names: - REG_DP_SELECTOR # input_select = 0 for weighted subbands, input_select = 1 for raw subbands - - peripheral_name: st/st_sst_for_disturb + - peripheral_name: st/st_sst_for_sdp mm_port_names: - RAM_ST_SST @@ -230,7 +230,7 @@ peripherals: mm_port_names: - REG_STAT_ENABLE_SST - - peripheral_name: disturb/disturb_statistics_offload_hdr_dat_sst + - peripheral_name: sdp/sdp_statistics_offload_hdr_dat_sst peripheral_group: sst mm_port_names: - REG_STAT_HDR_DAT_SST @@ -243,7 +243,7 @@ peripherals: - REG_BSN_MONITOR_V2_SST_OFFLOAD ############################################################################# - # Xsub = Subband Correlator (from node_disturb_correlator.vhd) + # Xsub = Subband Correlator (from node_sdp_correlator.vhd) ############################################################################# - peripheral_name: dp/dp_bsn_sync_scheduler @@ -251,18 +251,18 @@ peripherals: mm_port_names: - REG_BSN_SYNC_SCHEDULER_XSUB - - peripheral_name: st/st_xst_for_disturb + - 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: - RAM_ST_XSQ - - peripheral_name: disturb/disturb_crosslets_subband_select + - peripheral_name: sdp/sdp_crosslets_subband_select mm_port_names: - REG_CROSSLETS_INFO - - peripheral_name: disturb/disturb_nof_crosslets + - peripheral_name: sdp/sdp_nof_crosslets mm_port_names: - REG_NOF_CROSSLETS @@ -271,7 +271,7 @@ peripherals: mm_port_names: - REG_STAT_ENABLE_XST - - peripheral_name: disturb/disturb_statistics_offload_hdr_dat_xst + - peripheral_name: sdp/sdp_statistics_offload_hdr_dat_xst peripheral_group: xst mm_port_names: - REG_STAT_HDR_DAT_XST @@ -346,7 +346,7 @@ peripherals: - REG_TR_10GBE_ETH10G ############################################################################# - # BF = Beamformer (from node_disturb_beamformer.vhd) + # BF = Beamformer (from node_sdp_beamformer.vhd) ############################################################################# - peripheral_name: reorder/reorder_col_wide @@ -359,7 +359,7 @@ peripherals: mm_port_names: - RAM_SS_SS_WIDE - - peripheral_name: disturb/disturb_bf_weights + - peripheral_name: sdp/sdp_bf_weights number_of_peripherals: c_N_beamsets peripheral_span: ceil_pow2(c_N_pol_bf * c_P_pfb) * ceil_pow2(c_Q_fft * c_S_sub_bf) * MM_BUS_SIZE # number_of_ports = c_N_pol_bf * c_P_pfb, mm_port_span = ceil_pow2(c_Q_fft * c_S_sub_bf) words mm_port_names: @@ -399,7 +399,7 @@ peripherals: peripheral_group: ring_rx_bf number_of_peripherals: c_N_beamsets parameter_overrides: - - { name: g_nof_streams, value: c_lane_nof_rx_monitors } + - { name: g_nof_streams, value: 1 } mm_port_names: - REG_BSN_MONITOR_V2_RING_RX_BF @@ -407,7 +407,7 @@ peripherals: peripheral_group: ring_tx_bf number_of_peripherals: c_N_beamsets parameter_overrides: - - { name: g_nof_streams, value: c_lane_nof_tx_monitors } + - { name: g_nof_streams, value: 1 } mm_port_names: - REG_BSN_MONITOR_V2_RING_TX_BF @@ -425,7 +425,7 @@ peripherals: mm_port_names: - REG_DP_BLOCK_VALIDATE_BSN_AT_SYNC_BF - - peripheral_name: disturb/disturb_bf_scale + - peripheral_name: sdp/sdp_bf_scale number_of_peripherals: c_N_beamsets peripheral_span: 2 * MM_BUS_SIZE # number_of_ports = 1, mm_port_span = 2 words parameter_overrides: @@ -434,7 +434,7 @@ peripherals: mm_port_names: - REG_BF_SCALE - - peripheral_name: disturb/disturb_beamformer_output_hdr_dat + - peripheral_name: sdp/sdp_beamformer_output_hdr_dat number_of_peripherals: c_N_beamsets peripheral_span: 64 * MM_BUS_SIZE # number_of_ports = 1, mm_port_span = 64 words mm_port_names: @@ -449,7 +449,7 @@ peripherals: mm_port_names: - REG_DP_XONOFF - - peripheral_name: st/st_bst_for_disturb + - peripheral_name: st/st_bst_for_sdp number_of_peripherals: c_N_beamsets peripheral_span: ceil_pow2(c_stat_data_sz * c_S_sub_bf * c_N_pol_bf) * MM_BUS_SIZE # number_of_ports = 1, mm_port_span = ceil_pow2(c_stat_data_sz * c_S_sub_bf * c_N_pol_bf) words mm_port_names: @@ -462,7 +462,7 @@ peripherals: mm_port_names: - REG_STAT_ENABLE_BST - - peripheral_name: disturb/disturb_statistics_offload_hdr_dat_bst + - peripheral_name: sdp/sdp_statistics_offload_hdr_dat_bst peripheral_group: bst number_of_peripherals: c_N_beamsets peripheral_span: 64 * MM_BUS_SIZE # number_of_ports = 1, mm_port_span = 64 words diff --git a/applications/disturb2/designs/disturb2_unb2b_station/disturb2_unb2b_station.fpga.yaml.bak b/applications/disturb2/designs/disturb2_unb2b_station/disturb2_unb2b_station.fpga.yaml.bak new file mode 100644 index 0000000000000000000000000000000000000000..2efc86165268dcfaea09b683b45a957a99fc854d --- /dev/null +++ b/applications/disturb2/designs/disturb2_unb2b_station/disturb2_unb2b_station.fpga.yaml.bak @@ -0,0 +1,500 @@ +schema_name: args +schema_version: 1.0 +schema_type: fpga + +hdl_library_name: disturb2_unb2b_station +fpga_name: disturb2_unb2b_station +fpga_description: "FPGA design disturb2_unb2b_station" +parameters: + - { name: c_N_pol_bf, value: 2 } # NOTE: define c_N_pol_bf before c_N_pol, to avoid that c_N_pol_bf gets substituted by 2_bf + - { name: c_N_pol, value: 2 } + - { name: c_N_beamsets, value: 2 } + - { name: c_N_sub, value: 512 } + - { name: c_N_fft, value: 1024 } + - { name: c_N_pn_lb, value: 16 } + - { name: c_S_pn, value: 12 } + - { 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: 7 } + - { name: c_N_taps, value: 16 } + - { name: c_W_adc_jesd, value: 16 } + - { name: c_W_adc, value: 14 } + - { name: c_V_sample_delay, value: 4096 } + - { name: c_V_si_db_large, value: 131072 } + - { name: c_V_si_db, value: 1024 } + - { name: c_V_si_histogram, value: 512 } + - { name: c_W_fir_coef, value: 16 } + - { name: c_W_subband, value: 18 } + - { name: c_P_pfb, value: c_S_pn / c_Q_fft } # = 6 + - { name: c_A_pn, value: c_S_pn / c_N_pol } # = 6 + - { name: c_S_sub_bf, value: 488 } + - { name: c_f_adc_MHz, value: 200 } + - { name: c_W_sub_weight, value: 16 } + - { name: c_W_bf_weight, value: 16 } + - { name: c_W_beamlet_scale, value: 16 } + - { name: c_W_beamlet_resolution, value: 0 - 15 } # EK: FIXME: support passing on negative values, workaround use 0 - positive + - { name: c_W_beamlet, value: 8 } + - { name: c_stat_data_sz, value: 2 } + - { name: c_nof_clk_per_pps, value: c_f_adc_MHz * 10**6 } # = 200000000 + - { name: c_lane_nof_rx_monitors, value: 16 } # per lane + - { name: c_lane_nof_tx_monitors, value: 16 } # per lane + - { name: c_lane_nof_err_counts, value: 8 } # per lane + - { name: c_ring_nof_mac, value: 3 } # 1 TX/RX for RING0 + 1 TX/RX for RING1 + 1 TX/RX for QSFP0 + +peripherals: + ############################################################################# + # Factory / minimal (see ctrl_unb2b_board.vhd) + ############################################################################# + - peripheral_name: unb2b_board/system_info + lock_base_address: 0x10000 + mm_port_names: + - ROM_SYSTEM_INFO + - PIO_SYSTEM_INFO + + - peripheral_name: unb2b_board/wdi + mm_port_names: + - REG_WDI + + - peripheral_name: unb2b_board/unb2_fpga_sens + mm_port_names: + - REG_FPGA_TEMP_SENS + - REG_FPGA_VOLTAGE_SENS + + - peripheral_name: unb2b_board/ram_scrap + mm_port_names: + - RAM_SCRAP + + - peripheral_name: eth/eth + mm_port_names: + - AVS_ETH_0_TSE + - AVS_ETH_0_REG + - AVS_ETH_0_RAM + + - peripheral_name: ppsh/ppsh + mm_port_names: + - PIO_PPS + + - peripheral_name: epcs/epcs + parameter_overrides: + - { name: "g_epcs_addr_w", value: 32 } + mm_port_names: + - REG_EPCS + + - peripheral_name: dp/dpmm + mm_port_names: + - REG_DPMM_CTRL + - REG_DPMM_DATA + + - peripheral_name: dp/mmdp + mm_port_names: + - REG_MMDP_CTRL + - REG_MMDP_DATA + + - peripheral_name: remu/remu + parameter_overrides: + - { name: g_data_w, value: 32 } + mm_port_names: + - REG_REMU + + ############################################################################# + # SDP Info + ############################################################################# + + - peripheral_name: disturb/disturb_info + mm_port_names: + - REG_SDP_INFO + + ############################################################################# + # Ring Info + ############################################################################# + + - peripheral_name: ring/ring_info + mm_port_names: + - REG_RING_INFO + + ############################################################################# + # AIT = ADC Input and Timing (see node_adc_input_and_timing.vhd) + ############################################################################# + + - peripheral_name: tech_jesd204b/jesd_ctrl + mm_port_names: + - PIO_JESD_CTRL + + - peripheral_name: tech_jesd204b/jesd204b_arria10 + parameter_overrides: + - { name: g_nof_streams, value: c_S_pn } + mm_port_names: + - JESD204B + + - peripheral_name: dp/dp_shiftram + parameter_overrides: + - { name: g_nof_streams, value: c_S_pn } + - { name: g_nof_words, value: c_V_sample_delay } + - { name: g_data_w, value: c_W_adc_jesd } + mm_port_names: + - REG_DP_SHIFTRAM + + - peripheral_name: dp/dp_bsn_source_v2 + parameter_overrides: + - { name: g_nof_clk_per_sync, value: c_nof_clk_per_pps } + - { name: g_block_size, value: c_N_fft } + - { name: g_bsn_time_offset_w, value: ceil_log2(c_N_fft) } + mm_port_names: + - REG_BSN_SOURCE_V2 + + - peripheral_name: dp/dp_bsn_scheduler + mm_port_names: + - REG_BSN_SCHEDULER + + - peripheral_name: dp/dp_bsn_monitor + peripheral_group: input + mm_port_names: + - REG_BSN_MONITOR_INPUT + + - peripheral_name: diag/diag_wg_wideband + parameter_overrides: + - { name: g_nof_streams, value: c_S_pn } + mm_port_names: + - REG_WG + - RAM_WG + + - peripheral_name: st/st_histogram + parameter_overrides: + - { name: g_nof_instances, value: c_S_pn } + - { name: g_nof_bins, value: c_V_si_histogram } + - { name: g_nof_data_per_sync, value: c_nof_clk_per_pps} + mm_port_names: + - RAM_ST_HISTOGRAM + + - peripheral_name: aduh/aduh_mon_dc_power + parameter_overrides: + - { name: g_nof_streams, value: c_S_pn } + mm_port_names: + - REG_ADUH_MONITOR + + # Commented RAM_ADUH_MON, because use RAM_DIAG_DATA_BUF_BSN instead + #- peripheral_name: aduh/aduh_mon_data_buffer + # parameter_overrides: + # - { name: g_nof_streams, value: c_S_pn } + # - { name: g_symbol_w, value: c_W_adc_jesd } + # - { name: g_nof_symbols_per_data, value: 1 } + # - { name: g_buffer_nof_symbols, value: 512 } + # - { name: g_buffer_use_sync, value: True } + # mm_port_names: + # - RAM_ADUH_MON + + - peripheral_name: diag/diag_data_buffer + peripheral_group: bsn + parameter_overrides: + - { name: g_nof_streams, value: c_S_pn } + - { name: g_data_w, value: c_W_adc_jesd } + - { name: g_nof_data, value: c_V_si_db } + mm_port_names: + - REG_DIAG_DATA_BUFFER_BSN + - RAM_DIAG_DATA_BUFFER_BSN + + ############################################################################# + # Fsub = Subband Filterbank (from node_disturb_filterbank.vhd) + ############################################################################# + + - peripheral_name: si/si + mm_port_names: + - REG_SI + + - peripheral_name: filter/fil_ppf_w + parameter_overrides: + - { name: g_fil_ppf.wb_factor, value: 1 } # process at sample rate (so no parallel wideband factor) + - { name: g_fil_ppf.nof_chan, value: 0 } # process at sample rate (so no serial time multiplexing) + - { name: g_fil_ppf.nof_bands, value: c_N_fft } + - { name: g_fil_ppf.nof_taps, value: c_N_taps } + - { name: g_fil_ppf.nof_streams, value: 1 } + - { name: g_fil_ppf.coef_dat_w, value: c_W_fir_coef } + mm_port_names: + - RAM_FIL_COEFS + + - peripheral_name: disturb/disturb_subband_equalizer + mm_port_names: + - RAM_EQUALIZER_GAINS + + - peripheral_name: dp/dp_selector + mm_port_names: + - REG_DP_SELECTOR # input_select = 0 for weighted subbands, input_select = 1 for raw subbands + + - peripheral_name: st/st_sst_for_disturb + mm_port_names: + - RAM_ST_SST + + - peripheral_name: common/common_variable_delay + peripheral_group: sst + mm_port_names: + - REG_STAT_ENABLE_SST + + - peripheral_name: disturb/disturb_statistics_offload_hdr_dat_sst + peripheral_group: sst + mm_port_names: + - REG_STAT_HDR_DAT_SST + + - peripheral_name: dp/dp_bsn_monitor_v2 + peripheral_group: sst_udp + parameter_overrides: + - { name: g_nof_streams, value: 1 } + mm_port_names: + - REG_BSN_MONITOR_V2_SST_OFFLOAD + + ############################################################################# + # Xsub = Subband Correlator (from node_disturb_correlator.vhd) + ############################################################################# + + - peripheral_name: dp/dp_bsn_sync_scheduler + peripheral_group: xsub + mm_port_names: + - REG_BSN_SYNC_SCHEDULER_XSUB + + - peripheral_name: st/st_xst_for_disturb + parameter_overrides: + - { name: g_nof_streams, value: c_P_sq } + - { name: g_nof_crosslets, value: c_N_crosslets } + mm_port_names: + - RAM_ST_XSQ + + - peripheral_name: disturb/disturb_crosslets_subband_select + mm_port_names: + - REG_CROSSLETS_INFO + + - peripheral_name: disturb/disturb_nof_crosslets + mm_port_names: + - REG_NOF_CROSSLETS + + - peripheral_name: common/common_variable_delay + peripheral_group: xst + mm_port_names: + - REG_STAT_ENABLE_XST + + - peripheral_name: disturb/disturb_statistics_offload_hdr_dat_xst + peripheral_group: xst + mm_port_names: + - REG_STAT_HDR_DAT_XST + + - peripheral_name: dp/dp_bsn_align_v2 + peripheral_group: xsub + parameter_overrides: + - { name: g_nof_streams, value: c_P_sq } + mm_port_names: + - REG_BSN_ALIGN_V2_XSUB + + - peripheral_name: dp/dp_bsn_monitor_v2 + peripheral_group: rx_align_xsub + parameter_overrides: + - { name: g_nof_streams, value: c_P_sq } + mm_port_names: + - REG_BSN_MONITOR_V2_RX_ALIGN_XSUB + + - peripheral_name: dp/dp_bsn_monitor_v2 + peripheral_group: aligned_xsub + parameter_overrides: + - { name: g_nof_streams, value: 1 } + mm_port_names: + - REG_BSN_MONITOR_V2_ALIGNED_XSUB + + - peripheral_name: dp/dp_bsn_monitor_v2 + peripheral_group: xst_udp + parameter_overrides: + - { name: g_nof_streams, value: 1 } + mm_port_names: + - REG_BSN_MONITOR_V2_XST_OFFLOAD + + - peripheral_name: ring/ring_lane_info + peripheral_group: xsub + mm_port_names: + - REG_RING_LANE_INFO_XST + + - peripheral_name: dp/dp_bsn_monitor_v2 + peripheral_group: ring_rx + parameter_overrides: + - { name: g_nof_streams, value: c_lane_nof_rx_monitors } + mm_port_names: + - REG_BSN_MONITOR_V2_RING_RX_XST + + - peripheral_name: dp/dp_bsn_monitor_v2 + peripheral_group: ring_tx + parameter_overrides: + - { name: g_nof_streams, value: c_lane_nof_tx_monitors } + mm_port_names: + - REG_BSN_MONITOR_V2_RING_TX_XST + + - peripheral_name: dp/dp_block_validate_err + parameter_overrides: + - { name: g_nof_err_counts, value: c_lane_nof_err_counts } + mm_port_names: + - REG_DP_BLOCK_VALIDATE_ERR_XST + + - peripheral_name: dp/dp_block_validate_bsn_at_sync + mm_port_names: + - REG_DP_BLOCK_VALIDATE_BSN_AT_SYNC_XST + + - peripheral_name: tr_10GbE/tr_10GbE_unb2legacy # For ring interface + parameter_overrides: + - { name: g_nof_macs, value: c_ring_nof_mac } + mm_port_names: + - REG_TR_10GBE_MAC + + - peripheral_name: tr_10GbE/tr_10GbE_eth10g # For ring interface + parameter_overrides: + - { name: g_nof_macs, value: c_ring_nof_mac } + mm_port_names: + - REG_TR_10GBE_ETH10G + + ############################################################################# + # BF = Beamformer (from node_disturb_beamformer.vhd) + ############################################################################# + + - peripheral_name: reorder/reorder_col_wide + number_of_peripherals: c_N_beamsets + peripheral_span: ceil_pow2(c_P_pfb) * ceil_pow2(c_S_sub_bf * c_Q_fft) * MM_BUS_SIZE # number_of_ports = c_P_pfb, mm_port_span = ceil_pow2(c_S_sub_bf * c_Q_fft) words + parameter_overrides: + - { name: g_wb_factor, value: c_P_pfb } + - { name: g_nof_ch_in, value: c_N_sub * c_Q_fft } + - { name: g_nof_ch_sel, value: c_S_sub_bf * c_Q_fft } + mm_port_names: + - RAM_SS_SS_WIDE + + - peripheral_name: disturb/disturb_bf_weights + number_of_peripherals: c_N_beamsets + peripheral_span: ceil_pow2(c_N_pol_bf * c_P_pfb) * ceil_pow2(c_Q_fft * c_S_sub_bf) * MM_BUS_SIZE # number_of_ports = c_N_pol_bf * c_P_pfb, mm_port_span = ceil_pow2(c_Q_fft * c_S_sub_bf) words + mm_port_names: + - RAM_BF_WEIGHTS + + - peripheral_name: dp/dp_bsn_align_v2 + peripheral_group: bf + number_of_peripherals: c_N_beamsets + parameter_overrides: + - { name: g_nof_streams, value: 2 } + mm_port_names: + - REG_BSN_ALIGN_V2_BF + + - peripheral_name: dp/dp_bsn_monitor_v2 + peripheral_group: rx_align_bf + number_of_peripherals: c_N_beamsets + parameter_overrides: + - { name: g_nof_streams, value: 2 } + mm_port_names: + - REG_BSN_MONITOR_V2_RX_ALIGN_BF + + - peripheral_name: dp/dp_bsn_monitor_v2 + peripheral_group: aligned_bf + number_of_peripherals: c_N_beamsets + parameter_overrides: + - { name: g_nof_streams, value: 1 } + mm_port_names: + - REG_BSN_MONITOR_V2_ALIGNED_BF + + - peripheral_name: ring/ring_lane_info + peripheral_group: bf + number_of_peripherals: c_N_beamsets + mm_port_names: + - REG_RING_LANE_INFO_BF + + - peripheral_name: dp/dp_bsn_monitor_v2 + peripheral_group: ring_rx_bf + number_of_peripherals: c_N_beamsets + parameter_overrides: + - { name: g_nof_streams, value: c_lane_nof_rx_monitors } + mm_port_names: + - REG_BSN_MONITOR_V2_RING_RX_BF + + - peripheral_name: dp/dp_bsn_monitor_v2 + peripheral_group: ring_tx_bf + number_of_peripherals: c_N_beamsets + parameter_overrides: + - { name: g_nof_streams, value: c_lane_nof_tx_monitors } + mm_port_names: + - REG_BSN_MONITOR_V2_RING_TX_BF + + - peripheral_name: dp/dp_block_validate_err + peripheral_group: bf + number_of_peripherals: c_N_beamsets + parameter_overrides: + - { name: g_nof_err_counts, value: c_lane_nof_err_counts } + mm_port_names: + - REG_DP_BLOCK_VALIDATE_ERR_BF + + - peripheral_name: dp/dp_block_validate_bsn_at_sync + peripheral_group: bf + number_of_peripherals: c_N_beamsets + mm_port_names: + - REG_DP_BLOCK_VALIDATE_BSN_AT_SYNC_BF + + - peripheral_name: disturb/disturb_bf_scale + number_of_peripherals: c_N_beamsets + peripheral_span: 2 * MM_BUS_SIZE # number_of_ports = 1, mm_port_span = 2 words + parameter_overrides: + - { name: g_gain_w, value: c_W_beamlet_scale } + - { name: g_lsb_w, value: 0 - c_W_beamlet_resolution} + mm_port_names: + - REG_BF_SCALE + + - peripheral_name: disturb/disturb_beamformer_output_hdr_dat + number_of_peripherals: c_N_beamsets + peripheral_span: 64 * MM_BUS_SIZE # number_of_ports = 1, mm_port_span = 64 words + mm_port_names: + - REG_HDR_DAT + + - peripheral_name: dp/dp_xonoff + number_of_peripherals: c_N_beamsets + peripheral_span: 2 * MM_BUS_SIZE # number_of_ports = 1, mm_port_span = 2 words + parameter_overrides: + - { name: g_nof_streams, value: 1 } + - { name: g_combine_streams, value: False } + mm_port_names: + - REG_DP_XONOFF + + - peripheral_name: st/st_bst_for_disturb + number_of_peripherals: c_N_beamsets + peripheral_span: ceil_pow2(c_stat_data_sz * c_S_sub_bf * c_N_pol_bf) * MM_BUS_SIZE # number_of_ports = 1, mm_port_span = ceil_pow2(c_stat_data_sz * c_S_sub_bf * c_N_pol_bf) words + mm_port_names: + - RAM_ST_BST + + - peripheral_name: common/common_variable_delay + peripheral_group: bst + number_of_peripherals: c_N_beamsets + peripheral_span: 2 * MM_BUS_SIZE # number_of_ports = 1, mm_port_span = 2 words + mm_port_names: + - REG_STAT_ENABLE_BST + + - peripheral_name: disturb/disturb_statistics_offload_hdr_dat_bst + peripheral_group: bst + number_of_peripherals: c_N_beamsets + peripheral_span: 64 * MM_BUS_SIZE # number_of_ports = 1, mm_port_span = 64 words + mm_port_names: + - REG_STAT_HDR_DAT_BST + + - peripheral_name: dp/dp_bsn_monitor_v2 + peripheral_group: bst_udp + number_of_peripherals: c_N_beamsets + parameter_overrides: + - { name: g_nof_streams, value: 1 } + mm_port_names: + - REG_BSN_MONITOR_V2_BST_OFFLOAD + + - peripheral_name: dp/dp_bsn_monitor_v2 + peripheral_group: beamlet_output + number_of_peripherals: c_N_beamsets + parameter_overrides: + - { name: g_nof_streams, value: 1 } + mm_port_names: + - REG_BSN_MONITOR_V2_BEAMLET_OUTPUT + + - peripheral_name: nw_10GbE/nw_10GbE_unb2legacy # For beamlet output + peripheral_group: beamlet_output + parameter_overrides: + - { name: g_nof_macs, value: 1 } + mm_port_names: + - REG_NW_10GBE_MAC + + - peripheral_name: nw_10GbE/nw_10GbE_eth10g # For beamlet output + peripheral_group: beamlet_output + parameter_overrides: + - { name: g_nof_macs, value: 1 } + mm_port_names: + - REG_NW_10GBE_ETH10G diff --git a/applications/disturb2/libraries/disturb/disturb.peripheral.yaml b/applications/disturb2/libraries/disturb/disturb.peripheral.yaml index 93f17e9ce773b27f6e47fa75e9a80014a1af9853..4d4b20603cd7c23e2d9cc79060b69e2ad32dd351 100644 --- a/applications/disturb2/libraries/disturb/disturb.peripheral.yaml +++ b/applications/disturb2/libraries/disturb/disturb.peripheral.yaml @@ -3,18 +3,18 @@ schema_version: 1.0 schema_type: peripheral hdl_library_name: disturb -hdl_library_description: "Station Digital Processor (DISTURB) for LOFAR2.0" +hdl_library_description: "Station Digital Processor (SDP) for DISTURB2 (Based on SDP for LOFAR2.0)" peripherals: - - peripheral_name: disturb_info # pi_disturb_info.py - peripheral_description: "DISTURB info." + - peripheral_name: sdp_info # pi_sdp_info.py + peripheral_description: "SDP info." mm_ports: - # MM port for disturb_info.vhd - - mm_port_name: REG_DISTURB_INFO + # 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 DISTURB info contains central DISTURB information. The station_id applies to the entire station. + "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: @@ -28,15 +28,15 @@ peripherals: - - { field_name: block_period, mm_width: 16, access_mode: RO, address_offset: 0x0 } - - peripheral_name: disturb_crosslets_subband_select # pi_disturb_crosslets_info.py - peripheral_description: "DISTURB crosslets info." + - peripheral_name: sdp_crosslets_subband_select # pi_sdp_crosslets_info.py + peripheral_description: "SDP crosslets info." mm_ports: - # MM port for disturb_info.vhd + # 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 DISTURB crosslets info contains the step size and 15 offsets, that are used to select a new + "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 } @@ -44,28 +44,28 @@ peripherals: number_of_fields: 15 address_offset: 0x0 - - peripheral_name: disturb_nof_crosslets # pi_disturb_nof_crosslets.py - peripheral_description: "DISTURB nof crosslets." + - 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 DISTURB nof crosslets contains the number of crosslets that are being sent out the UDP offload + "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: disturb_subband_equalizer # pi_disturb_subband_equalizer.py - peripheral_description: "DISTURB Subband equalizer coefficients." + - peripheral_name: sdp_subband_equalizer # pi_sdp_subband_equalizer.py + peripheral_description: "SDP Subband equalizer coefficients." parameters: - # Parameters of pi_disturb_subband_equalizer.py, fixed in disturb_subband_equalizer.vhd / disturb_pkg.vhd + # 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 disturb_subband_equalizer.vhd + # MM port for sdp_subband_equalizer.vhd - mm_port_name: RAM_EQUALIZER_GAINS mm_port_type: RAM mm_port_span: ceil_pow2(Q_fft * N_sub) * MM_BUS_SIZE @@ -75,7 +75,7 @@ peripherals: (cint16)subband_weights[S_pn/Q_fft]_[Q_fft][N_sub] - where S_pn = 12, Q_fft = 2 and N_sub = 512 are defined in disturb_pkg.vhd." + where S_pn = 12, Q_fft = 2 and N_sub = 512 are defined in sdp_pkg.vhd." number_of_mm_ports: P_pfb fields: - - field_name: coef @@ -88,16 +88,16 @@ peripherals: radix: cint16_ir - - peripheral_name: disturb_bf_weights # pi_disturb_bf_weights.py - peripheral_description: "DISTURB Beamformer weights (= beamlet weights)." + - peripheral_name: sdp_bf_weights # pi_sdp_bf_weights.py + peripheral_description: "SDP Beamformer weights (= beamlet weights)." parameters: - # Parameters of pi_disturb_bf_weights.py, fixed in disturb_bf_weights.vhd / disturb_pkg.vhd + # Parameters of pi_sdp_bf_weights.py, fixed in sdp_bf_weights.vhd / sdp_pkg.vhd - { name: N_pol_bf, value: 2 } - { name: P_pfb, value: 6 } # P_pfb = S_pn / Q_fft = 12 / 2 = 6 - { name: Q_fft, value: 2 } - { name: S_sub_bf, value: 488 } mm_ports: - # MM port for disturb_beamformer_local.vhd / disturb_bf_weights.vhd / mms_dp_gain_serial_arr.vhd + # MM port for sdp_beamformer_local.vhd / sdp_bf_weights.vhd / mms_dp_gain_serial_arr.vhd - mm_port_name: RAM_BF_WEIGHTS mm_port_type: RAM mm_port_span: ceil_pow2(Q_fft * S_sub_bf) * MM_BUS_SIZE @@ -110,7 +110,7 @@ peripherals: (cint16)bf_weights[N_pol_bf][P_pfb]_[Q_fft][S_sub_bf] - where N_pol_bf = 2, P_pfb = 6 and Q_fft = 2 and S_sub_bf = 488, defined in disturb_pkg.vhd. + where N_pol_bf = 2, P_pfb = 6 and Q_fft = 2 and S_sub_bf = 488, defined in sdp_pkg.vhd. The pairs of Q_fft signal inputs that are multiplexed per block are mapped to the N_pol = 2 polarizations of an antenna. Therefore A_pn = P_pfb = 6 is the number dual polarization @@ -119,7 +119,7 @@ peripherals: (cint16)bf_weights[N_pol_bf][A_pn]_[N_pol][S_sub_bf] - where N_pol_bf = 2, A_pn = 6 and N_pol = 2 and S_sub_bf = 488, defined in disturb_pkg.vhd. + where N_pol_bf = 2, A_pn = 6 and N_pol = 2 and S_sub_bf = 488, defined in sdp_pkg.vhd. The BF weights can implement the full 2x2 Jones matrix for weighting and adding the signal input polarizations [x, y] per dual polarization antenna. The polarization index @@ -139,14 +139,14 @@ peripherals: radix: cint16_ir - - peripheral_name: disturb_bf_scale # pi_disturb_bf_scale.py - peripheral_description: "DISTURB BF beamlet data output scaling and requantization." + - peripheral_name: sdp_bf_scale # pi_sdp_bf_scale.py + peripheral_description: "SDP BF beamlet data output scaling and requantization." parameters: - # Parameters fixed in node_disturb_beamformer.vhd / mms_dp_scale.vhd / disturb_pkg.vhd + # Parameters fixed in node_sdp_beamformer.vhd / mms_dp_scale.vhd / sdp_pkg.vhd - { name: g_gain_w, value: 16 } - { name: g_lsb_w, value: 15 } mm_ports: - # MM port for node_disturb_beamformer.vhd / mms_dp_scale.vhd / mms_dp_gain.vhd / mms_dp_gain_arr.vhd + # MM port for node_sdp_beamformer.vhd / mms_dp_scale.vhd / mms_dp_gain.vhd / mms_dp_gain_arr.vhd - mm_port_name: REG_BF_SCALE mm_port_type: REG mm_port_span: 2 * MM_BUS_SIZE @@ -175,10 +175,10 @@ peripherals: address_offset: 0x4 - - peripheral_name: disturb_beamformer_output_hdr_dat # pi_dp_offload_tx_hdr_dat_lofar2_beamformer_output.py - peripheral_description: "DISTURB BF beamlet data output header." + - peripheral_name: sdp_beamformer_output_hdr_dat # pi_dp_offload_tx_hdr_dat_lofar2_beamformer_output.py + peripheral_description: "SDP BF beamlet data output header." mm_ports: - # MM port for disturb_beamformer_output.vhd / dp_offload_tx_v3.vhd + # MM port for sdp_beamformer_output.vhd / dp_offload_tx_v3.vhd - mm_port_name: REG_DP_OFFLOAD_TX_HDR_DAT mm_port_type: REG mm_port_span: 64 * MM_BUS_SIZE @@ -229,32 +229,32 @@ peripherals: - - { field_name: udp_length, mm_width: 16, access_mode: RW, address_offset: 0x58 } - - { field_name: udp_checksum, mm_width: 16, access_mode: RW, address_offset: 0x54 } # application field group - - - { field_name: disturb_marker, mm_width: 8, access_mode: RO, address_offset: 0x50 } - - - { field_name: disturb_version_id, mm_width: 8, access_mode: RO, address_offset: 0x4C } - - - { field_name: disturb_observation_id, mm_width: 32, access_mode: RW, address_offset: 0x48 } - - - { field_name: disturb_station_id, mm_width: 16, access_mode: RW, address_offset: 0x44 } - - - { field_name: disturb_source_info_antenna_band_index, mm_width: 1, bit_offset: 15, access_mode: RW, address_offset: 0x40 } - - - { field_name: disturb_source_info_nyquist_zone_index, mm_width: 2, bit_offset: 13, access_mode: RW, address_offset: 0x3C } - - - { field_name: disturb_source_info_f_adc, mm_width: 1, bit_offset: 12, access_mode: RW, address_offset: 0x38 } - - - { field_name: disturb_source_info_fsub_type, mm_width: 1, bit_offset: 11, access_mode: RW, address_offset: 0x34 } - - - { field_name: disturb_source_info_payload_error, mm_width: 1, bit_offset: 10, access_mode: RW, address_offset: 0x30 } - - - { field_name: disturb_source_info_repositioning_flag, mm_width: 1, bit_offset: 9, access_mode: RW, address_offset: 0x2C } - - - { field_name: disturb_source_info_beamlet_width, mm_width: 3, bit_offset: 5, access_mode: RW, address_offset: 0x28 } - - - { field_name: disturb_source_info_gn_index, mm_width: 5, bit_offset: 0, access_mode: RW, address_offset: 0x24 } - - - - { field_name: disturb_reserved, mm_width: 32, user_width: 40, radix: uint64, access_mode: RW, address_offset: 0x1C } - - - { field_name: disturb_beamlet_scale, mm_width: 16, access_mode: RW, address_offset: 0x18 } - - - { field_name: disturb_beamlet_index, mm_width: 16, access_mode: RW, address_offset: 0x14 } - - - { field_name: disturb_nof_blocks_per_packet, mm_width: 8, access_mode: RW, address_offset: 0x10 } - - - { field_name: disturb_nof_beamlets_per_block, mm_width: 16, access_mode: RW, address_offset: 0xC } - - - { field_name: disturb_block_period, mm_width: 16, access_mode: RW, address_offset: 0x8 } + - - { field_name: sdp_marker, mm_width: 8, access_mode: RO, address_offset: 0x50 } + - - { field_name: sdp_version_id, mm_width: 8, access_mode: RO, address_offset: 0x4C } + - - { field_name: sdp_observation_id, mm_width: 32, access_mode: RW, address_offset: 0x48 } + - - { field_name: sdp_station_id, mm_width: 16, access_mode: RW, address_offset: 0x44 } + - - { field_name: sdp_source_info_antenna_band_index, mm_width: 1, bit_offset: 15, access_mode: RW, address_offset: 0x40 } + - - { field_name: sdp_source_info_nyquist_zone_index, mm_width: 2, bit_offset: 13, access_mode: RW, address_offset: 0x3C } + - - { field_name: sdp_source_info_f_adc, mm_width: 1, bit_offset: 12, access_mode: RW, address_offset: 0x38 } + - - { field_name: sdp_source_info_fsub_type, mm_width: 1, bit_offset: 11, access_mode: RW, address_offset: 0x34 } + - - { field_name: sdp_source_info_payload_error, mm_width: 1, bit_offset: 10, access_mode: RW, address_offset: 0x30 } + - - { field_name: sdp_source_info_repositioning_flag, mm_width: 1, bit_offset: 9, access_mode: RW, address_offset: 0x2C } + - - { field_name: sdp_source_info_beamlet_width, mm_width: 3, bit_offset: 5, access_mode: RW, address_offset: 0x28 } + - - { field_name: sdp_source_info_gn_index, mm_width: 5, bit_offset: 0, access_mode: RW, address_offset: 0x24 } + + - - { field_name: sdp_reserved, mm_width: 32, user_width: 40, radix: uint64, access_mode: RW, address_offset: 0x1C } + - - { field_name: sdp_beamlet_scale, mm_width: 16, access_mode: RW, address_offset: 0x18 } + - - { field_name: sdp_beamlet_index, mm_width: 16, access_mode: RW, address_offset: 0x14 } + - - { field_name: sdp_nof_blocks_per_packet, mm_width: 8, access_mode: RW, address_offset: 0x10 } + - - { field_name: sdp_nof_beamlets_per_block, mm_width: 16, access_mode: RW, address_offset: 0xC } + - - { field_name: sdp_block_period, mm_width: 16, access_mode: RW, address_offset: 0x8 } - - { field_name: BSN, mm_width: 32, user_width: 64, radix: uint64, access_mode: RW, address_offset: 0x0 } - - peripheral_name: disturb_statistics_offload_hdr_dat_sst # pi_dp_offload_tx_hdr_dat_lofar2_disturb_statistics_offload.py - peripheral_description: "DISTURB statistics offload header for the subband statistics (SST)." + - peripheral_name: sdp_statistics_offload_hdr_dat_sst # pi_dp_offload_tx_hdr_dat_lofar2_sdp_statistics_offload.py + peripheral_description: "SDP statistics offload header for the subband statistics (SST)." mm_ports: - # MM port for disturb_statistics_offload.vhd / dp_offload_tx_v3.vhd + # MM port for sdp_statistics_offload.vhd / dp_offload_tx_v3.vhd - mm_port_name: REG_DP_OFFLOAD_TX_HDR_DAT mm_port_type: REG mm_port_span: 64 * MM_BUS_SIZE @@ -264,9 +264,9 @@ peripherals: The Subband statistics (SST) are integrated auto power values of the subbands per signal input. The SST specific settings are defined by data_id_sst. - The statistics offload header fields are described in ICD SC-DISTURB [1]. + The statistics offload header fields are described in ICD SC-SDP [1]. - [1] https://plm.astron.nl/polarion/#/project/LOFAR2System/wiki/L2%20Interface%20Control%20Documents/SC%20to%20DISTURB%20ICD + [1] https://plm.astron.nl/polarion/#/project/LOFAR2System/wiki/L2%20Interface%20Control%20Documents/SC%20to%20SDP%20ICD " fields: # eth field group @@ -293,37 +293,37 @@ peripherals: - - { field_name: udp_length, mm_width: 16, access_mode: RW, address_offset: 0x5C } - - { field_name: udp_checksum, mm_width: 16, access_mode: RW, address_offset: 0x58 } # application field group - - - { field_name: disturb_marker, mm_width: 8, access_mode: RO, address_offset: 0x54 } - - - { field_name: disturb_version_id, mm_width: 8, access_mode: RO, address_offset: 0x50 } - - - { field_name: disturb_observation_id, mm_width: 32, access_mode: RW, address_offset: 0x4C } - - - { field_name: disturb_station_id, mm_width: 16, access_mode: RW, address_offset: 0x48 } - - - { field_name: disturb_source_info_antenna_band_index, mm_width: 1, bit_offset: 15, access_mode: RW, address_offset: 0x44 } - - - { field_name: disturb_source_info_nyquist_zone_index, mm_width: 2, bit_offset: 13, access_mode: RW, address_offset: 0x40 } - - - { field_name: disturb_source_info_f_adc, mm_width: 1, bit_offset: 12, access_mode: RW, address_offset: 0x3C } - - - { field_name: disturb_source_info_fsub_type, mm_width: 1, bit_offset: 11, access_mode: RW, address_offset: 0x38 } - - - { field_name: disturb_source_info_payload_error, mm_width: 1, bit_offset: 10, access_mode: RW, address_offset: 0x34 } - - - { field_name: disturb_source_info_beam_repositioning_flag, mm_width: 1, bit_offset: 9, access_mode: RW, address_offset: 0x30 } - - - { field_name: disturb_source_info_weighted_subbands_flag, mm_width: 1, bit_offset: 8, access_mode: RW, address_offset: 0x2C } - - - { field_name: disturb_source_info_reserved, mm_width: 3, bit_offset: 5, access_mode: RW, address_offset: 0x28 } - - - { field_name: disturb_source_info_gn_index, mm_width: 5, bit_offset: 0, access_mode: RW, address_offset: 0x24 } - - - { field_name: disturb_reserved, mm_width: 8, access_mode: RW, address_offset: 0x20 } - - - { field_name: disturb_integration_interval, mm_width: 24, access_mode: RW, address_offset: 0x1C } - - - { field_name: disturb_data_id, mm_width: 32, access_mode: RW, address_offset: 0x18 } - - "disturb_data_id_sst": + - - { field_name: sdp_marker, mm_width: 8, access_mode: RO, address_offset: 0x54 } + - - { field_name: sdp_version_id, mm_width: 8, access_mode: RO, address_offset: 0x50 } + - - { field_name: sdp_observation_id, mm_width: 32, access_mode: RW, address_offset: 0x4C } + - - { field_name: sdp_station_id, mm_width: 16, access_mode: RW, address_offset: 0x48 } + - - { field_name: sdp_source_info_antenna_band_index, mm_width: 1, bit_offset: 15, access_mode: RW, address_offset: 0x44 } + - - { field_name: sdp_source_info_nyquist_zone_index, mm_width: 2, bit_offset: 13, access_mode: RW, address_offset: 0x40 } + - - { field_name: sdp_source_info_f_adc, mm_width: 1, bit_offset: 12, access_mode: RW, address_offset: 0x3C } + - - { field_name: sdp_source_info_fsub_type, mm_width: 1, bit_offset: 11, access_mode: RW, address_offset: 0x38 } + - - { field_name: sdp_source_info_payload_error, mm_width: 1, bit_offset: 10, access_mode: RW, address_offset: 0x34 } + - - { field_name: sdp_source_info_beam_repositioning_flag, mm_width: 1, bit_offset: 9, access_mode: RW, address_offset: 0x30 } + - - { field_name: sdp_source_info_weighted_subbands_flag, mm_width: 1, bit_offset: 8, access_mode: RW, address_offset: 0x2C } + - - { field_name: sdp_source_info_reserved, mm_width: 3, bit_offset: 5, access_mode: RW, address_offset: 0x28 } + - - { field_name: sdp_source_info_gn_index, mm_width: 5, bit_offset: 0, access_mode: RW, address_offset: 0x24 } + - - { field_name: sdp_reserved, mm_width: 8, access_mode: RW, address_offset: 0x20 } + - - { field_name: sdp_integration_interval, mm_width: 24, access_mode: RW, address_offset: 0x1C } + - - { field_name: sdp_data_id, mm_width: 32, access_mode: RW, address_offset: 0x18 } + - "sdp_data_id_sst": - { field_name: reserved, mm_width: 24, bit_offset: 8, access_mode: RW, address_offset: 0x18 } - { field_name: signal_input_index, mm_width: 8, bit_offset: 0, access_mode: RW, address_offset: 0x18 } - - - { field_name: disturb_nof_signal_inputs, mm_width: 8, access_mode: RW, address_offset: 0x14 } - - - { field_name: disturb_nof_bytes_per_statistic, mm_width: 8, access_mode: RW, address_offset: 0x10 } - - - { field_name: disturb_nof_statistics_per_packet, mm_width: 16, access_mode: RW, address_offset: 0xC } - - - { field_name: disturb_block_period, mm_width: 16, access_mode: RW, address_offset: 0x8 } + - - { field_name: sdp_nof_signal_inputs, mm_width: 8, access_mode: RW, address_offset: 0x14 } + - - { field_name: sdp_nof_bytes_per_statistic, mm_width: 8, access_mode: RW, address_offset: 0x10 } + - - { field_name: sdp_nof_statistics_per_packet, mm_width: 16, access_mode: RW, address_offset: 0xC } + - - { field_name: sdp_block_period, mm_width: 16, access_mode: RW, address_offset: 0x8 } - - { field_name: BSN, mm_width: 32, user_width: 64, radix: uint64, access_mode: RW, address_offset: 0x0 } - - peripheral_name: disturb_statistics_offload_hdr_dat_bst # pi_dp_offload_tx_hdr_dat_lofar2_disturb_statistics_offload.py - peripheral_description: "DISTURB statistics offload header for the beamlet statistics (BST)." + - peripheral_name: sdp_statistics_offload_hdr_dat_bst # pi_dp_offload_tx_hdr_dat_lofar2_sdp_statistics_offload.py + peripheral_description: "SDP statistics offload header for the beamlet statistics (BST)." mm_ports: - # MM port for disturb_statistics_offload.vhd / dp_offload_tx_v3.vhd + # MM port for sdp_statistics_offload.vhd / dp_offload_tx_v3.vhd - mm_port_name: REG_DP_OFFLOAD_TX_HDR_DAT mm_port_type: REG mm_port_span: 64 * MM_BUS_SIZE @@ -333,9 +333,9 @@ peripherals: The beamlet statistics (BST) are integrated auto power values of the beamlets per beamset The BST specific settings are defined by data_id_bst. - The statistics offload header fields are described in ICD SC-DISTURB [1]. + The statistics offload header fields are described in ICD SC-SDP [1]. - [1] https://plm.astron.nl/polarion/#/project/LOFAR2System/wiki/L2%20Interface%20Control%20Documents/SC%20to%20DISTURB%20ICD + [1] https://plm.astron.nl/polarion/#/project/LOFAR2System/wiki/L2%20Interface%20Control%20Documents/SC%20to%20SDP%20ICD " fields: # eth field group @@ -362,23 +362,23 @@ peripherals: - - { field_name: udp_length, mm_width: 16, access_mode: RW, address_offset: 0x5C } - - { field_name: udp_checksum, mm_width: 16, access_mode: RW, address_offset: 0x58 } # application field group - - - { field_name: disturb_marker, mm_width: 8, access_mode: RO, address_offset: 0x54 } - - - { field_name: disturb_version_id, mm_width: 8, access_mode: RO, address_offset: 0x50 } - - - { field_name: disturb_observation_id, mm_width: 32, access_mode: RW, address_offset: 0x4C } - - - { field_name: disturb_station_id, mm_width: 16, access_mode: RW, address_offset: 0x48 } - - - { field_name: disturb_source_info_antenna_band_index, mm_width: 1, bit_offset: 15, access_mode: RW, address_offset: 0x44 } - - - { field_name: disturb_source_info_nyquist_zone_index, mm_width: 2, bit_offset: 13, access_mode: RW, address_offset: 0x40 } - - - { field_name: disturb_source_info_f_adc, mm_width: 1, bit_offset: 12, access_mode: RW, address_offset: 0x3C } - - - { field_name: disturb_source_info_fsub_type, mm_width: 1, bit_offset: 11, access_mode: RW, address_offset: 0x38 } - - - { field_name: disturb_source_info_payload_error, mm_width: 1, bit_offset: 10, access_mode: RW, address_offset: 0x34 } - - - { field_name: disturb_source_info_beam_repositioning_flag, mm_width: 1, bit_offset: 9, access_mode: RW, address_offset: 0x30 } - - - { field_name: disturb_source_info_weighted_subbands_flag, mm_width: 1, bit_offset: 8, access_mode: RW, address_offset: 0x2C } - - - { field_name: disturb_source_info_reserved, mm_width: 3, bit_offset: 5, access_mode: RW, address_offset: 0x28 } - - - { field_name: disturb_source_info_gn_index, mm_width: 5, bit_offset: 0, access_mode: RW, address_offset: 0x24 } - - - { field_name: disturb_reserved, mm_width: 8, access_mode: RW, address_offset: 0x20 } - - - { field_name: disturb_integration_interval, mm_width: 24, access_mode: RW, address_offset: 0x1C } - - - { field_name: disturb_data_id, mm_width: 32, access_mode: RW, address_offset: 0x18 } - - "disturb_data_id_bst": + - - { field_name: sdp_marker, mm_width: 8, access_mode: RO, address_offset: 0x54 } + - - { field_name: sdp_version_id, mm_width: 8, access_mode: RO, address_offset: 0x50 } + - - { field_name: sdp_observation_id, mm_width: 32, access_mode: RW, address_offset: 0x4C } + - - { field_name: sdp_station_id, mm_width: 16, access_mode: RW, address_offset: 0x48 } + - - { field_name: sdp_source_info_antenna_band_index, mm_width: 1, bit_offset: 15, access_mode: RW, address_offset: 0x44 } + - - { field_name: sdp_source_info_nyquist_zone_index, mm_width: 2, bit_offset: 13, access_mode: RW, address_offset: 0x40 } + - - { field_name: sdp_source_info_f_adc, mm_width: 1, bit_offset: 12, access_mode: RW, address_offset: 0x3C } + - - { field_name: sdp_source_info_fsub_type, mm_width: 1, bit_offset: 11, access_mode: RW, address_offset: 0x38 } + - - { field_name: sdp_source_info_payload_error, mm_width: 1, bit_offset: 10, access_mode: RW, address_offset: 0x34 } + - - { field_name: sdp_source_info_beam_repositioning_flag, mm_width: 1, bit_offset: 9, access_mode: RW, address_offset: 0x30 } + - - { field_name: sdp_source_info_weighted_subbands_flag, mm_width: 1, bit_offset: 8, access_mode: RW, address_offset: 0x2C } + - - { field_name: sdp_source_info_reserved, mm_width: 3, bit_offset: 5, access_mode: RW, address_offset: 0x28 } + - - { field_name: sdp_source_info_gn_index, mm_width: 5, bit_offset: 0, access_mode: RW, address_offset: 0x24 } + - - { field_name: sdp_reserved, mm_width: 8, access_mode: RW, address_offset: 0x20 } + - - { field_name: sdp_integration_interval, mm_width: 24, access_mode: RW, address_offset: 0x1C } + - - { field_name: sdp_data_id, mm_width: 32, access_mode: RW, address_offset: 0x18 } + - "sdp_data_id_bst": - { field_name: reserved, mm_width: 16, bit_offset: 16, access_mode: RW, address_offset: 0x18 } - { field_name: beamlet_index, mm_width: 16, bit_offset: 0, access_mode: RW, address_offset: 0x18 } @@ -389,10 +389,10 @@ peripherals: - - { field_name: BSN, mm_width: 32, user_width: 64, radix: uint64, access_mode: RW, address_offset: 0x0 } - - peripheral_name: disturb_statistics_offload_hdr_dat_xst # pi_dp_offload_tx_hdr_dat_lofar2_disturb_statistics_offload.py - peripheral_description: "DISTURB statistics offload header for the cross-subband statistics (XST)." + - peripheral_name: sdp_statistics_offload_hdr_dat_xst # pi_dp_offload_tx_hdr_dat_lofar2_sdp_statistics_offload.py + peripheral_description: "SDP statistics offload header for the cross-subband statistics (XST)." mm_ports: - # MM port for disturb_statistics_offload.vhd / dp_offload_tx_v3.vhd + # MM port for sdp_statistics_offload.vhd / dp_offload_tx_v3.vhd - mm_port_name: REG_DP_OFFLOAD_TX_HDR_DAT mm_port_type: REG mm_port_span: 64 * MM_BUS_SIZE @@ -403,9 +403,9 @@ peripherals: pairs of signal inputs per suband. The XST specific settings are defined by data_id_xst. - The statistics offload header fields are described in ICD SC-DISTURB [1]. + The statistics offload header fields are described in ICD SC-SDP [1]. - [1] https://plm.astron.nl/polarion/#/project/LOFAR2System/wiki/L2%20Interface%20Control%20Documents/SC%20to%20DISTURB%20ICD + [1] https://plm.astron.nl/polarion/#/project/LOFAR2System/wiki/L2%20Interface%20Control%20Documents/SC%20to%20SDP%20ICD " fields: # eth field group @@ -432,23 +432,23 @@ peripherals: - - { field_name: udp_length, mm_width: 16, access_mode: RW, address_offset: 0x5C } - - { field_name: udp_checksum, mm_width: 16, access_mode: RW, address_offset: 0x58 } # application field group - - - { field_name: disturb_marker, mm_width: 8, access_mode: RO, address_offset: 0x54 } - - - { field_name: disturb_version_id, mm_width: 8, access_mode: RO, address_offset: 0x50 } - - - { field_name: disturb_observation_id, mm_width: 32, access_mode: RW, address_offset: 0x4C } - - - { field_name: disturb_station_id, mm_width: 16, access_mode: RW, address_offset: 0x48 } - - - { field_name: disturb_source_info_antenna_band_index, mm_width: 1, bit_offset: 15, access_mode: RW, address_offset: 0x44 } - - - { field_name: disturb_source_info_nyquist_zone_index, mm_width: 2, bit_offset: 13, access_mode: RW, address_offset: 0x40 } - - - { field_name: disturb_source_info_f_adc, mm_width: 1, bit_offset: 12, access_mode: RW, address_offset: 0x3C } - - - { field_name: disturb_source_info_fsub_type, mm_width: 1, bit_offset: 11, access_mode: RW, address_offset: 0x38 } - - - { field_name: disturb_source_info_payload_error, mm_width: 1, bit_offset: 10, access_mode: RW, address_offset: 0x34 } - - - { field_name: disturb_source_info_beam_repositioning_flag, mm_width: 1, bit_offset: 9, access_mode: RW, address_offset: 0x30 } - - - { field_name: disturb_source_info_weighted_subbands_flag, mm_width: 1, bit_offset: 8, access_mode: RW, address_offset: 0x2C } - - - { field_name: disturb_source_info_reserved, mm_width: 3, bit_offset: 5, access_mode: RW, address_offset: 0x28 } - - - { field_name: disturb_source_info_gn_index, mm_width: 5, bit_offset: 0, access_mode: RW, address_offset: 0x24 } - - - { field_name: disturb_reserved, mm_width: 8, access_mode: RW, address_offset: 0x20 } - - - { field_name: disturb_integration_interval, mm_width: 24, access_mode: RW, address_offset: 0x1C } - - - { field_name: disturb_data_id, mm_width: 32, access_mode: RW, address_offset: 0x18 } - - "disturb_data_id_xst": + - - { field_name: sdp_marker, mm_width: 8, access_mode: RO, address_offset: 0x54 } + - - { field_name: sdp_version_id, mm_width: 8, access_mode: RO, address_offset: 0x50 } + - - { field_name: sdp_observation_id, mm_width: 32, access_mode: RW, address_offset: 0x4C } + - - { field_name: sdp_station_id, mm_width: 16, access_mode: RW, address_offset: 0x48 } + - - { field_name: sdp_source_info_antenna_band_index, mm_width: 1, bit_offset: 15, access_mode: RW, address_offset: 0x44 } + - - { field_name: sdp_source_info_nyquist_zone_index, mm_width: 2, bit_offset: 13, access_mode: RW, address_offset: 0x40 } + - - { field_name: sdp_source_info_f_adc, mm_width: 1, bit_offset: 12, access_mode: RW, address_offset: 0x3C } + - - { field_name: sdp_source_info_fsub_type, mm_width: 1, bit_offset: 11, access_mode: RW, address_offset: 0x38 } + - - { field_name: sdp_source_info_payload_error, mm_width: 1, bit_offset: 10, access_mode: RW, address_offset: 0x34 } + - - { field_name: sdp_source_info_beam_repositioning_flag, mm_width: 1, bit_offset: 9, access_mode: RW, address_offset: 0x30 } + - - { field_name: sdp_source_info_weighted_subbands_flag, mm_width: 1, bit_offset: 8, access_mode: RW, address_offset: 0x2C } + - - { field_name: sdp_source_info_reserved, mm_width: 3, bit_offset: 5, access_mode: RW, address_offset: 0x28 } + - - { field_name: sdp_source_info_gn_index, mm_width: 5, bit_offset: 0, access_mode: RW, address_offset: 0x24 } + - - { field_name: sdp_reserved, mm_width: 8, access_mode: RW, address_offset: 0x20 } + - - { field_name: sdp_integration_interval, mm_width: 24, access_mode: RW, address_offset: 0x1C } + - - { field_name: sdp_data_id, mm_width: 32, access_mode: RW, address_offset: 0x18 } + - "sdp_data_id_xst": - { field_name: reserved, mm_width: 7, bit_offset: 25, access_mode: RW, address_offset: 0x18 } - { field_name: subband_index, mm_width: 9, bit_offset: 16, access_mode: RW, address_offset: 0x18 } - { field_name: signal_input_A_index, mm_width: 8, bit_offset: 8, access_mode: RW, address_offset: 0x18 } diff --git a/applications/disturb2/libraries/disturb/disturb.peripheral.yaml.bak b/applications/disturb2/libraries/disturb/disturb.peripheral.yaml.bak new file mode 100644 index 0000000000000000000000000000000000000000..93f17e9ce773b27f6e47fa75e9a80014a1af9853 --- /dev/null +++ b/applications/disturb2/libraries/disturb/disturb.peripheral.yaml.bak @@ -0,0 +1,461 @@ +schema_name: args +schema_version: 1.0 +schema_type: peripheral + +hdl_library_name: disturb +hdl_library_description: "Station Digital Processor (DISTURB) for LOFAR2.0" + +peripherals: + - peripheral_name: disturb_info # pi_disturb_info.py + peripheral_description: "DISTURB info." + mm_ports: + # MM port for disturb_info.vhd + - mm_port_name: REG_DISTURB_INFO + mm_port_type: REG + mm_port_span: 16 * MM_BUS_SIZE + mm_port_description: | + "The DISTURB info contains central DISTURB 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: disturb_crosslets_subband_select # pi_disturb_crosslets_info.py + peripheral_description: "DISTURB crosslets info." + mm_ports: + # MM port for disturb_info.vhd + - mm_port_name: REG_CROSSLETS_INFO + mm_port_type: REG + mm_port_span: 16 * MM_BUS_SIZE + mm_port_description: | + "The DISTURB 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: disturb_nof_crosslets # pi_disturb_nof_crosslets.py + peripheral_description: "DISTURB 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 DISTURB 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: disturb_subband_equalizer # pi_disturb_subband_equalizer.py + peripheral_description: "DISTURB Subband equalizer coefficients." + parameters: + # Parameters of pi_disturb_subband_equalizer.py, fixed in disturb_subband_equalizer.vhd / disturb_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 disturb_subband_equalizer.vhd + - mm_port_name: RAM_EQUALIZER_GAINS + mm_port_type: RAM + mm_port_span: ceil_pow2(Q_fft * N_sub) * MM_BUS_SIZE + mm_port_description: | + "The subband weigths are stored in P_pfb = S_pn / Q_fft = 6 blocks of + Q_fft * N_sub = 2 * 512 = 1024 complex coefficients as: + + (cint16)subband_weights[S_pn/Q_fft]_[Q_fft][N_sub] + + where S_pn = 12, Q_fft = 2 and N_sub = 512 are defined in disturb_pkg.vhd." + number_of_mm_ports: P_pfb + fields: + - - field_name: coef + field_description: | + "Complex coefficient to calibrate the gain and phase per subband. Packed as imaginary in high part, + real in low part of mm_width = N_complex * W_sub_weight = 2 * 16 = 32 bit." + number_of_fields: Q_fft * N_sub # = 1024 = 2 signal inputs * 512 subbands + address_offset: 0x0 + mm_width: 32 # = N_complex * W_sub_weight + radix: cint16_ir + + + - peripheral_name: disturb_bf_weights # pi_disturb_bf_weights.py + peripheral_description: "DISTURB Beamformer weights (= beamlet weights)." + parameters: + # Parameters of pi_disturb_bf_weights.py, fixed in disturb_bf_weights.vhd / disturb_pkg.vhd + - { name: N_pol_bf, value: 2 } + - { name: P_pfb, value: 6 } # P_pfb = S_pn / Q_fft = 12 / 2 = 6 + - { name: Q_fft, value: 2 } + - { name: S_sub_bf, value: 488 } + mm_ports: + # MM port for disturb_beamformer_local.vhd / disturb_bf_weights.vhd / mms_dp_gain_serial_arr.vhd + - mm_port_name: RAM_BF_WEIGHTS + mm_port_type: RAM + mm_port_span: ceil_pow2(Q_fft * S_sub_bf) * MM_BUS_SIZE + mm_port_description: | + "The beamlet weigths are stored in N_pol_bf * P_pfb = 2 * 6 = 12 instances, where + P_pfb = S_pn / Q_fft = 6. Per instance there is a block of Q_fft * S_sub_bf = + 2 * 488 = 976 complex BF weights. The N_pol_bf = 2 represents the two beamformer + polarizations, to distinguish these from the N_pol = 2 antenna polarizations. The + beamlet weigths for S_pn = P_pfb * Q_fft = 12 signal inputs are therefore defined by: + + (cint16)bf_weights[N_pol_bf][P_pfb]_[Q_fft][S_sub_bf] + + where N_pol_bf = 2, P_pfb = 6 and Q_fft = 2 and S_sub_bf = 488, defined in disturb_pkg.vhd. + + The pairs of Q_fft signal inputs that are multiplexed per block are mapped to the N_pol = 2 + polarizations of an antenna. Therefore A_pn = P_pfb = 6 is the number dual polarization + antennas per peripheral. The beamlet weigths for S_pn = A_pn * N_pol = 12 signal inputs + are therefore defined by: + + (cint16)bf_weights[N_pol_bf][A_pn]_[N_pol][S_sub_bf] + + where N_pol_bf = 2, A_pn = 6 and N_pol = 2 and S_sub_bf = 488, defined in disturb_pkg.vhd. + + The BF weights can implement the full 2x2 Jones matrix for weighting and adding the + signal input polarizations [x, y] per dual polarization antenna. The polarization index + mapping is index 0 = X and index 1 = Y. The co-polarization BF weights (XX, YY) are set + when index of N_pol_bf and index of N_pol are the same. The cross-polarization BF + weights (XY, YX) are set when index of N_pol_bf and index of N_pol are different. If + no cross-polarization weighting is needed, then these weights can be kept 0." + number_of_mm_ports: N_pol_bf * P_pfb # = 12 = 2 beam polarizations * 6 complex PFB units + fields: + - - field_name: coef + field_description: | + "Complex weight per subband. Packed as imaginary in high part, real in low part + of mm_width = N_complex * W_bf_weight = 2 * 16 = 32 bit." + number_of_fields: Q_fft * S_sub_bf # = 976 = 2 signal inputs * 488 beamlets + address_offset: 0x0 + mm_width: 32 # = N_complex * W_bf_weight + radix: cint16_ir + + + - peripheral_name: disturb_bf_scale # pi_disturb_bf_scale.py + peripheral_description: "DISTURB BF beamlet data output scaling and requantization." + parameters: + # Parameters fixed in node_disturb_beamformer.vhd / mms_dp_scale.vhd / disturb_pkg.vhd + - { name: g_gain_w, value: 16 } + - { name: g_lsb_w, value: 15 } + mm_ports: + # MM port for node_disturb_beamformer.vhd / mms_dp_scale.vhd / mms_dp_gain.vhd / mms_dp_gain_arr.vhd + - mm_port_name: REG_BF_SCALE + mm_port_type: REG + mm_port_span: 2 * MM_BUS_SIZE + mm_port_description: | + "The beamlet scale function scales the beamlet sum with a real scale factor and then + requantizes the result to beamlet data output with less bits. + The beamlet scale factor has g_gain_w bits and the value 2**g_lsb_w represents a gain of 1. + For example for g_gain_w = 16, g_lsb_w = 15, a beamlet sum of 18 bits and beamlet data + output of 8 bits, a scale value of: + . 2**g_lsb_w = 2**15 selects the lowest 8 bits of the beamlet sum and clips the highest + 10 bits, + . 2**11 rounds the lowest 4 bits, selects the next 8 bits of the beamlet sum and clips + the highest 6 bits, + . 2**5 rounds the lowest 10 bits and selects the highest 8 bits of the beamlet sum." + fields: + - - field_name: scale + field_description: "" + number_of_fields: 1 + address_offset: 0x0 + mm_width: g_gain_w + #user_width: g_gain_w # EK TODO: check parameter passing to user_width + radix: uint32 # scale factor is unsigned value + resolution_w: 0 - g_lsb_w + - - field_name: unused + field_description: "Not used." + address_offset: 0x4 + + + - peripheral_name: disturb_beamformer_output_hdr_dat # pi_dp_offload_tx_hdr_dat_lofar2_beamformer_output.py + peripheral_description: "DISTURB BF beamlet data output header." + mm_ports: + # MM port for disturb_beamformer_output.vhd / dp_offload_tx_v3.vhd + - mm_port_name: REG_DP_OFFLOAD_TX_HDR_DAT + mm_port_type: REG + mm_port_span: 64 * MM_BUS_SIZE + mm_port_description: | + "The ETH/IP/UDP/application header fields for the beamlet data output offload UDP packets. + + The header fields are described in ICD STAT-CEP [1]. + + https://plm.astron.nl/polarion/#/project/LOFAR2System/wiki/L1%20Interface%20Control%20Documents/STAT%20to%20CEP%20ICD + + From tb_dp_offload_tx_v3.vhd simulation it follows that: + . the header fields are stored in reversed address order due to that the array in VHDL has + range (h downto 0) where the first header field (eth_destination_mac) is at index h. + . the RO fields are filled in by the logic, when the packet header is transmitted, however + the read value does not still represents the MM write value, not the transmitted value. + . dp_bsn with user_width = 64 is stored as: + word byte + addr addr bits + 0 0x0 [31:0] = dp_bsn[31:0] + 1 0x4 [31:0] = dp_bsn[63:32] + . eth_dst_mac with user_width = 48 is stored as: + word byte + addr addr bits + 21 0x84 [31:0] = eth_dst_mac[31:0] + 22 0x88 [15:0] = eth_dst_mac[47:32] + " + fields: + # eth field group + - - { field_name: eth_destination_mac, mm_width: 32, user_width: 48, radix: uint64, access_mode: RW, address_offset: 0xA0 } + - - { field_name: eth_source_mac, mm_width: 32, user_width: 48, radix: uint64, access_mode: RO, address_offset: 0x98 } + - - { field_name: eth_type, mm_width: 16, access_mode: RO, address_offset: 0x94 } + # ip field group + - - { field_name: ip_version, mm_width: 4, access_mode: RW, address_offset: 0x90 } + - - { field_name: ip_header_length, mm_width: 4, access_mode: RW, address_offset: 0x8C } + - - { field_name: ip_services, mm_width: 8, access_mode: RW, address_offset: 0x88 } + - - { field_name: ip_total_length, mm_width: 16, access_mode: RW, address_offset: 0x84 } + - - { field_name: ip_identification, mm_width: 16, access_mode: RW, address_offset: 0x80 } + - - { field_name: ip_flags, mm_width: 3, access_mode: RW, address_offset: 0x7C } + - - { field_name: ip_fragment_offset, mm_width: 13, access_mode: RW, address_offset: 0x78 } + - - { field_name: ip_time_to_live, mm_width: 8, access_mode: RW, address_offset: 0x74 } + - - { field_name: ip_protocol, mm_width: 8, access_mode: RW, address_offset: 0x70 } + - - { field_name: ip_header_checksum, mm_width: 16, access_mode: RW, address_offset: 0x6C } + - - { field_name: ip_source_address, mm_width: 32, access_mode: RW, address_offset: 0x68 } + - - { field_name: ip_destination_address, mm_width: 32, access_mode: RW, address_offset: 0x64 } + # udp field group + - - { field_name: udp_source_port, mm_width: 16, access_mode: RW, address_offset: 0x60 } + - - { field_name: udp_destination_port, mm_width: 16, access_mode: RW, address_offset: 0x5C } + - - { field_name: udp_length, mm_width: 16, access_mode: RW, address_offset: 0x58 } + - - { field_name: udp_checksum, mm_width: 16, access_mode: RW, address_offset: 0x54 } + # application field group + - - { field_name: disturb_marker, mm_width: 8, access_mode: RO, address_offset: 0x50 } + - - { field_name: disturb_version_id, mm_width: 8, access_mode: RO, address_offset: 0x4C } + - - { field_name: disturb_observation_id, mm_width: 32, access_mode: RW, address_offset: 0x48 } + - - { field_name: disturb_station_id, mm_width: 16, access_mode: RW, address_offset: 0x44 } + - - { field_name: disturb_source_info_antenna_band_index, mm_width: 1, bit_offset: 15, access_mode: RW, address_offset: 0x40 } + - - { field_name: disturb_source_info_nyquist_zone_index, mm_width: 2, bit_offset: 13, access_mode: RW, address_offset: 0x3C } + - - { field_name: disturb_source_info_f_adc, mm_width: 1, bit_offset: 12, access_mode: RW, address_offset: 0x38 } + - - { field_name: disturb_source_info_fsub_type, mm_width: 1, bit_offset: 11, access_mode: RW, address_offset: 0x34 } + - - { field_name: disturb_source_info_payload_error, mm_width: 1, bit_offset: 10, access_mode: RW, address_offset: 0x30 } + - - { field_name: disturb_source_info_repositioning_flag, mm_width: 1, bit_offset: 9, access_mode: RW, address_offset: 0x2C } + - - { field_name: disturb_source_info_beamlet_width, mm_width: 3, bit_offset: 5, access_mode: RW, address_offset: 0x28 } + - - { field_name: disturb_source_info_gn_index, mm_width: 5, bit_offset: 0, access_mode: RW, address_offset: 0x24 } + + - - { field_name: disturb_reserved, mm_width: 32, user_width: 40, radix: uint64, access_mode: RW, address_offset: 0x1C } + - - { field_name: disturb_beamlet_scale, mm_width: 16, access_mode: RW, address_offset: 0x18 } + - - { field_name: disturb_beamlet_index, mm_width: 16, access_mode: RW, address_offset: 0x14 } + - - { field_name: disturb_nof_blocks_per_packet, mm_width: 8, access_mode: RW, address_offset: 0x10 } + - - { field_name: disturb_nof_beamlets_per_block, mm_width: 16, access_mode: RW, address_offset: 0xC } + - - { field_name: disturb_block_period, mm_width: 16, access_mode: RW, address_offset: 0x8 } + - - { field_name: BSN, mm_width: 32, user_width: 64, radix: uint64, access_mode: RW, address_offset: 0x0 } + + + - peripheral_name: disturb_statistics_offload_hdr_dat_sst # pi_dp_offload_tx_hdr_dat_lofar2_disturb_statistics_offload.py + peripheral_description: "DISTURB statistics offload header for the subband statistics (SST)." + mm_ports: + # MM port for disturb_statistics_offload.vhd / dp_offload_tx_v3.vhd + - mm_port_name: REG_DP_OFFLOAD_TX_HDR_DAT + mm_port_type: REG + mm_port_span: 64 * MM_BUS_SIZE + mm_port_description: | + "The ETH/IP/UDP/application header fields for the SST offload UDP packets. + + The Subband statistics (SST) are integrated auto power values of the subbands per signal input. + The SST specific settings are defined by data_id_sst. + + The statistics offload header fields are described in ICD SC-DISTURB [1]. + + [1] https://plm.astron.nl/polarion/#/project/LOFAR2System/wiki/L2%20Interface%20Control%20Documents/SC%20to%20DISTURB%20ICD + " + fields: + # eth field group + - - { field_name: word_align, mm_width: 16, access_mode: RW, address_offset: 0xAC } + - - { field_name: eth_destination_mac, mm_width: 32, user_width: 48, radix: uint64, access_mode: RW, address_offset: 0xA4 } + - - { field_name: eth_source_mac, mm_width: 32, user_width: 48, radix: uint64, access_mode: RO, address_offset: 0x9C } + - - { field_name: eth_type, mm_width: 16, access_mode: RO, address_offset: 0x98 } + # ip field group + - - { field_name: ip_version, mm_width: 4, access_mode: RW, address_offset: 0x94 } + - - { field_name: ip_header_length, mm_width: 4, access_mode: RW, address_offset: 0x90 } + - - { field_name: ip_services, mm_width: 8, access_mode: RW, address_offset: 0x8C } + - - { field_name: ip_total_length, mm_width: 16, access_mode: RW, address_offset: 0x88 } + - - { field_name: ip_identification, mm_width: 16, access_mode: RW, address_offset: 0x84 } + - - { field_name: ip_flags, mm_width: 3, access_mode: RW, address_offset: 0x80 } + - - { field_name: ip_fragment_offset, mm_width: 13, access_mode: RW, address_offset: 0x7C } + - - { field_name: ip_time_to_live, mm_width: 8, access_mode: RW, address_offset: 0x78 } + - - { field_name: ip_protocol, mm_width: 8, access_mode: RW, address_offset: 0x74 } + - - { field_name: ip_header_checksum, mm_width: 16, access_mode: RW, address_offset: 0x70 } + - - { field_name: ip_source_address, mm_width: 32, access_mode: RW, address_offset: 0x6C } + - - { field_name: ip_destination_address, mm_width: 32, access_mode: RW, address_offset: 0x68 } + # udp field group + - - { field_name: udp_source_port, mm_width: 16, access_mode: RW, address_offset: 0x64 } + - - { field_name: udp_destination_port, mm_width: 16, access_mode: RW, address_offset: 0x60 } + - - { field_name: udp_length, mm_width: 16, access_mode: RW, address_offset: 0x5C } + - - { field_name: udp_checksum, mm_width: 16, access_mode: RW, address_offset: 0x58 } + # application field group + - - { field_name: disturb_marker, mm_width: 8, access_mode: RO, address_offset: 0x54 } + - - { field_name: disturb_version_id, mm_width: 8, access_mode: RO, address_offset: 0x50 } + - - { field_name: disturb_observation_id, mm_width: 32, access_mode: RW, address_offset: 0x4C } + - - { field_name: disturb_station_id, mm_width: 16, access_mode: RW, address_offset: 0x48 } + - - { field_name: disturb_source_info_antenna_band_index, mm_width: 1, bit_offset: 15, access_mode: RW, address_offset: 0x44 } + - - { field_name: disturb_source_info_nyquist_zone_index, mm_width: 2, bit_offset: 13, access_mode: RW, address_offset: 0x40 } + - - { field_name: disturb_source_info_f_adc, mm_width: 1, bit_offset: 12, access_mode: RW, address_offset: 0x3C } + - - { field_name: disturb_source_info_fsub_type, mm_width: 1, bit_offset: 11, access_mode: RW, address_offset: 0x38 } + - - { field_name: disturb_source_info_payload_error, mm_width: 1, bit_offset: 10, access_mode: RW, address_offset: 0x34 } + - - { field_name: disturb_source_info_beam_repositioning_flag, mm_width: 1, bit_offset: 9, access_mode: RW, address_offset: 0x30 } + - - { field_name: disturb_source_info_weighted_subbands_flag, mm_width: 1, bit_offset: 8, access_mode: RW, address_offset: 0x2C } + - - { field_name: disturb_source_info_reserved, mm_width: 3, bit_offset: 5, access_mode: RW, address_offset: 0x28 } + - - { field_name: disturb_source_info_gn_index, mm_width: 5, bit_offset: 0, access_mode: RW, address_offset: 0x24 } + - - { field_name: disturb_reserved, mm_width: 8, access_mode: RW, address_offset: 0x20 } + - - { field_name: disturb_integration_interval, mm_width: 24, access_mode: RW, address_offset: 0x1C } + - - { field_name: disturb_data_id, mm_width: 32, access_mode: RW, address_offset: 0x18 } + - "disturb_data_id_sst": + - { field_name: reserved, mm_width: 24, bit_offset: 8, access_mode: RW, address_offset: 0x18 } + - { field_name: signal_input_index, mm_width: 8, bit_offset: 0, access_mode: RW, address_offset: 0x18 } + + - - { field_name: disturb_nof_signal_inputs, mm_width: 8, access_mode: RW, address_offset: 0x14 } + - - { field_name: disturb_nof_bytes_per_statistic, mm_width: 8, access_mode: RW, address_offset: 0x10 } + - - { field_name: disturb_nof_statistics_per_packet, mm_width: 16, access_mode: RW, address_offset: 0xC } + - - { field_name: disturb_block_period, mm_width: 16, access_mode: RW, address_offset: 0x8 } + - - { field_name: BSN, mm_width: 32, user_width: 64, radix: uint64, access_mode: RW, address_offset: 0x0 } + + + - peripheral_name: disturb_statistics_offload_hdr_dat_bst # pi_dp_offload_tx_hdr_dat_lofar2_disturb_statistics_offload.py + peripheral_description: "DISTURB statistics offload header for the beamlet statistics (BST)." + mm_ports: + # MM port for disturb_statistics_offload.vhd / dp_offload_tx_v3.vhd + - mm_port_name: REG_DP_OFFLOAD_TX_HDR_DAT + mm_port_type: REG + mm_port_span: 64 * MM_BUS_SIZE + mm_port_description: | + "The ETH/IP/UDP/application header fields for the BST offload UDP packets. + + The beamlet statistics (BST) are integrated auto power values of the beamlets per beamset + The BST specific settings are defined by data_id_bst. + + The statistics offload header fields are described in ICD SC-DISTURB [1]. + + [1] https://plm.astron.nl/polarion/#/project/LOFAR2System/wiki/L2%20Interface%20Control%20Documents/SC%20to%20DISTURB%20ICD + " + fields: + # eth field group + - - { field_name: word_align, mm_width: 16, access_mode: RW, address_offset: 0xAC } + - - { field_name: eth_destination_mac, mm_width: 32, user_width: 48, radix: uint64, access_mode: RW, address_offset: 0xA4 } + - - { field_name: eth_source_mac, mm_width: 32, user_width: 48, radix: uint64, access_mode: RO, address_offset: 0x9C } + - - { field_name: eth_type, mm_width: 16, access_mode: RO, address_offset: 0x98 } + # ip field group + - - { field_name: ip_version, mm_width: 4, access_mode: RW, address_offset: 0x94 } + - - { field_name: ip_header_length, mm_width: 4, access_mode: RW, address_offset: 0x90 } + - - { field_name: ip_services, mm_width: 8, access_mode: RW, address_offset: 0x8C } + - - { field_name: ip_total_length, mm_width: 16, access_mode: RW, address_offset: 0x88 } + - - { field_name: ip_identification, mm_width: 16, access_mode: RW, address_offset: 0x84 } + - - { field_name: ip_flags, mm_width: 3, access_mode: RW, address_offset: 0x80 } + - - { field_name: ip_fragment_offset, mm_width: 13, access_mode: RW, address_offset: 0x7C } + - - { field_name: ip_time_to_live, mm_width: 8, access_mode: RW, address_offset: 0x78 } + - - { field_name: ip_protocol, mm_width: 8, access_mode: RW, address_offset: 0x74 } + - - { field_name: ip_header_checksum, mm_width: 16, access_mode: RW, address_offset: 0x70 } + - - { field_name: ip_source_address, mm_width: 32, access_mode: RW, address_offset: 0x6C } + - - { field_name: ip_destination_address, mm_width: 32, access_mode: RW, address_offset: 0x68 } + # udp field group + - - { field_name: udp_source_port, mm_width: 16, access_mode: RW, address_offset: 0x64 } + - - { field_name: udp_destination_port, mm_width: 16, access_mode: RW, address_offset: 0x60 } + - - { field_name: udp_length, mm_width: 16, access_mode: RW, address_offset: 0x5C } + - - { field_name: udp_checksum, mm_width: 16, access_mode: RW, address_offset: 0x58 } + # application field group + - - { field_name: disturb_marker, mm_width: 8, access_mode: RO, address_offset: 0x54 } + - - { field_name: disturb_version_id, mm_width: 8, access_mode: RO, address_offset: 0x50 } + - - { field_name: disturb_observation_id, mm_width: 32, access_mode: RW, address_offset: 0x4C } + - - { field_name: disturb_station_id, mm_width: 16, access_mode: RW, address_offset: 0x48 } + - - { field_name: disturb_source_info_antenna_band_index, mm_width: 1, bit_offset: 15, access_mode: RW, address_offset: 0x44 } + - - { field_name: disturb_source_info_nyquist_zone_index, mm_width: 2, bit_offset: 13, access_mode: RW, address_offset: 0x40 } + - - { field_name: disturb_source_info_f_adc, mm_width: 1, bit_offset: 12, access_mode: RW, address_offset: 0x3C } + - - { field_name: disturb_source_info_fsub_type, mm_width: 1, bit_offset: 11, access_mode: RW, address_offset: 0x38 } + - - { field_name: disturb_source_info_payload_error, mm_width: 1, bit_offset: 10, access_mode: RW, address_offset: 0x34 } + - - { field_name: disturb_source_info_beam_repositioning_flag, mm_width: 1, bit_offset: 9, access_mode: RW, address_offset: 0x30 } + - - { field_name: disturb_source_info_weighted_subbands_flag, mm_width: 1, bit_offset: 8, access_mode: RW, address_offset: 0x2C } + - - { field_name: disturb_source_info_reserved, mm_width: 3, bit_offset: 5, access_mode: RW, address_offset: 0x28 } + - - { field_name: disturb_source_info_gn_index, mm_width: 5, bit_offset: 0, access_mode: RW, address_offset: 0x24 } + - - { field_name: disturb_reserved, mm_width: 8, access_mode: RW, address_offset: 0x20 } + - - { field_name: disturb_integration_interval, mm_width: 24, access_mode: RW, address_offset: 0x1C } + - - { field_name: disturb_data_id, mm_width: 32, access_mode: RW, address_offset: 0x18 } + - "disturb_data_id_bst": + - { field_name: reserved, mm_width: 16, bit_offset: 16, access_mode: RW, address_offset: 0x18 } + - { field_name: beamlet_index, mm_width: 16, bit_offset: 0, access_mode: RW, address_offset: 0x18 } + + - - { field_name: nof_signal_inputs, mm_width: 8, access_mode: RW, address_offset: 0x14 } + - - { field_name: nof_bytes_per_statistic, mm_width: 8, access_mode: RW, address_offset: 0x10 } + - - { field_name: nof_statistics_per_packet, mm_width: 16, access_mode: RW, address_offset: 0xC } + - - { field_name: block_period, mm_width: 16, access_mode: RW, address_offset: 0x8 } + - - { field_name: BSN, mm_width: 32, user_width: 64, radix: uint64, access_mode: RW, address_offset: 0x0 } + + + - peripheral_name: disturb_statistics_offload_hdr_dat_xst # pi_dp_offload_tx_hdr_dat_lofar2_disturb_statistics_offload.py + peripheral_description: "DISTURB statistics offload header for the cross-subband statistics (XST)." + mm_ports: + # MM port for disturb_statistics_offload.vhd / dp_offload_tx_v3.vhd + - mm_port_name: REG_DP_OFFLOAD_TX_HDR_DAT + mm_port_type: REG + mm_port_span: 64 * MM_BUS_SIZE + mm_port_description: | + "The ETH/IP/UDP/application header fields for the XST offload UDP packets. + + The crosslet statistics (XST) are integrated cross power values of the subbands from all + pairs of signal inputs per suband. + The XST specific settings are defined by data_id_xst. + + The statistics offload header fields are described in ICD SC-DISTURB [1]. + + [1] https://plm.astron.nl/polarion/#/project/LOFAR2System/wiki/L2%20Interface%20Control%20Documents/SC%20to%20DISTURB%20ICD + " + fields: + # eth field group + - - { field_name: word_align, mm_width: 16, access_mode: RW, address_offset: 0xAC } + - - { field_name: eth_destination_mac, mm_width: 32, user_width: 48, radix: uint64, access_mode: RW, address_offset: 0xA4 } + - - { field_name: eth_source_mac, mm_width: 32, user_width: 48, radix: uint64, access_mode: RO, address_offset: 0x9C } + - - { field_name: eth_type, mm_width: 16, access_mode: RO, address_offset: 0x98 } + # ip field group + - - { field_name: ip_version, mm_width: 4, access_mode: RW, address_offset: 0x94 } + - - { field_name: ip_header_length, mm_width: 4, access_mode: RW, address_offset: 0x90 } + - - { field_name: ip_services, mm_width: 8, access_mode: RW, address_offset: 0x8C } + - - { field_name: ip_total_length, mm_width: 16, access_mode: RW, address_offset: 0x88 } + - - { field_name: ip_identification, mm_width: 16, access_mode: RW, address_offset: 0x84 } + - - { field_name: ip_flags, mm_width: 3, access_mode: RW, address_offset: 0x80 } + - - { field_name: ip_fragment_offset, mm_width: 13, access_mode: RW, address_offset: 0x7C } + - - { field_name: ip_time_to_live, mm_width: 8, access_mode: RW, address_offset: 0x78 } + - - { field_name: ip_protocol, mm_width: 8, access_mode: RW, address_offset: 0x74 } + - - { field_name: ip_header_checksum, mm_width: 16, access_mode: RW, address_offset: 0x70 } + - - { field_name: ip_source_address, mm_width: 32, access_mode: RW, address_offset: 0x6C } + - - { field_name: ip_destination_address, mm_width: 32, access_mode: RW, address_offset: 0x68 } + # udp field group + - - { field_name: udp_source_port, mm_width: 16, access_mode: RW, address_offset: 0x64 } + - - { field_name: udp_destination_port, mm_width: 16, access_mode: RW, address_offset: 0x60 } + - - { field_name: udp_length, mm_width: 16, access_mode: RW, address_offset: 0x5C } + - - { field_name: udp_checksum, mm_width: 16, access_mode: RW, address_offset: 0x58 } + # application field group + - - { field_name: disturb_marker, mm_width: 8, access_mode: RO, address_offset: 0x54 } + - - { field_name: disturb_version_id, mm_width: 8, access_mode: RO, address_offset: 0x50 } + - - { field_name: disturb_observation_id, mm_width: 32, access_mode: RW, address_offset: 0x4C } + - - { field_name: disturb_station_id, mm_width: 16, access_mode: RW, address_offset: 0x48 } + - - { field_name: disturb_source_info_antenna_band_index, mm_width: 1, bit_offset: 15, access_mode: RW, address_offset: 0x44 } + - - { field_name: disturb_source_info_nyquist_zone_index, mm_width: 2, bit_offset: 13, access_mode: RW, address_offset: 0x40 } + - - { field_name: disturb_source_info_f_adc, mm_width: 1, bit_offset: 12, access_mode: RW, address_offset: 0x3C } + - - { field_name: disturb_source_info_fsub_type, mm_width: 1, bit_offset: 11, access_mode: RW, address_offset: 0x38 } + - - { field_name: disturb_source_info_payload_error, mm_width: 1, bit_offset: 10, access_mode: RW, address_offset: 0x34 } + - - { field_name: disturb_source_info_beam_repositioning_flag, mm_width: 1, bit_offset: 9, access_mode: RW, address_offset: 0x30 } + - - { field_name: disturb_source_info_weighted_subbands_flag, mm_width: 1, bit_offset: 8, access_mode: RW, address_offset: 0x2C } + - - { field_name: disturb_source_info_reserved, mm_width: 3, bit_offset: 5, access_mode: RW, address_offset: 0x28 } + - - { field_name: disturb_source_info_gn_index, mm_width: 5, bit_offset: 0, access_mode: RW, address_offset: 0x24 } + - - { field_name: disturb_reserved, mm_width: 8, access_mode: RW, address_offset: 0x20 } + - - { field_name: disturb_integration_interval, mm_width: 24, access_mode: RW, address_offset: 0x1C } + - - { field_name: disturb_data_id, mm_width: 32, access_mode: RW, address_offset: 0x18 } + - "disturb_data_id_xst": + - { field_name: reserved, mm_width: 7, bit_offset: 25, access_mode: RW, address_offset: 0x18 } + - { field_name: subband_index, mm_width: 9, bit_offset: 16, access_mode: RW, address_offset: 0x18 } + - { field_name: signal_input_A_index, mm_width: 8, bit_offset: 8, access_mode: RW, address_offset: 0x18 } + - { field_name: signal_input_B_index, mm_width: 8, bit_offset: 0, access_mode: RW, address_offset: 0x18 } + + - - { field_name: nof_signal_inputs, mm_width: 8, access_mode: RW, address_offset: 0x14 } + - - { field_name: nof_bytes_per_statistic, mm_width: 8, access_mode: RW, address_offset: 0x10 } + - - { field_name: nof_statistics_per_packet, mm_width: 16, access_mode: RW, address_offset: 0xC } + - - { field_name: block_period, mm_width: 16, access_mode: RW, address_offset: 0x8 } + - - { field_name: BSN, mm_width: 32, user_width: 64, radix: uint64, access_mode: RW, address_offset: 0x0 }