diff --git a/applications/lofar2/designs/lofar2_unb2b_adc/lofar2_unb2b_adc.fpga.yaml b/applications/lofar2/designs/lofar2_unb2b_adc/lofar2_unb2b_adc.fpga.yaml index f2e2c0667939a5a81e493dc9aaef0509a40bba71..373f67c336f362db51b0f2c07bb4ad4119d930d5 100644 --- a/applications/lofar2/designs/lofar2_unb2b_adc/lofar2_unb2b_adc.fpga.yaml +++ b/applications/lofar2/designs/lofar2_unb2b_adc/lofar2_unb2b_adc.fpga.yaml @@ -11,10 +11,10 @@ peripherals: # Factory / minimal (from ctrl_unb2b_board.vhd) ############################################################################# - peripheral_name: unb2b_board/system_info + lock_base_address: 0x10000 mm_port_names: - ROM_SYSTEM_INFO - PIO_SYSTEM_INFO - lock_base_address: 0x10000 - peripheral_name: unb2b_board/wdi mm_port_names: @@ -79,7 +79,7 @@ peripherals: - peripheral_name: dp/dp_bsn_source parameter_overrides: - - { name: g_nof_block_per_sync, value: 195313 } # 390625 = 2 * 195312, to have integer number of blocks in 2 s sync interval + - { name: g_nof_block_per_sync, value: 390625 } # EK: TODO temporarily use 390625 = 2 * 195312.5, to have integer number of blocks in 2 s sync interval, TODO: remove when REG_BSN_SOURCE_V2 is used mm_port_names: - REG_BSN_SOURCE diff --git a/applications/lofar2/designs/lofar2_unb2b_beamformer/lofar2_unb2b_beamformer.fpga.yaml b/applications/lofar2/designs/lofar2_unb2b_beamformer/lofar2_unb2b_beamformer.fpga.yaml index 15c8d9491520943af0974a751f9a88452407ecdf..674f5ceb675cef28356a62c13099580c279a810f 100644 --- a/applications/lofar2/designs/lofar2_unb2b_beamformer/lofar2_unb2b_beamformer.fpga.yaml +++ b/applications/lofar2/designs/lofar2_unb2b_beamformer/lofar2_unb2b_beamformer.fpga.yaml @@ -31,17 +31,17 @@ parameters: - { 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_nof_clk_per_pps, value: c_f_adc_MHz * 10**6 } # = 200000000 - - { name: c_nof_block_per_sync, value: 195313 } # TBD temporarily use 390625 = 2 * 195312, to have integer number of blocks in 2 s sync interval, TODO: remove when REG_BSN_SOURCE_V2 is used + - { name: c_nof_block_per_sync, value: 390625 } # EK: TODO temporarily use 390625 = 2 * 195312.5, to have integer number of blocks in 2 s sync interval, TODO: remove when REG_BSN_SOURCE_V2 is used 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 - lock_base_address: 0x10000 - peripheral_name: unb2b_board/wdi mm_port_names: @@ -51,39 +51,39 @@ peripherals: 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 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 mm_port_names: - REG_REMU - + ############################################################################# # AIT = ADC Input and Timing (see node_adc_input_and_timing.vhd) ############################################################################# @@ -172,9 +172,12 @@ peripherals: - peripheral_name: filter/fil_ppf_w parameter_overrides: - - { name: g_nof_taps, value: c_N_taps } - - { name: g_nof_bands, value: c_N_fft } - - { name: g_coef_dat_w, value: c_W_fir_coef } + - { name: g_fil_ppf.wb_factor, value: 1 } # process at sample rate + - { name: g_fil_ppf.nof_chan, value: 0 } # process at sample rate + - { 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 diff --git a/applications/lofar2/designs/lofar2_unb2b_beamformer/lofar2_unb2b_beamformer.mmap.gold b/applications/lofar2/designs/lofar2_unb2b_beamformer/lofar2_unb2b_beamformer.mmap.gold new file mode 100644 index 0000000000000000000000000000000000000000..c92f08599cc8e1bc8974564f4843ca59843095d4 --- /dev/null +++ b/applications/lofar2/designs/lofar2_unb2b_beamformer/lofar2_unb2b_beamformer.mmap.gold @@ -0,0 +1,474 @@ +fpga_name = lofar2_unb2b_beamformer +number_of_columns = 11 +# There can be multiple lines with a single key. The host should ignore unknown keys. +# The lines with columns follow after the number_of_columns keys. The host should ignore +# the extra columns in case the mmap contains more columns than the host expects. +# +# col 1: mm_port_name, if - then it is part of previous MM port. +# col 2: number of peripherals, if - then it is part of previous peripheral. +# col 3: number of mm_ports, if - then it is part of previous MM port. +# col 4: mm_port_type, if - then it is part of previous MM port. +# col 5: field_name +# col 6: field start address (in MM words) +# col 7: number of fields, if - then it is part of previous field_name. +# col 8: field access_mode, if - then it is part of previous field_name. +# col 9: field radix, if - then it is part of previous field_name. +# col 10: field mm_mask +# col 11: field user_mask, if - then it is same as mm_mask +# +# col1 col2 col3 col4 col5 col6 col7 col8 col9 col10 col11 +# ------------------------ ---- ---- ----- ---------------------------------------- ---------- ------ ----- ----------- ---------- ---------- + ROM_SYSTEM_INFO 1 1 RAM data 0x00000000 32768 RO char8 b[31:0] b[7:0] + PIO_SYSTEM_INFO 1 1 REG info 0x00008000 1 RO uint32 b[31:0] - + - - - - info_gn_index 0x00008000 1 RO uint32 b[7:0] - + - - - - info_hw_version 0x00008000 1 RO uint32 b[9:8] - + - - - - info_cs_sim 0x00008000 1 RO uint32 b[10:10] - + - - - - info_fw_version_major 0x00008000 1 RO uint32 b[19:16] - + - - - - info_fw_version_minor 0x00008000 1 RO uint32 b[23:20] - + - - - - info_rom_version 0x00008000 1 RO uint32 b[26:24] - + - - - - info_technology 0x00008000 1 RO uint32 b[31:27] - + - - - - use_phy 0x00008001 1 RO uint32 b[7:0] - + - - - - design_name 0x00008002 52 RO char8 b[31:0] b[7:0] + - - - - stamp_date 0x0000800f 1 RO uint32 b[31:0] - + - - - - stamp_time 0x00008010 1 RO uint32 b[31:0] - + - - - - stamp_commit 0x00008011 3 RO uint32 b[31:0] - + - - - - design_note 0x00008014 52 RO char8 b[31:0] b[7:0] + PIO_WDI 1 1 REG wdi_override 0x0000a000 1 WO uint32 b[31:0] - + REG_FPGA_TEMP_SENS 1 1 REG temp 0x0000c000 1 RO uint32 b[31:0] - + REG_FPGA_VOLTAGE_SENS 1 1 REG voltages 0x0000c000 6 RO uint32 b[31:0] - + RAM_SCRAP 1 1 RAM data 0x0000e000 512 RW uint32 b[31:0] - + AVS_ETH_0_TSE 1 1 REG status 0x00010000 1024 RO uint32 b[31:0] - + AVS_ETH_0_REG 1 1 REG status 0x00010000 12 RO uint32 b[31:0] - + AVS_ETH_0_RAM 1 1 RAM data 0x00010400 1024 RW uint32 b[31:0] - + PIO_PPS 1 1 REG capture_cnt 0x00012000 1 RO uint32 b[29:0] - + - - - - stable 0x00012000 1 RO uint32 b[30:30] - + - - - - toggle 0x00012000 1 RO uint32 b[31:31] - + - - - - expected_cnt 0x00012001 1 RW uint32 b[27:0] - + - - - - edge 0x00012001 1 RW uint32 b[31:31] - + - - - - offset_cnt 0x00012002 1 RO uint32 b[27:0] - + REG_EPCS 1 1 REG addr 0x00014000 1 WO uint32 b[23:0] - + - - - - rden 0x00014001 1 WO uint32 b[0:0] - + - - - - read_bit 0x00014002 1 WO uint32 b[0:0] - + - - - - write_bit 0x00014003 1 WO uint32 b[0:0] - + - - - - sector_erase 0x00014004 1 WO uint32 b[0:0] - + - - - - busy 0x00014005 1 RO uint32 b[0:0] - + - - - - unprotect 0x00014006 1 WO uint32 b[31:0] - + REG_DPMM_CTRL 1 1 REG rd_usedw 0x00016000 1 RO uint32 b[31:0] - + REG_DPMM_DATA 1 1 FIFO data 0x00016400 1 RO uint32 b[31:0] - + REG_MMDP_CTRL 1 1 REG wr_usedw 0x00018000 1 RO uint32 b[31:0] - + - - - - wr_availw 0x00018001 1 RO uint32 b[31:0] - + REG_MMDP_DATA 1 1 FIFO data 0x00018400 1 WO uint32 b[31:0] - + REG_REMU 1 1 REG reconfigure 0x0001a000 1 WO uint32 b[31:0] - + - - - - param 0x0001a001 1 WO uint32 b[2:0] - + - - - - read_param 0x0001a002 1 WO uint32 b[0:0] - + - - - - write_param 0x0001a003 1 WO uint32 b[0:0] - + - - - - data_out 0x0001a004 1 RO uint32 b[23:0] - + - - - - data_in 0x0001a005 1 WO uint32 b[23:0] - + - - - - busy 0x0001a006 1 RO uint32 b[0:0] - + PIO_JESD_CTRL 1 1 REG enable 0x0001c000 1 RW uint32 b[30:0] - + - - - - reset 0x0001c000 1 RW uint32 b[31:31] - + JESD204B 1 1 REG rx_dll_ctrl 0x0001e014 1 RW uint32 b[16:0] - + - - - - rx_syncn_sysref_ctrl 0x0001e015 1 RW uint32 b[24:0] - + - - - - rx_csr_sysref_always_on 0x0001e015 1 RW uint32 b[1:1] - + - - - - rx_csr_rbd_offset 0x0001e015 1 RW uint32 b[10:3] - + - - - - rx_csr_lmfc_offset 0x0001e015 1 RW uint32 b[19:12] - + - - - - rx_err0 0x0001e018 1 RW uint32 b[8:0] - + - - - - rx_err1 0x0001e019 1 RW uint32 b[9:0] - + - - - - csr_dev_syncn 0x0001e020 1 RO uint32 b[0:0] - + - - - - csr_rbd_count 0x0001e020 1 RO uint32 b[10:3] - + - - - - rx_status1 0x0001e021 1 RW uint32 b[23:0] - + - - - - rx_status2 0x0001e022 1 RW uint32 b[23:0] - + - - - - rx_status3 0x0001e023 1 RW uint32 b[7:0] - + - - - - rx_ilas_csr_l 0x0001e025 1 RW uint32 b[4:0] - + - - - - rx_ilas_csr_f 0x0001e025 1 RW uint32 b[15:8] - + - - - - rx_ilas_csr_k 0x0001e025 1 RW uint32 b[20:16] - + - - - - rx_ilas_csr_m 0x0001e025 1 RW uint32 b[31:24] - + - - - - rx_ilas_csr_n 0x0001e026 1 RW uint32 b[4:0] - + - - - - rx_ilas_csr_cs 0x0001e026 1 RW uint32 b[7:6] - + - - - - rx_ilas_csr_np 0x0001e026 1 RW uint32 b[12:8] - + - - - - rx_ilas_csr_subclassv 0x0001e026 1 RW uint32 b[15:13] - + - - - - rx_ilas_csr_s 0x0001e026 1 RW uint32 b[20:16] - + - - - - rx_ilas_csr_jesdv 0x0001e026 1 RW uint32 b[23:21] - + - - - - rx_ilas_csr_cf 0x0001e026 1 RW uint32 b[28:24] - + - - - - rx_ilas_csr_hd 0x0001e026 1 RW uint32 b[31:31] - + - - - - rx_status4 0x0001e03c 1 RW uint32 b[15:0] - + - - - - rx_status5 0x0001e03d 1 RW uint32 b[15:0] - + - - - - rx_status6 0x0001e03e 1 RW uint32 b[23:0] - + - - - - rx_status7 0x0001e03f 1 RO uint32 b[31:0] - + REG_DP_SHIFTRAM 1 12 REG shift 0x00020000 1 RW uint32 b[11:0] - + REG_BSN_SOURCE 1 1 REG dp_on 0x00022000 1 RW uint32 b[0:0] - + - - - - dp_on_pps 0x00022000 1 RW uint32 b[1:1] - + - - - - nof_block_per_sync 0x00022001 1 RW uint32 b[31:0] - + - - - - bsn 0x00022002 1 RW uint64 b[31:0] b[31:0] + - - - - - 0x00022003 - - - b[31:0] b[63:32] + REG_BSN_SCHEDULER 1 1 REG scheduled_bsn 0x00024000 1 RW uint64 b[31:0] b[31:0] + - - - - - 0x00024001 - - - b[31:0] b[63:32] + REG_BSN_MONITOR_INPUT 1 1 REG xon_stable 0x00026000 1 RO uint32 b[0:0] - + - - - - ready_stable 0x00026000 1 RO uint32 b[1:1] - + - - - - sync_timeout 0x00026000 1 RO uint32 b[2:2] - + - - - - bsn_at_sync 0x00026001 1 RO uint64 b[31:0] b[31:0] + - - - - - 0x00026002 - - - b[31:0] b[63:32] + - - - - nof_sop 0x00026003 1 RO uint32 b[31:0] - + - - - - nof_valid 0x00026004 1 RO uint32 b[31:0] - + - - - - nof_err 0x00026005 1 RO uint32 b[31:0] - + - - - - bsn_first 0x00026006 1 RO uint64 b[31:0] b[31:0] + - - - - - 0x00026007 - - - b[31:0] b[63:32] + - - - - bsn_first_cycle_cnt 0x00026008 1 RO uint32 b[31:0] - + REG_DIAG_WG 1 12 REG mode 0x00028000 1 RW uint32 b[7:0] - + - - - - nof_samples 0x00028000 1 RW uint32 b[31:16] - + - - - - phase 0x00028001 1 RW uint32 b[15:0] - + - - - - freq 0x00028002 1 RW uint32 b[30:0] - + - - - - ampl 0x00028003 1 RW uint32 b[16:0] - + RAM_DIAG_WG 1 12 RAM data 0x0002c000 1024 RW uint32 b[17:0] - + REG_ADUH_MON 1 12 REG mean_sum_lo 0x00030000 1 RO uint32 b[31:0] - + - - - - mean_sum_hi 0x00030001 1 RO uint32 b[31:0] - + - - - - power_sum_lo 0x00030002 1 RO uint32 b[31:0] - + - - - - power_sum_hi 0x00030003 1 RO uint32 b[31:0] - + REG_DIAG_DATA_BUF_BSN 1 12 REG sync_cnt 0x00032000 1 RO uint32 b[31:0] - + - - - - word_cnt 0x00032001 1 RO uint32 b[31:0] - + RAM_DIAG_DATA_BUF_BSN 1 12 RAM data 0x00034000 1024 RW uint32 b[15:0] - + REG_SI 1 1 REG enable 0x00038000 1 RW uint32 b[0:0] - + RAM_FIL_COEFS 1 16 RAM data 0x0003c000 1024 RW uint32 b[15:0] - + RAM_EQUALIZER_GAINS 1 6 RAM data 0x00040000 1024 RW cint16_ir b[31:0] - + REG_DP_SELECTOR 1 1 REG input_select 0x00042000 1 RW uint32 b[0:0] - + RAM_ST_SST 1 6 RAM data 0x00044000 2048 RW uint64 b[31:0] b[31:0] + - - - - - 0x00042001 - - - b[21:0] b[53:32] + REG_STAT_ENABLE 1 1 REG enable 0x00048000 1 RW uint32 b[0:0] - + REG_STAT_HDR_INFO 1 1 REG bsn 0x0004a000 1 RW uint64 b[31:0] b[31:0] + - - - - - 0x0004a001 - - - b[31:0] b[63:32] + - - - - block_period 0x0004a002 1 RW uint32 b[15:0] - + - - - - nof_statistics_per_packet 0x0004a003 1 RW uint32 b[15:0] - + - - - - nof_bytes_per_statistic 0x0004a004 1 RW uint32 b[7:0] - + - - - - nof_signal_inputs 0x0004a005 1 RW uint32 b[7:0] - + - - - - data_id 0x0004a006 1 RW uint32 b[31:0] - + - - - - data_id_sst_signal_input_index 0x0004a006 1 RW uint32 b[7:0] - + - - - - data_id_sst_reserved 0x0004a006 1 RW uint32 b[31:8] - + - - - - integration_interval 0x0004a007 1 RW uint32 b[23:0] - + - - - - reserved 0x0004a008 1 RW uint32 b[7:0] - + - - - - source_info 0x0004a009 1 RW uint32 b[15:0] - + - - - - source_info_gn_index 0x0004a009 1 RW uint32 b[4:0] - + - - - - source_info_reserved 0x0004a009 1 RW uint32 b[7:5] - + - - - - source_info_subband_calibrated_flag 0x0004a009 1 RW uint32 b[8:8] - + - - - - source_info_beam_repositioning_flag 0x0004a009 1 RW uint32 b[9:9] - + - - - - source_info_payload_error 0x0004a009 1 RW uint32 b[10:10] - + - - - - source_info_fsub_type 0x0004a009 1 RW uint32 b[11:11] - + - - - - source_info_f_adc 0x0004a009 1 RW uint32 b[12:12] - + - - - - source_info_nyquist_zone_index 0x0004a009 1 RW uint32 b[14:13] - + - - - - source_info_antenna_band_index 0x0004a009 1 RW uint32 b[15:15] - + - - - - station_id 0x0004a00a 1 RW uint32 b[15:0] - + - - - - observation_id 0x0004a00b 1 RW uint32 b[31:0] - + - - - - version_id 0x0004a00c 1 RO uint32 b[7:0] - + - - - - marker 0x0004a00d 1 RO uint32 b[7:0] - + - - - - udp_checksum 0x0004a00e 1 RW uint32 b[15:0] - + - - - - udp_length 0x0004a00f 1 RW uint32 b[15:0] - + - - - - udp_destination_port 0x0004a010 1 RW uint32 b[15:0] - + - - - - udp_source_port 0x0004a011 1 RW uint32 b[15:0] - + - - - - ip_destination_address 0x0004a012 1 RW uint32 b[31:0] - + - - - - ip_source_address 0x0004a013 1 RW uint32 b[31:0] - + - - - - ip_header_checksum 0x0004a014 1 RW uint32 b[15:0] - + - - - - ip_protocol 0x0004a015 1 RW uint32 b[7:0] - + - - - - ip_time_to_live 0x0004a016 1 RW uint32 b[7:0] - + - - - - ip_fragment_offset 0x0004a017 1 RW uint32 b[12:0] - + - - - - ip_flags 0x0004a018 1 RW uint32 b[2:0] - + - - - - ip_identification 0x0004a019 1 RW uint32 b[15:0] - + - - - - ip_total_length 0x0004a01a 1 RW uint32 b[15:0] - + - - - - ip_services 0x0004a01b 1 RW uint32 b[7:0] - + - - - - ip_header_length 0x0004a01c 1 RW uint32 b[3:0] - + - - - - ip_version 0x0004a01d 1 RW uint32 b[3:0] - + - - - - eth_type 0x0004a01e 1 RO uint32 b[15:0] - + - - - - eth_source_mac 0x0004a01f 1 RO uint64 b[31:0] b[31:0] + - - - - - 0x0004a020 - - - b[15:0] b[47:32] + - - - - eth_destination_mac 0x0004a021 1 RW uint64 b[31:0] b[31:0] + - - - - - 0x0004a022 - - - b[15:0] b[47:32] + - - - - word_align 0x0004a023 1 RW uint32 b[15:0] - + REG_SDP_INFO 1 1 REG station_id 0x0004c000 1 RW uint32 b[15:0] - + - - - - antenna_band_index 0x0004c001 1 RO uint32 b[0:0] - + - - - - observation_id 0x0004c002 1 RW uint32 b[31:0] - + - - - - nyquist_zone_index 0x0004c003 1 RW uint32 b[1:0] - + - - - - f_adc 0x0004c004 1 RO uint32 b[0:0] - + - - - - fsub_type 0x0004c005 1 RO uint32 b[0:0] - + - - - - beam_repositioning_flag 0x0004c006 1 RW uint32 b[0:0] - + - - - - subband_calibrated_flag 0x0004c007 1 RW uint32 b[0:0] - + - - - - o_si 0x0004c008 1 RW uint32 b[7:0] - + - - - - n_si 0x0004c009 1 RW uint32 b[7:0] - + - - - - o_rn 0x0004c00a 1 RW uint32 b[7:0] - + - - - - n_rn 0x0004c00b 1 RW uint32 b[7:0] - + - - - - block_period 0x0004c00c 1 RO uint32 b[15:0] - + - - - - beamlet_scale 0x0004c00d 1 RW uint32 b[15:0] - + RAM_SS_SS_WIDE 2 6 RAM data 0x0004e000 976 RW uint32 b[9:0] - + RAM_BF_WEIGHTS 2 12 RAM data 0x00054000 976 RW cint16_ir b[31:0] - + REG_BF_SCALE 2 1 REG scale 0x0005c000 1 RW uint32 b[15:0] - + - - - - unused 0x0005c001 1 RW uint32 b[31:0] - + REG_HDR_DAT 2 1 REG bsn 0x0005e000 1 RW uint64 b[31:0] b[31:0] + - - - - - 0x0005e001 - - - b[31:0] b[63:32] + - - - - block_period 0x0005e002 1 RW uint32 b[15:0] - + - - - - nof_beamlets_per_block 0x0005e003 1 RW uint32 b[15:0] - + - - - - nof_blocks_per_packet 0x0005e004 1 RW uint32 b[7:0] - + - - - - beamlet_index 0x0005e005 1 RW uint32 b[15:0] - + - - - - beamlet_scale 0x0005e006 1 RW uint32 b[15:0] - + - - - - reserved 0x0005e007 1 RW uint64 b[31:0] b[31:0] + - - - - - 0x0005e008 - - - b[7:0] b[39:32] + - - - - source_info 0x0005e009 1 RW uint32 b[15:0] - + - - - - source_info_gn_index 0x0005e009 1 RW uint32 b[4:0] - + - - - - source_info_beamlet_width 0x0005e009 1 RW uint32 b[7:5] - + - - - - source_info_repositioning_flag 0x0005e009 1 RW uint32 b[9:9] - + - - - - source_info_payload_error 0x0005e009 1 RW uint32 b[10:10] - + - - - - source_info_fsub_type 0x0005e009 1 RW uint32 b[11:11] - + - - - - source_info_f_adc 0x0005e009 1 RW uint32 b[12:12] - + - - - - source_info_nyquist_zone_index 0x0005e009 1 RW uint32 b[14:13] - + - - - - source_info_antenna_band_index 0x0005e009 1 RW uint32 b[15:15] - + - - - - station_id 0x0005e00a 1 RW uint32 b[15:0] - + - - - - observation_id 0x0005e00b 1 RW uint32 b[31:0] - + - - - - version_id 0x0005e00c 1 RO uint32 b[7:0] - + - - - - marker 0x0005e00d 1 RO uint32 b[7:0] - + - - - - udp_checksum 0x0005e00e 1 RW uint32 b[15:0] - + - - - - udp_length 0x0005e00f 1 RW uint32 b[15:0] - + - - - - udp_destination_port 0x0005e010 1 RW uint32 b[15:0] - + - - - - udp_source_port 0x0005e011 1 RW uint32 b[15:0] - + - - - - ip_destination_address 0x0005e012 1 RW uint32 b[31:0] - + - - - - ip_source_address 0x0005e013 1 RW uint32 b[31:0] - + - - - - ip_header_checksum 0x0005e014 1 RW uint32 b[15:0] - + - - - - ip_protocol 0x0005e015 1 RW uint32 b[7:0] - + - - - - ip_time_to_live 0x0005e016 1 RW uint32 b[7:0] - + - - - - ip_fragment_offset 0x0005e017 1 RW uint32 b[12:0] - + - - - - ip_flags 0x0005e018 1 RW uint32 b[2:0] - + - - - - ip_identification 0x0005e019 1 RW uint32 b[15:0] - + - - - - ip_total_length 0x0005e01a 1 RW uint32 b[15:0] - + - - - - ip_services 0x0005e01b 1 RW uint32 b[7:0] - + - - - - ip_header_length 0x0005e01c 1 RW uint32 b[3:0] - + - - - - ip_version 0x0005e01d 1 RW uint32 b[3:0] - + - - - - eth_type 0x0005e01e 1 RO uint32 b[15:0] - + - - - - eth_source_mac 0x0005e01f 1 RO uint64 b[31:0] b[31:0] + - - - - - 0x0005e020 - - - b[15:0] b[47:32] + - - - - eth_destination_mac 0x0005e021 1 RW uint64 b[31:0] b[31:0] + - - - - - 0x0005e022 - - - b[15:0] b[47:32] + REG_DP_XONOFF 2 1 REG enable_stream 0x00060000 1 RW uint32 b[0:0] - + RAM_ST_BST 2 1 RAM data 0x00062000 1952 RW uint64 b[31:0] b[31:0] + - - - - - 0x00060001 - - - b[21:0] b[53:32] + REG_STAT_ENABLE_BST 1 1 REG enable 0x00064000 1 RW uint32 b[0:0] - + REG_STAT_HDR_INFO_BST 1 1 REG bsn 0x00066000 1 RW uint64 b[31:0] b[31:0] + - - - - - 0x00066001 - - - b[31:0] b[63:32] + - - - - block_period 0x00066002 1 RW uint32 b[15:0] - + - - - - nof_statistics_per_packet 0x00066003 1 RW uint32 b[15:0] - + - - - - nof_bytes_per_statistic 0x00066004 1 RW uint32 b[7:0] - + - - - - nof_signal_inputs 0x00066005 1 RW uint32 b[7:0] - + - - - - data_id 0x00066006 1 RW uint32 b[31:0] - + - - - - data_id_bst_beamlet_index 0x00066006 1 RW uint32 b[15:0] - + - - - - data_id_bst_reserved 0x00066006 1 RW uint32 b[31:16] - + - - - - integration_interval 0x00066007 1 RW uint32 b[23:0] - + - - - - reserved 0x00066008 1 RW uint32 b[7:0] - + - - - - source_info 0x00066009 1 RW uint32 b[15:0] - + - - - - source_info_gn_index 0x00066009 1 RW uint32 b[4:0] - + - - - - source_info_reserved 0x00066009 1 RW uint32 b[7:5] - + - - - - source_info_subband_calibrated_flag 0x00066009 1 RW uint32 b[8:8] - + - - - - source_info_beam_repositioning_flag 0x00066009 1 RW uint32 b[9:9] - + - - - - source_info_payload_error 0x00066009 1 RW uint32 b[10:10] - + - - - - source_info_fsub_type 0x00066009 1 RW uint32 b[11:11] - + - - - - source_info_f_adc 0x00066009 1 RW uint32 b[12:12] - + - - - - source_info_nyquist_zone_index 0x00066009 1 RW uint32 b[14:13] - + - - - - source_info_antenna_band_index 0x00066009 1 RW uint32 b[15:15] - + - - - - station_id 0x0006600a 1 RW uint32 b[15:0] - + - - - - observation_id 0x0006600b 1 RW uint32 b[31:0] - + - - - - version_id 0x0006600c 1 RO uint32 b[7:0] - + - - - - marker 0x0006600d 1 RO uint32 b[7:0] - + - - - - udp_checksum 0x0006600e 1 RW uint32 b[15:0] - + - - - - udp_length 0x0006600f 1 RW uint32 b[15:0] - + - - - - udp_destination_port 0x00066010 1 RW uint32 b[15:0] - + - - - - udp_source_port 0x00066011 1 RW uint32 b[15:0] - + - - - - ip_destination_address 0x00066012 1 RW uint32 b[31:0] - + - - - - ip_source_address 0x00066013 1 RW uint32 b[31:0] - + - - - - ip_header_checksum 0x00066014 1 RW uint32 b[15:0] - + - - - - ip_protocol 0x00066015 1 RW uint32 b[7:0] - + - - - - ip_time_to_live 0x00066016 1 RW uint32 b[7:0] - + - - - - ip_fragment_offset 0x00066017 1 RW uint32 b[12:0] - + - - - - ip_flags 0x00066018 1 RW uint32 b[2:0] - + - - - - ip_identification 0x00066019 1 RW uint32 b[15:0] - + - - - - ip_total_length 0x0006601a 1 RW uint32 b[15:0] - + - - - - ip_services 0x0006601b 1 RW uint32 b[7:0] - + - - - - ip_header_length 0x0006601c 1 RW uint32 b[3:0] - + - - - - ip_version 0x0006601d 1 RW uint32 b[3:0] - + - - - - eth_type 0x0006601e 1 RO uint32 b[15:0] - + - - - - eth_source_mac 0x0006601f 1 RO uint64 b[31:0] b[31:0] + - - - - - 0x00066020 - - - b[15:0] b[47:32] + - - - - eth_destination_mac 0x00066021 1 RW uint64 b[31:0] b[31:0] + - - - - - 0x00066022 - - - b[15:0] b[47:32] + - - - - word_align 0x00066023 1 RW uint32 b[15:0] - + REG_NW_10GBE_MAC 1 1 REG rx_transfer_control 0x00068000 1 RW uint32 b[0:0] - + - - - - rx_transfer_status 0x00068001 1 RO uint32 b[0:0] - + - - - - tx_transfer_control 0x00068002 1 RW uint32 b[0:0] - + - - - - rx_padcrc_control 0x00068040 1 RW uint32 b[1:0] - + - - - - rx_crccheck_control 0x00068080 1 RW uint32 b[1:0] - + - - - - rx_pktovrflow_error 0x000680c0 1 RO uint64 b[3:0] b[35:32] + - - - - - 0x000680c1 - - - b[31:0] b[31:0] + - - - - rx_pktovrflow_etherstatsdropevents 0x000680c2 1 RO uint64 b[3:0] b[35:32] + - - - - - 0x000680c3 - - - b[31:0] b[31:0] + - - - - rx_lane_decoder_preamble_control 0x00068100 1 RW uint32 b[0:0] - + - - - - rx_preamble_inserter_control 0x00068140 1 RW uint32 b[0:0] - + - - - - rx_frame_control 0x00068800 1 RW uint32 b[19:0] - + - - - - rx_frame_maxlength 0x00068801 1 RW uint32 b[15:0] - + - - - - rx_frame_addr0 0x00068802 1 RW uint32 b[15:0] - + - - - - rx_frame_addr1 0x00068803 1 RW uint32 b[15:0] - + - - - - rx_frame_spaddr0_0 0x00068804 1 RW uint32 b[15:0] - + - - - - rx_frame_spaddr0_1 0x00068805 1 RW uint32 b[15:0] - + - - - - rx_frame_spaddr1_0 0x00068806 1 RW uint32 b[15:0] - + - - - - rx_frame_spaddr1_1 0x00068807 1 RW uint32 b[15:0] - + - - - - rx_frame_spaddr2_0 0x00068808 1 RW uint32 b[15:0] - + - - - - rx_frame_spaddr2_1 0x00068809 1 RW uint32 b[15:0] - + - - - - rx_frame_spaddr3_0 0x0006880a 1 RW uint32 b[15:0] - + - - - - rx_frame_spaddr3_1 0x0006880b 1 RW uint32 b[15:0] - + - - - - rx_pfc_control 0x00068818 1 RW uint32 b[16:0] - + - - - - rx_stats_clr 0x00068c00 1 RW uint32 b[0:0] - + - - - - rx_stats_framesok 0x00068c02 1 RO uint64 b[3:0] b[35:32] + - - - - - 0x00068c03 - - - b[31:0] b[31:0] + - - - - rx_stats_frameserr 0x00068c04 1 RO uint64 b[3:0] b[35:32] + - - - - - 0x00068c05 - - - b[31:0] b[31:0] + - - - - rx_stats_framescrcerr 0x00068c06 1 RO uint64 b[3:0] b[35:32] + - - - - - 0x00068c07 - - - b[31:0] b[31:0] + - - - - rx_stats_octetsok 0x00068c08 1 RO uint64 b[3:0] b[35:32] + - - - - - 0x00068c09 - - - b[31:0] b[31:0] + - - - - rx_stats_pausemacctrl_frames 0x00068c0a 1 RO uint64 b[3:0] b[35:32] + - - - - - 0x00068c0b - - - b[31:0] b[31:0] + - - - - rx_stats_iferrors 0x00068c0c 1 RO uint64 b[3:0] b[35:32] + - - - - - 0x00068c0d - - - b[31:0] b[31:0] + - - - - rx_stats_unicast_framesok 0x00068c0e 1 RO uint64 b[3:0] b[35:32] + - - - - - 0x00068c0f - - - b[31:0] b[31:0] + - - - - rx_stats_unicast_frameserr 0x00068c10 1 RO uint64 b[3:0] b[35:32] + - - - - - 0x00068c11 - - - b[31:0] b[31:0] + - - - - rx_stats_multicastframesok 0x00068c12 1 RO uint64 b[3:0] b[35:32] + - - - - - 0x00068c13 - - - b[31:0] b[31:0] + - - - - rx_stats_multicast_frameserr 0x00068c14 1 RO uint64 b[3:0] b[35:32] + - - - - - 0x00068c15 - - - b[31:0] b[31:0] + - - - - rx_stats_broadcastframesok 0x00068c16 1 RO uint64 b[3:0] b[35:32] + - - - - - 0x00068c17 - - - b[31:0] b[31:0] + - - - - rx_stats_broadcast_frameserr 0x00068c18 1 RO uint64 b[3:0] b[35:32] + - - - - - 0x00068c19 - - - b[31:0] b[31:0] + - - - - rx_stats_etherstatsoctets 0x00068c1a 1 RO uint64 b[3:0] b[35:32] + - - - - - 0x00068c1b - - - b[31:0] b[31:0] + - - - - rx_stats_etherstatspkts 0x00068c1c 1 RO uint64 b[3:0] b[35:32] + - - - - - 0x00068c1d - - - b[31:0] b[31:0] + - - - - rx_stats_etherstats_undersizepkts 0x00068c1e 1 RO uint64 b[3:0] b[35:32] + - - - - - 0x00068c1f - - - b[31:0] b[31:0] + - - - - rx_stats_etherstats_oversizepkts 0x00068c20 1 RO uint64 b[3:0] b[35:32] + - - - - - 0x00068c21 - - - b[31:0] b[31:0] + - - - - rx_stats_etherstats_pkts64octets 0x00068c22 1 RO uint64 b[3:0] b[35:32] + - - - - - 0x00068c23 - - - b[31:0] b[31:0] + - - - - rx_stats_etherstats_pkts65to127octets 0x00068c24 1 RO uint64 b[3:0] b[35:32] + - - - - - 0x00068c25 - - - b[31:0] b[31:0] + - - - - rx_stats_etherstats_pkts128to255octets 0x00068c26 1 RO uint64 b[3:0] b[35:32] + - - - - - 0x00068c27 - - - b[31:0] b[31:0] + - - - - rx_stats_etherstats_pkts256to511octets 0x00068c28 1 RO uint64 b[3:0] b[35:32] + - - - - - 0x00068c29 - - - b[31:0] b[31:0] + - - - - rx_stats_etherstats_pkts512to1023octets 0x00068c2a 1 RO uint64 b[3:0] b[35:32] + - - - - - 0x00068c2b - - - b[31:0] b[31:0] + - - - - rx_stats_etherstat_pkts1024to1518octets 0x00068c2c 1 RO uint64 b[3:0] b[35:32] + - - - - - 0x00068c2d - - - b[31:0] b[31:0] + - - - - rx_stats_etherstats_pkts1519toxoctets 0x00068c2e 1 RO uint64 b[3:0] b[35:32] + - - - - - 0x00068c2f - - - b[31:0] b[31:0] + - - - - rx_stats_etherstats_fragments 0x00068c30 1 RO uint64 b[3:0] b[35:32] + - - - - - 0x00068c31 - - - b[31:0] b[31:0] + - - - - rx_stats_etherstats_jabbers 0x00068c32 1 RO uint64 b[3:0] b[35:32] + - - - - - 0x00068c33 - - - b[31:0] b[31:0] + - - - - rx_stats_etherstatscrcerr 0x00068c34 1 RO uint64 b[3:0] b[35:32] + - - - - - 0x00068c35 - - - b[31:0] b[31:0] + - - - - rx_stats_unicastmacctrlframes 0x00068c36 1 RO uint64 b[3:0] b[35:32] + - - - - - 0x00068c37 - - - b[31:0] b[31:0] + - - - - rx_stats_multicastmac_ctrlframes 0x00068c38 1 RO uint64 b[3:0] b[35:32] + - - - - - 0x00068c39 - - - b[31:0] b[31:0] + - - - - rx_stats_broadcastmac_ctrlframes 0x00068c3a 1 RO uint64 b[3:0] b[35:32] + - - - - - 0x00068c3b - - - b[31:0] b[31:0] + - - - - rx_stats_pfcmacctrlframes 0x00068c3c 1 RO uint64 b[3:0] b[35:32] + - - - - - 0x00068c3d - - - b[31:0] b[31:0] + - - - - tx_transfer_status 0x00069001 1 RO uint32 b[0:0] - + - - - - tx_padins_control 0x00069040 1 RW uint32 b[0:0] - + - - - - tx_crcins_control 0x00069080 1 RW uint32 b[1:0] - + - - - - tx_pktunderflow_error 0x000690c0 1 RO uint64 b[3:0] b[35:32] + - - - - - 0x000690c1 - - - b[31:0] b[31:0] + - - - - tx_preamble_control 0x00069100 1 RW uint32 b[0:0] - + - - - - tx_pauseframe_control 0x00069140 1 RW uint32 b[1:0] - + - - - - tx_pauseframe_quanta 0x00069141 1 RW uint32 b[15:0] - + - - - - tx_pauseframe_enable 0x00069142 1 RW uint32 b[0:0] - + - - - - pfc_pause_quanta_0 0x00069180 1 RW uint32 b[31:0] - + - - - - pfc_pause_quanta_1 0x00069181 1 RW uint32 b[31:0] - + - - - - pfc_pause_quanta_2 0x00069182 1 RW uint32 b[31:0] - + - - - - pfc_pause_quanta_3 0x00069183 1 RW uint32 b[31:0] - + - - - - pfc_pause_quanta_4 0x00069184 1 RW uint32 b[31:0] - + - - - - pfc_pause_quanta_5 0x00069185 1 RW uint32 b[31:0] - + - - - - pfc_pause_quanta_6 0x00069186 1 RW uint32 b[31:0] - + - - - - pfc_pause_quanta_7 0x00069187 1 RW uint32 b[31:0] - + - - - - pfc_holdoff_quanta_0 0x00069190 1 RW uint32 b[31:0] - + - - - - pfc_holdoff_quanta_1 0x00069191 1 RW uint32 b[31:0] - + - - - - pfc_holdoff_quanta_2 0x00069192 1 RW uint32 b[31:0] - + - - - - pfc_holdoff_quanta_3 0x00069193 1 RW uint32 b[31:0] - + - - - - pfc_holdoff_quanta_4 0x00069194 1 RW uint32 b[31:0] - + - - - - pfc_holdoff_quanta_5 0x00069195 1 RW uint32 b[31:0] - + - - - - pfc_holdoff_quanta_6 0x00069196 1 RW uint32 b[31:0] - + - - - - pfc_holdoff_quanta_7 0x00069197 1 RW uint32 b[31:0] - + - - - - tx_pfc_priority_enable 0x000691a0 1 RW uint32 b[7:0] - + - - - - tx_addrins_control 0x00069200 1 RW uint32 b[0:0] - + - - - - tx_addrins_macaddr0 0x00069201 1 RW uint32 b[31:0] - + - - - - tx_addrins_macaddr1 0x00069202 1 RW uint32 b[15:0] - + - - - - tx_frame_maxlength 0x00069801 1 RW uint32 b[15:0] - + - - - - tx_stats_clr 0x00069c00 1 RW uint32 b[0:0] - + - - - - tx_stats_framesok 0x00069c02 1 RO uint64 b[3:0] b[35:32] + - - - - - 0x00069c03 - - - b[31:0] b[31:0] + - - - - tx_stats_frameserr 0x00069c04 1 RO uint64 b[3:0] b[35:32] + - - - - - 0x00069c05 - - - b[31:0] b[31:0] + - - - - tx_stats_framescrcerr 0x00069c06 1 RO uint64 b[3:0] b[35:32] + - - - - - 0x00069c07 - - - b[31:0] b[31:0] + - - - - tx_stats_octetsok 0x00069c08 1 RO uint64 b[3:0] b[35:32] + - - - - - 0x00069c09 - - - b[31:0] b[31:0] + - - - - tx_stats_pausemacctrl_frames 0x00069c0a 1 RO uint64 b[3:0] b[35:32] + - - - - - 0x00069c0b - - - b[31:0] b[31:0] + - - - - tx_stats_iferrors 0x00069c0c 1 RO uint64 b[3:0] b[35:32] + - - - - - 0x00069c0d - - - b[31:0] b[31:0] + - - - - tx_stats_unicast_framesok 0x00069c0e 1 RO uint64 b[3:0] b[35:32] + - - - - - 0x00069c0f - - - b[31:0] b[31:0] + - - - - tx_stats_unicast_frameserr 0x00069c10 1 RO uint64 b[3:0] b[35:32] + - - - - - 0x00069c11 - - - b[31:0] b[31:0] + - - - - tx_stats_multicastframesok 0x00069c12 1 RO uint64 b[3:0] b[35:32] + - - - - - 0x00069c13 - - - b[31:0] b[31:0] + - - - - tx_stats_multicast_frameserr 0x00069c14 1 RO uint64 b[3:0] b[35:32] + - - - - - 0x00069c15 - - - b[31:0] b[31:0] + - - - - tx_stats_broadcastframesok 0x00069c16 1 RO uint64 b[3:0] b[35:32] + - - - - - 0x00069c17 - - - b[31:0] b[31:0] + - - - - tx_stats_broadcast_frameserr 0x00069c18 1 RO uint64 b[3:0] b[35:32] + - - - - - 0x00069c19 - - - b[31:0] b[31:0] + - - - - tx_stats_etherstatsoctets 0x00069c1a 1 RO uint64 b[3:0] b[35:32] + - - - - - 0x00069c1b - - - b[31:0] b[31:0] + - - - - tx_stats_etherstatspkts 0x00069c1c 1 RO uint64 b[3:0] b[35:32] + - - - - - 0x00069c1d - - - b[31:0] b[31:0] + - - - - tx_stats_etherstats_undersizepkts 0x00069c1e 1 RO uint64 b[3:0] b[35:32] + - - - - - 0x00069c1f - - - b[31:0] b[31:0] + - - - - tx_stats_etherstats_oversizepkts 0x00069c20 1 RO uint64 b[3:0] b[35:32] + - - - - - 0x00069c21 - - - b[31:0] b[31:0] + - - - - tx_stats_etherstats_pkts64octets 0x00069c22 1 RO uint64 b[3:0] b[35:32] + - - - - - 0x00069c23 - - - b[31:0] b[31:0] + - - - - tx_stats_etherstats_pkts65to127octets 0x00069c24 1 RO uint64 b[3:0] b[35:32] + - - - - - 0x00069c25 - - - b[31:0] b[31:0] + - - - - tx_stats_etherstats_pkts128to255octets 0x00069c26 1 RO uint64 b[3:0] b[35:32] + - - - - - 0x00069c27 - - - b[31:0] b[31:0] + - - - - tx_stats_etherstats_pkts256to511octets 0x00069c28 1 RO uint64 b[3:0] b[35:32] + - - - - - 0x00069c29 - - - b[31:0] b[31:0] + - - - - tx_stats_etherstats_pkts512to1023octets 0x00069c2a 1 RO uint64 b[3:0] b[35:32] + - - - - - 0x00069c2b - - - b[31:0] b[31:0] + - - - - tx_stats_etherstat_pkts1024to1518octets 0x00069c2c 1 RO uint64 b[3:0] b[35:32] + - - - - - 0x00069c2d - - - b[31:0] b[31:0] + - - - - tx_stats_etherstats_pkts1519toxoctets 0x00069c2e 1 RO uint64 b[3:0] b[35:32] + - - - - - 0x00069c2f - - - b[31:0] b[31:0] + - - - - tx_stats_etherstats_fragments 0x00069c30 1 RO uint64 b[3:0] b[35:32] + - - - - - 0x00069c31 - - - b[31:0] b[31:0] + - - - - tx_stats_etherstats_jabbers 0x00069c32 1 RO uint64 b[3:0] b[35:32] + - - - - - 0x00069c33 - - - b[31:0] b[31:0] + - - - - tx_stats_etherstatscrcerr 0x00069c34 1 RO uint64 b[3:0] b[35:32] + - - - - - 0x00069c35 - - - b[31:0] b[31:0] + - - - - tx_stats_unicastmacctrlframes 0x00069c36 1 RO uint64 b[3:0] b[35:32] + - - - - - 0x00069c37 - - - b[31:0] b[31:0] + - - - - tx_stats_multicastmac_ctrlframes 0x00069c38 1 RO uint64 b[3:0] b[35:32] + - - - - - 0x00069c39 - - - b[31:0] b[31:0] + - - - - tx_stats_broadcastmac_ctrlframes 0x00069c3a 1 RO uint64 b[3:0] b[35:32] + - - - - - 0x00069c3b - - - b[31:0] b[31:0] + - - - - tx_stats_pfcmacctrlframes 0x00069c3c 1 RO uint64 b[3:0] b[35:32] + - - - - - 0x00069c3d - - - b[31:0] b[31:0] + REG_NW_10GBE_ETH10G 1 1 REG tx_snk_out_xon 0x0006a000 1 RO uint32 b[0:0] - + - - - - xgmii_tx_ready 0x0006a000 1 RO uint32 b[1:1] - + - - - - xgmii_link_status 0x0006a000 1 RO uint32 b[3:2] - \ No newline at end of file diff --git a/applications/lofar2/designs/lofar2_unb2b_filterbank/lofar2_unb2b_filterbank.fpga.yaml b/applications/lofar2/designs/lofar2_unb2b_filterbank/lofar2_unb2b_filterbank.fpga.yaml index 8913b3d218334598cac6e04fa4428ffba9c867ed..b9b96a2c4acb2059c6cce74b2e31e4453fbb1031 100644 --- a/applications/lofar2/designs/lofar2_unb2b_filterbank/lofar2_unb2b_filterbank.fpga.yaml +++ b/applications/lofar2/designs/lofar2_unb2b_filterbank/lofar2_unb2b_filterbank.fpga.yaml @@ -11,10 +11,10 @@ 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 - lock_base_address: 0x10000 - peripheral_name: unb2b_board/wdi mm_port_names: @@ -79,7 +79,7 @@ peripherals: - peripheral_name: dp/dp_bsn_source parameter_overrides: - - { name: g_nof_block_per_sync, value: 195313 } # 390625 = 2 * 195312, to have integer number of blocks in 2 s sync interval + - { name: g_nof_block_per_sync, value: 390625 } # EK: TODO temporarily use 390625 = 2 * 195312.5, to have integer number of blocks in 2 s sync interval, TODO: remove when REG_BSN_SOURCE_V2 is used mm_port_names: - REG_BSN_SOURCE @@ -145,13 +145,15 @@ peripherals: - peripheral_name: filter/fil_ppf_w parameter_overrides: - - { name: g_wb_factor, value: 1 } - - { name: g_nof_taps, value: 16 } # = N_taps - - { name: g_nof_bands, value: 1024 } # = N_fft - - { name: g_coef_dat_w, value: 16 } # = W_fir_coef + - { name: g_fil_ppf.wb_factor, value: 1 } # process at sample rate + - { name: g_fil_ppf.nof_chan, value: 0 } # process at sample rate + - { name: g_fil_ppf.nof_bands, value: 1024 } # = N_fft + - { name: g_fil_ppf.nof_taps, value: 16 } # = N_taps + - { name: g_fil_ppf.nof_streams, value: 1 } + - { name: g_fil_ppf.coef_dat_w, value: 16 } # = W_fir_coef mm_port_names: - RAM_FIL_COEFS - + - peripheral_name: sdp/sdp_subband_equalizer mm_port_names: - RAM_EQUALIZER_GAINS diff --git a/applications/lofar2/libraries/sdp/sdp.peripheral.yaml b/applications/lofar2/libraries/sdp/sdp.peripheral.yaml index dc9b8b805a4c6f04e9da0b69b7b019340f280c6d..166db254179b429d95f53754422cea9b4f937c21 100644 --- a/applications/lofar2/libraries/sdp/sdp.peripheral.yaml +++ b/applications/lofar2/libraries/sdp/sdp.peripheral.yaml @@ -11,26 +11,26 @@ peripherals: mm_ports: # MM port for sdp_info.vhd - mm_port_name: REG_SDP_INFO + mm_port_type: REG 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." - mm_port_type: REG fields: - - - { field_name: station_id, width: 16, access_mode: RW, address_offset: 0x0 } - - - { field_name: antenna_band_index, width: 1, access_mode: RO, address_offset: 0x4 } - - - { field_name: observation_id, width: 32, access_mode: RW, address_offset: 0x8 } - - - { field_name: nyquist_zone_index, width: 2, access_mode: RW, address_offset: 0xC } - - - { field_name: f_adc, width: 1, access_mode: RO, address_offset: 0x10 } - - - { field_name: fsub_type, width: 1, access_mode: RO, address_offset: 0x14 } - - - { field_name: beam_repositioning_flag, width: 1, access_mode: RW, address_offset: 0x18 } - - - { field_name: subband_calibrated_flag, width: 1, access_mode: RW, address_offset: 0x1C } - - - { field_name: O_si, width: 8, access_mode: RW, address_offset: 0x20 } - - - { field_name: N_si, width: 8, access_mode: RW, address_offset: 0x24 } - - - { field_name: O_rn, width: 8, access_mode: RW, address_offset: 0x28 } - - - { field_name: N_rn, width: 8, access_mode: RW, address_offset: 0x2C } - - - { field_name: block_period, width: 16, access_mode: RO, address_offset: 0x30 } - - - { field_name: beamlet_scale, width: 16, access_mode: RW, address_offset: 0x34 } + - - { field_name: station_id, mm_width: 16, access_mode: RW, address_offset: 0x0 } + - - { field_name: antenna_band_index, mm_width: 1, access_mode: RO, address_offset: 0x4 } + - - { field_name: observation_id, mm_width: 32, access_mode: RW, address_offset: 0x8 } + - - { field_name: nyquist_zone_index, mm_width: 2, access_mode: RW, address_offset: 0xC } + - - { field_name: f_adc, mm_width: 1, access_mode: RO, address_offset: 0x10 } + - - { field_name: fsub_type, mm_width: 1, access_mode: RO, address_offset: 0x14 } + - - { field_name: beam_repositioning_flag, mm_width: 1, access_mode: RW, address_offset: 0x18 } + - - { field_name: subband_calibrated_flag, mm_width: 1, access_mode: RW, address_offset: 0x1C } + - - { field_name: O_si, mm_width: 8, access_mode: RW, address_offset: 0x20 } + - - { field_name: N_si, mm_width: 8, access_mode: RW, address_offset: 0x24 } + - - { field_name: O_rn, mm_width: 8, access_mode: RW, address_offset: 0x28 } + - - { field_name: N_rn, mm_width: 8, access_mode: RW, address_offset: 0x2C } + - - { field_name: block_period, mm_width: 16, access_mode: RO, address_offset: 0x30 } + - - { field_name: beamlet_scale, mm_width: 16, access_mode: RW, address_offset: 0x34 } - peripheral_name: sdp_subband_equalizer # pi_sdp_subband_equalizer.py @@ -41,6 +41,7 @@ peripherals: mm_ports: # MM port for sdp_subband_equalizer.vhd - mm_port_name: RAM_EQUALIZER_GAINS + mm_port_type: RAM mm_port_description: | "The subband weigths are stored in g_nof_instances = P_pfb = S_pn / Q_fft = 6 blocks of Q_fft * N_sub = 2 * 512 = 1024 complex coefficients as: @@ -48,17 +49,16 @@ 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 sdp_pkg.vhd." - mm_port_type: RAM number_of_mm_ports: g_nof_instances 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 width = N_complex * W_sub_weight = 2 * 16 = 32 bit." - width: 32 # = N_complex * W_sub_weight - address_offset: 0x0 + real in low part of mm_width = N_complex * W_sub_weight = 2 * 16 = 32 bit." number_of_fields: 1024 # = Q_fft * N_sub = 2 signal inputs * 512 subbands - radix: complx + address_offset: 0x0 + mm_width: 32 # = N_complex * W_sub_weight + radix: cint16_ir - peripheral_name: sdp_bf_weights # pi_sdp_bf_weights.py @@ -70,6 +70,7 @@ peripherals: mm_ports: # 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_description: | "The beamlet weigths are stored in g_nof_instances = N_pol_bf * P_pfb = 2 * 6 = 12, where P_pfb = S_pn / Q_fft = 6. Per instance there is a block of Q_fft * S_sub_bf = @@ -96,17 +97,16 @@ peripherals: 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." - mm_port_type: RAM number_of_mm_ports: g_nof_instances fields: - - field_name: coef field_description: | "Complex weight per subband. Packed as imaginary in high part, real in low part - of width = N_complex * W_bf_weight = 2 * 16 = 32 bit." - width: 32 # = N_complex * W_bf_weight - address_offset: 0x0 + of mm_width = N_complex * W_bf_weight = 2 * 16 = 32 bit." number_of_fields: g_nof_gains - radix: complx + address_offset: 0x0 + mm_width: 32 # = N_complex * W_bf_weight + radix: cint16_ir - peripheral_name: sdp_bf_scale # pi_sdp_bf_scale.py @@ -118,6 +118,7 @@ peripherals: mm_ports: # 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_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. @@ -129,16 +130,15 @@ peripherals: . 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." - mm_port_type: REG fields: - - field_name: scale field_description: "" - width: g_gain_w - address_offset: 0x0 number_of_fields: 1 - radix: unsigned - #radix_width: g_gain_w - radix_resolution: 0 - g_lsb_w + 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 @@ -149,6 +149,7 @@ peripherals: mm_ports: # 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_description: | "The ETH/IP/UDP/application header fields for the beamlet data output offload UDP packets. @@ -161,64 +162,63 @@ peripherals: 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 radix_width = 64 is stored as: + . 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 radix_width = 48 is stored as: + . 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] " - mm_port_type: REG fields: # eth field group - - - { field_name: eth_destination_mac, width: 32, access_mode: RW, address_offset: 0x84, radix_width: 48 } - - - { field_name: eth_source_mac, width: 32, access_mode: RO, address_offset: 0x7C, radix_width: 48 } - - - { field_name: eth_type, width: 16, access_mode: RO, address_offset: 0x78 } + - - { field_name: eth_destination_mac, mm_width: 32, user_width: 48, radix: uint64, access_mode: RW, address_offset: 0x84 } + - - { field_name: eth_source_mac, mm_width: 32, user_width: 48, radix: uint64, access_mode: RO, address_offset: 0x7C } + - - { field_name: eth_type, mm_width: 16, access_mode: RO, address_offset: 0x78 } # ip field group - - - { field_name: ip_version, width: 4, access_mode: RW, address_offset: 0x74 } - - - { field_name: ip_header_length, width: 4, access_mode: RW, address_offset: 0x70 } - - - { field_name: ip_services, width: 8, access_mode: RW, address_offset: 0x6C } - - - { field_name: ip_total_length, width: 16, access_mode: RW, address_offset: 0x68 } - - - { field_name: ip_identification, width: 16, access_mode: RW, address_offset: 0x64 } - - - { field_name: ip_flags, width: 3, access_mode: RW, address_offset: 0x60 } - - - { field_name: ip_fragment_offset, width: 13, access_mode: RW, address_offset: 0x5C } - - - { field_name: ip_time_to_live, width: 8, access_mode: RW, address_offset: 0x58 } - - - { field_name: ip_protocol, width: 8, access_mode: RW, address_offset: 0x54 } - - - { field_name: ip_header_checksum, width: 16, access_mode: RW, address_offset: 0x50 } - - - { field_name: ip_source_address, width: 32, access_mode: RW, address_offset: 0x4C } - - - { field_name: ip_destination_address, width: 32, access_mode: RW, address_offset: 0x48 } + - - { field_name: ip_version, mm_width: 4, access_mode: RW, address_offset: 0x74 } + - - { field_name: ip_header_length, mm_width: 4, access_mode: RW, address_offset: 0x70 } + - - { field_name: ip_services, mm_width: 8, access_mode: RW, address_offset: 0x6C } + - - { field_name: ip_total_length, mm_width: 16, access_mode: RW, address_offset: 0x68 } + - - { field_name: ip_identification, mm_width: 16, access_mode: RW, address_offset: 0x64 } + - - { field_name: ip_flags, mm_width: 3, access_mode: RW, address_offset: 0x60 } + - - { field_name: ip_fragment_offset, mm_width: 13, access_mode: RW, address_offset: 0x5C } + - - { field_name: ip_time_to_live, mm_width: 8, access_mode: RW, address_offset: 0x58 } + - - { field_name: ip_protocol, mm_width: 8, access_mode: RW, address_offset: 0x54 } + - - { field_name: ip_header_checksum, mm_width: 16, access_mode: RW, address_offset: 0x50 } + - - { field_name: ip_source_address, mm_width: 32, access_mode: RW, address_offset: 0x4C } + - - { field_name: ip_destination_address, mm_width: 32, access_mode: RW, address_offset: 0x48 } # 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: 0x40 } - - - { field_name: udp_length, width: 16, access_mode: RW, address_offset: 0x3C } - - - { field_name: udp_checksum, width: 16, access_mode: RW, address_offset: 0x38 } + - - { field_name: udp_source_port, mm_width: 16, access_mode: RW, address_offset: 0x44 } + - - { field_name: udp_destination_port, mm_width: 16, access_mode: RW, address_offset: 0x40 } + - - { field_name: udp_length, mm_width: 16, access_mode: RW, address_offset: 0x3C } + - - { field_name: udp_checksum, mm_width: 16, access_mode: RW, address_offset: 0x38 } # application field group - - - { field_name: marker, width: 8, access_mode: RO, address_offset: 0x34 } - - - { field_name: version_id, width: 8, access_mode: RO, address_offset: 0x30 } - - - { field_name: observation_id, width: 32, access_mode: RW, address_offset: 0x2C } - - - { field_name: station_id, width: 16, access_mode: RW, address_offset: 0x28 } - - - { field_name: source_info, width: 16, access_mode: RW, address_offset: 0x24 } + - - { field_name: marker, mm_width: 8, access_mode: RO, address_offset: 0x34 } + - - { field_name: version_id, mm_width: 8, access_mode: RO, address_offset: 0x30 } + - - { field_name: observation_id, mm_width: 32, access_mode: RW, address_offset: 0x2C } + - - { field_name: station_id, mm_width: 16, access_mode: RW, address_offset: 0x28 } + - - { field_name: source_info, mm_width: 16, access_mode: RW, address_offset: 0x24 } - "source_info": - - { field_name: antenna_band_index, width: 1, bit_offset: 15, access_mode: RW, address_offset: 0x24 } - - { field_name: nyquist_zone_index, width: 2, bit_offset: 13, access_mode: RW, address_offset: 0x24 } - - { field_name: f_adc, width: 1, bit_offset: 12, access_mode: RW, address_offset: 0x24 } - - { field_name: fsub_type, width: 1, bit_offset: 11, access_mode: RW, address_offset: 0x24 } - - { field_name: payload_error, width: 1, bit_offset: 10, access_mode: RW, address_offset: 0x24 } - - { field_name: repositioning_flag, width: 1, bit_offset: 9, access_mode: RW, address_offset: 0x24 } - - { field_name: beamlet_width, width: 3, bit_offset: 5, access_mode: RW, address_offset: 0x24 } - - { field_name: gn_index, width: 5, bit_offset: 0, access_mode: RW, address_offset: 0x24 } - - - - { field_name: reserved, width: 32, access_mode: RW, address_offset: 0x1C, radix_width: 40 } - - - { field_name: beamlet_scale, width: 16, access_mode: RW, address_offset: 0x18 } - - - { field_name: beamlet_index, width: 16, access_mode: RW, address_offset: 0x14 } - - - { field_name: nof_blocks_per_packet, width: 8, access_mode: RW, address_offset: 0x10 } - - - { field_name: nof_beamlets_per_block, width: 16, access_mode: RW, address_offset: 0xC } - - - { field_name: block_period, width: 16, access_mode: RW, address_offset: 0x8 } - - - { field_name: BSN, width: 32, access_mode: RW, address_offset: 0x0, radix_width: 64 } + - { field_name: antenna_band_index, mm_width: 1, bit_offset: 15, access_mode: RW, address_offset: 0x24 } + - { field_name: nyquist_zone_index, mm_width: 2, bit_offset: 13, access_mode: RW, address_offset: 0x24 } + - { field_name: f_adc, mm_width: 1, bit_offset: 12, access_mode: RW, address_offset: 0x24 } + - { field_name: fsub_type, mm_width: 1, bit_offset: 11, access_mode: RW, address_offset: 0x24 } + - { field_name: payload_error, mm_width: 1, bit_offset: 10, access_mode: RW, address_offset: 0x24 } + - { field_name: repositioning_flag, mm_width: 1, bit_offset: 9, access_mode: RW, address_offset: 0x24 } + - { field_name: beamlet_width, mm_width: 3, bit_offset: 5, access_mode: RW, address_offset: 0x24 } + - { field_name: gn_index, mm_width: 5, bit_offset: 0, access_mode: RW, address_offset: 0x24 } + + - - { field_name: reserved, mm_width: 32, user_width: 40, radix: uint64, access_mode: RW, address_offset: 0x1C } + - - { field_name: beamlet_scale, mm_width: 16, access_mode: RW, address_offset: 0x18 } + - - { field_name: beamlet_index, mm_width: 16, access_mode: RW, address_offset: 0x14 } + - - { field_name: nof_blocks_per_packet, mm_width: 8, access_mode: RW, address_offset: 0x10 } + - - { field_name: nof_beamlets_per_block, 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: sdp_statistics_offload_hdr_dat_sst # pi_dp_offload_tx_hdr_dat_lofar2_sdp_statistics_offload.py @@ -226,6 +226,7 @@ peripherals: mm_ports: # 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_description: | "The ETH/IP/UDP/application header fields for the SST offload UDP packets. @@ -236,59 +237,59 @@ peripherals: [1] https://plm.astron.nl/polarion/#/project/LOFAR2System/wiki/L2%20Interface%20Control%20Documents/SC%20to%20SDP%20ICD " - mm_port_type: REG fields: # eth field group - - - { field_name: eth_destination_mac, width: 32, access_mode: RW, address_offset: 0x84, radix_width: 48 } - - - { field_name: eth_source_mac, width: 32, access_mode: RO, address_offset: 0x7C, radix_width: 48 } - - - { field_name: eth_type, width: 16, access_mode: RO, address_offset: 0x78 } + - - { field_name: word_align, mm_width: 16, access_mode: RW, address_offset: 0x8C } + - - { field_name: eth_destination_mac, mm_width: 32, user_width: 48, radix: uint64, access_mode: RW, address_offset: 0x84 } + - - { field_name: eth_source_mac, mm_width: 32, user_width: 48, radix: uint64, access_mode: RO, address_offset: 0x7C } + - - { field_name: eth_type, mm_width: 16, access_mode: RO, address_offset: 0x78 } # ip field group - - - { field_name: ip_version, width: 4, access_mode: RW, address_offset: 0x74 } - - - { field_name: ip_header_length, width: 4, access_mode: RW, address_offset: 0x70 } - - - { field_name: ip_services, width: 8, access_mode: RW, address_offset: 0x6C } - - - { field_name: ip_total_length, width: 16, access_mode: RW, address_offset: 0x68 } - - - { field_name: ip_identification, width: 16, access_mode: RW, address_offset: 0x64 } - - - { field_name: ip_flags, width: 3, access_mode: RW, address_offset: 0x60 } - - - { field_name: ip_fragment_offset, width: 13, access_mode: RW, address_offset: 0x5C } - - - { field_name: ip_time_to_live, width: 8, access_mode: RW, address_offset: 0x58 } - - - { field_name: ip_protocol, width: 8, access_mode: RW, address_offset: 0x54 } - - - { field_name: ip_header_checksum, width: 16, access_mode: RW, address_offset: 0x50 } - - - { field_name: ip_source_address, width: 32, access_mode: RW, address_offset: 0x4C } - - - { field_name: ip_destination_address, width: 32, access_mode: RW, address_offset: 0x48 } + - - { field_name: ip_version, mm_width: 4, access_mode: RW, address_offset: 0x74 } + - - { field_name: ip_header_length, mm_width: 4, access_mode: RW, address_offset: 0x70 } + - - { field_name: ip_services, mm_width: 8, access_mode: RW, address_offset: 0x6C } + - - { field_name: ip_total_length, mm_width: 16, access_mode: RW, address_offset: 0x68 } + - - { field_name: ip_identification, mm_width: 16, access_mode: RW, address_offset: 0x64 } + - - { field_name: ip_flags, mm_width: 3, access_mode: RW, address_offset: 0x60 } + - - { field_name: ip_fragment_offset, mm_width: 13, access_mode: RW, address_offset: 0x5C } + - - { field_name: ip_time_to_live, mm_width: 8, access_mode: RW, address_offset: 0x58 } + - - { field_name: ip_protocol, mm_width: 8, access_mode: RW, address_offset: 0x54 } + - - { field_name: ip_header_checksum, mm_width: 16, access_mode: RW, address_offset: 0x50 } + - - { field_name: ip_source_address, mm_width: 32, access_mode: RW, address_offset: 0x4C } + - - { field_name: ip_destination_address, mm_width: 32, access_mode: RW, address_offset: 0x48 } # 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: 0x40 } - - - { field_name: udp_length, width: 16, access_mode: RW, address_offset: 0x3C } - - - { field_name: udp_checksum, width: 16, access_mode: RW, address_offset: 0x38 } + - - { field_name: udp_source_port, mm_width: 16, access_mode: RW, address_offset: 0x44 } + - - { field_name: udp_destination_port, mm_width: 16, access_mode: RW, address_offset: 0x40 } + - - { field_name: udp_length, mm_width: 16, access_mode: RW, address_offset: 0x3C } + - - { field_name: udp_checksum, mm_width: 16, access_mode: RW, address_offset: 0x38 } # application field group - - - { field_name: marker, width: 8, access_mode: RO, address_offset: 0x34 } - - - { field_name: version_id, width: 8, access_mode: RO, address_offset: 0x30 } - - - { field_name: observation_id, width: 32, access_mode: RW, address_offset: 0x2C } - - - { field_name: station_id, width: 16, access_mode: RW, address_offset: 0x28 } - - - { field_name: source_info, width: 16, access_mode: RW, address_offset: 0x24 } + - - { field_name: marker, mm_width: 8, access_mode: RO, address_offset: 0x34 } + - - { field_name: version_id, mm_width: 8, access_mode: RO, address_offset: 0x30 } + - - { field_name: observation_id, mm_width: 32, access_mode: RW, address_offset: 0x2C } + - - { field_name: station_id, mm_width: 16, access_mode: RW, address_offset: 0x28 } + - - { field_name: source_info, mm_width: 16, access_mode: RW, address_offset: 0x24 } - "source_info": - - { field_name: antenna_band_index, width: 1, bit_offset: 15, access_mode: RW, address_offset: 0x24 } - - { field_name: nyquist_zone_index, width: 2, bit_offset: 13, access_mode: RW, address_offset: 0x24 } - - { field_name: f_adc, width: 1, bit_offset: 12, access_mode: RW, address_offset: 0x24 } - - { field_name: fsub_type, width: 1, bit_offset: 11, access_mode: RW, address_offset: 0x24 } - - { field_name: payload_error, width: 1, bit_offset: 10, access_mode: RW, address_offset: 0x24 } - - { field_name: beam_repositioning_flag, width: 1, bit_offset: 9, access_mode: RW, address_offset: 0x24 } - - { field_name: subband_calibrated_flag, width: 1, bit_offset: 8, access_mode: RW, address_offset: 0x24 } - - { field_name: reserved, width: 3, bit_offset: 5, access_mode: RW, address_offset: 0x24 } - - { field_name: gn_index, width: 5, bit_offset: 0, access_mode: RW, address_offset: 0x24 } - - - - { field_name: reserved, width: 8, access_mode: RW, address_offset: 0x20 } - - - { field_name: integration_interval, width: 24, access_mode: RW, address_offset: 0x1C } - - - { field_name: data_id, width: 32, access_mode: RW, address_offset: 0x18 } + - { field_name: antenna_band_index, mm_width: 1, bit_offset: 15, access_mode: RW, address_offset: 0x24 } + - { field_name: nyquist_zone_index, mm_width: 2, bit_offset: 13, access_mode: RW, address_offset: 0x24 } + - { field_name: f_adc, mm_width: 1, bit_offset: 12, access_mode: RW, address_offset: 0x24 } + - { field_name: fsub_type, mm_width: 1, bit_offset: 11, access_mode: RW, address_offset: 0x24 } + - { field_name: payload_error, mm_width: 1, bit_offset: 10, access_mode: RW, address_offset: 0x24 } + - { field_name: beam_repositioning_flag, mm_width: 1, bit_offset: 9, access_mode: RW, address_offset: 0x24 } + - { field_name: subband_calibrated_flag, mm_width: 1, bit_offset: 8, access_mode: RW, address_offset: 0x24 } + - { field_name: reserved, mm_width: 3, bit_offset: 5, access_mode: RW, address_offset: 0x24 } + - { field_name: gn_index, mm_width: 5, bit_offset: 0, access_mode: RW, address_offset: 0x24 } + + - - { field_name: reserved, mm_width: 8, access_mode: RW, address_offset: 0x20 } + - - { field_name: integration_interval, mm_width: 24, access_mode: RW, address_offset: 0x1C } + - - { field_name: data_id, mm_width: 32, access_mode: RW, address_offset: 0x18 } - "data_id_sst": - - { field_name: reserved, width: 24, bit_offset: 8, access_mode: RW, address_offset: 0x18 } - - { field_name: signal_input_index, width: 8, bit_offset: 0, access_mode: RW, address_offset: 0x18 } + - { 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: nof_signal_inputs, width: 8, access_mode: RW, address_offset: 0x14 } - - - { field_name: nof_bytes_per_statistic, width: 8, access_mode: RW, address_offset: 0x10 } - - - { field_name: nof_statistics_per_packet, width: 16, access_mode: RW, address_offset: 0xC } - - - { field_name: block_period, width: 16, access_mode: RW, address_offset: 0x8 } - - - { field_name: BSN, width: 32, access_mode: RW, address_offset: 0x0, radix_width: 64 } + - - { 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: sdp_statistics_offload_hdr_dat_bst # pi_dp_offload_tx_hdr_dat_lofar2_sdp_statistics_offload.py @@ -296,6 +297,7 @@ peripherals: mm_ports: # 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_description: | "The ETH/IP/UDP/application header fields for the BST offload UDP packets. @@ -306,59 +308,59 @@ peripherals: [1] https://plm.astron.nl/polarion/#/project/LOFAR2System/wiki/L2%20Interface%20Control%20Documents/SC%20to%20SDP%20ICD " - mm_port_type: REG fields: # eth field group - - - { field_name: eth_destination_mac, width: 32, access_mode: RW, address_offset: 0x84, radix_width: 48 } - - - { field_name: eth_source_mac, width: 32, access_mode: RO, address_offset: 0x7C, radix_width: 48 } - - - { field_name: eth_type, width: 16, access_mode: RO, address_offset: 0x78 } + - - { field_name: word_align, mm_width: 16, access_mode: RW, address_offset: 0x8C } + - - { field_name: eth_destination_mac, mm_width: 32, user_width: 48, radix: uint64, access_mode: RW, address_offset: 0x84 } + - - { field_name: eth_source_mac, mm_width: 32, user_width: 48, radix: uint64, access_mode: RO, address_offset: 0x7C } + - - { field_name: eth_type, mm_width: 16, access_mode: RO, address_offset: 0x78 } # ip field group - - - { field_name: ip_version, width: 4, access_mode: RW, address_offset: 0x74 } - - - { field_name: ip_header_length, width: 4, access_mode: RW, address_offset: 0x70 } - - - { field_name: ip_services, width: 8, access_mode: RW, address_offset: 0x6C } - - - { field_name: ip_total_length, width: 16, access_mode: RW, address_offset: 0x68 } - - - { field_name: ip_identification, width: 16, access_mode: RW, address_offset: 0x64 } - - - { field_name: ip_flags, width: 3, access_mode: RW, address_offset: 0x60 } - - - { field_name: ip_fragment_offset, width: 13, access_mode: RW, address_offset: 0x5C } - - - { field_name: ip_time_to_live, width: 8, access_mode: RW, address_offset: 0x58 } - - - { field_name: ip_protocol, width: 8, access_mode: RW, address_offset: 0x54 } - - - { field_name: ip_header_checksum, width: 16, access_mode: RW, address_offset: 0x50 } - - - { field_name: ip_source_address, width: 32, access_mode: RW, address_offset: 0x4C } - - - { field_name: ip_destination_address, width: 32, access_mode: RW, address_offset: 0x48 } + - - { field_name: ip_version, mm_width: 4, access_mode: RW, address_offset: 0x74 } + - - { field_name: ip_header_length, mm_width: 4, access_mode: RW, address_offset: 0x70 } + - - { field_name: ip_services, mm_width: 8, access_mode: RW, address_offset: 0x6C } + - - { field_name: ip_total_length, mm_width: 16, access_mode: RW, address_offset: 0x68 } + - - { field_name: ip_identification, mm_width: 16, access_mode: RW, address_offset: 0x64 } + - - { field_name: ip_flags, mm_width: 3, access_mode: RW, address_offset: 0x60 } + - - { field_name: ip_fragment_offset, mm_width: 13, access_mode: RW, address_offset: 0x5C } + - - { field_name: ip_time_to_live, mm_width: 8, access_mode: RW, address_offset: 0x58 } + - - { field_name: ip_protocol, mm_width: 8, access_mode: RW, address_offset: 0x54 } + - - { field_name: ip_header_checksum, mm_width: 16, access_mode: RW, address_offset: 0x50 } + - - { field_name: ip_source_address, mm_width: 32, access_mode: RW, address_offset: 0x4C } + - - { field_name: ip_destination_address, mm_width: 32, access_mode: RW, address_offset: 0x48 } # 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: 0x40 } - - - { field_name: udp_length, width: 16, access_mode: RW, address_offset: 0x3C } - - - { field_name: udp_checksum, width: 16, access_mode: RW, address_offset: 0x38 } + - - { field_name: udp_source_port, mm_width: 16, access_mode: RW, address_offset: 0x44 } + - - { field_name: udp_destination_port, mm_width: 16, access_mode: RW, address_offset: 0x40 } + - - { field_name: udp_length, mm_width: 16, access_mode: RW, address_offset: 0x3C } + - - { field_name: udp_checksum, mm_width: 16, access_mode: RW, address_offset: 0x38 } # application field group - - - { field_name: marker, width: 8, access_mode: RO, address_offset: 0x34 } - - - { field_name: version_id, width: 8, access_mode: RO, address_offset: 0x30 } - - - { field_name: observation_id, width: 32, access_mode: RW, address_offset: 0x2C } - - - { field_name: station_id, width: 16, access_mode: RW, address_offset: 0x28 } - - - { field_name: source_info, width: 16, access_mode: RW, address_offset: 0x24 } + - - { field_name: marker, mm_width: 8, access_mode: RO, address_offset: 0x34 } + - - { field_name: version_id, mm_width: 8, access_mode: RO, address_offset: 0x30 } + - - { field_name: observation_id, mm_width: 32, access_mode: RW, address_offset: 0x2C } + - - { field_name: station_id, mm_width: 16, access_mode: RW, address_offset: 0x28 } + - - { field_name: source_info, mm_width: 16, access_mode: RW, address_offset: 0x24 } - "source_info": - - { field_name: antenna_band_index, width: 1, bit_offset: 15, access_mode: RW, address_offset: 0x24 } - - { field_name: nyquist_zone_index, width: 2, bit_offset: 13, access_mode: RW, address_offset: 0x24 } - - { field_name: f_adc, width: 1, bit_offset: 12, access_mode: RW, address_offset: 0x24 } - - { field_name: fsub_type, width: 1, bit_offset: 11, access_mode: RW, address_offset: 0x24 } - - { field_name: payload_error, width: 1, bit_offset: 10, access_mode: RW, address_offset: 0x24 } - - { field_name: beam_repositioning_flag, width: 1, bit_offset: 9, access_mode: RW, address_offset: 0x24 } - - { field_name: subband_calibrated_flag, width: 1, bit_offset: 8, access_mode: RW, address_offset: 0x24 } - - { field_name: reserved, width: 3, bit_offset: 5, access_mode: RW, address_offset: 0x24 } - - { field_name: gn_index, width: 5, bit_offset: 0, access_mode: RW, address_offset: 0x24 } - - - - { field_name: reserved, width: 8, access_mode: RW, address_offset: 0x20 } - - - { field_name: integration_interval, width: 24, access_mode: RW, address_offset: 0x1C } - - - { field_name: data_id, width: 32, access_mode: RW, address_offset: 0x18 } + - { field_name: antenna_band_index, mm_width: 1, bit_offset: 15, access_mode: RW, address_offset: 0x24 } + - { field_name: nyquist_zone_index, mm_width: 2, bit_offset: 13, access_mode: RW, address_offset: 0x24 } + - { field_name: f_adc, mm_width: 1, bit_offset: 12, access_mode: RW, address_offset: 0x24 } + - { field_name: fsub_type, mm_width: 1, bit_offset: 11, access_mode: RW, address_offset: 0x24 } + - { field_name: payload_error, mm_width: 1, bit_offset: 10, access_mode: RW, address_offset: 0x24 } + - { field_name: beam_repositioning_flag, mm_width: 1, bit_offset: 9, access_mode: RW, address_offset: 0x24 } + - { field_name: subband_calibrated_flag, mm_width: 1, bit_offset: 8, access_mode: RW, address_offset: 0x24 } + - { field_name: reserved, mm_width: 3, bit_offset: 5, access_mode: RW, address_offset: 0x24 } + - { field_name: gn_index, mm_width: 5, bit_offset: 0, access_mode: RW, address_offset: 0x24 } + + - - { field_name: reserved, mm_width: 8, access_mode: RW, address_offset: 0x20 } + - - { field_name: integration_interval, mm_width: 24, access_mode: RW, address_offset: 0x1C } + - - { field_name: data_id, mm_width: 32, access_mode: RW, address_offset: 0x18 } - "data_id_bst": - - { field_name: reserved, width: 16, bit_offset: 16, access_mode: RW, address_offset: 0x18 } - - { field_name: beamlet_index, width: 16, bit_offset: 0, access_mode: RW, address_offset: 0x18 } + - { 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, width: 8, access_mode: RW, address_offset: 0x14 } - - - { field_name: nof_bytes_per_statistic, width: 8, access_mode: RW, address_offset: 0x10 } - - - { field_name: nof_statistics_per_packet, width: 16, access_mode: RW, address_offset: 0xC } - - - { field_name: block_period, width: 16, access_mode: RW, address_offset: 0x8 } - - - { field_name: BSN, width: 32, access_mode: RW, address_offset: 0x0, radix_width: 64 } + - - { 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: sdp_statistics_offload_hdr_dat_xst # pi_dp_offload_tx_hdr_dat_lofar2_sdp_statistics_offload.py @@ -366,6 +368,7 @@ peripherals: mm_ports: # 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_description: | "The ETH/IP/UDP/application header fields for the XST offload UDP packets. @@ -377,59 +380,59 @@ peripherals: [1] https://plm.astron.nl/polarion/#/project/LOFAR2System/wiki/L2%20Interface%20Control%20Documents/SC%20to%20SDP%20ICD " - mm_port_type: REG fields: # eth field group - - - { field_name: eth_destination_mac, width: 32, access_mode: RW, address_offset: 0x84, radix_width: 48 } - - - { field_name: eth_source_mac, width: 32, access_mode: RO, address_offset: 0x7C, radix_width: 48 } - - - { field_name: eth_type, width: 16, access_mode: RO, address_offset: 0x78 } + - - { field_name: word_align, mm_width: 16, access_mode: RW, address_offset: 0x8C } + - - { field_name: eth_destination_mac, mm_width: 32, user_width: 48, radix: uint64, access_mode: RW, address_offset: 0x84 } + - - { field_name: eth_source_mac, mm_width: 32, user_width: 48, radix: uint64, access_mode: RO, address_offset: 0x7C } + - - { field_name: eth_type, mm_width: 16, access_mode: RO, address_offset: 0x78 } # ip field group - - - { field_name: ip_version, width: 4, access_mode: RW, address_offset: 0x74 } - - - { field_name: ip_header_length, width: 4, access_mode: RW, address_offset: 0x70 } - - - { field_name: ip_services, width: 8, access_mode: RW, address_offset: 0x6C } - - - { field_name: ip_total_length, width: 16, access_mode: RW, address_offset: 0x68 } - - - { field_name: ip_identification, width: 16, access_mode: RW, address_offset: 0x64 } - - - { field_name: ip_flags, width: 3, access_mode: RW, address_offset: 0x60 } - - - { field_name: ip_fragment_offset, width: 13, access_mode: RW, address_offset: 0x5C } - - - { field_name: ip_time_to_live, width: 8, access_mode: RW, address_offset: 0x58 } - - - { field_name: ip_protocol, width: 8, access_mode: RW, address_offset: 0x54 } - - - { field_name: ip_header_checksum, width: 16, access_mode: RW, address_offset: 0x50 } - - - { field_name: ip_source_address, width: 32, access_mode: RW, address_offset: 0x4C } - - - { field_name: ip_destination_address, width: 32, access_mode: RW, address_offset: 0x48 } + - - { field_name: ip_version, mm_width: 4, access_mode: RW, address_offset: 0x74 } + - - { field_name: ip_header_length, mm_width: 4, access_mode: RW, address_offset: 0x70 } + - - { field_name: ip_services, mm_width: 8, access_mode: RW, address_offset: 0x6C } + - - { field_name: ip_total_length, mm_width: 16, access_mode: RW, address_offset: 0x68 } + - - { field_name: ip_identification, mm_width: 16, access_mode: RW, address_offset: 0x64 } + - - { field_name: ip_flags, mm_width: 3, access_mode: RW, address_offset: 0x60 } + - - { field_name: ip_fragment_offset, mm_width: 13, access_mode: RW, address_offset: 0x5C } + - - { field_name: ip_time_to_live, mm_width: 8, access_mode: RW, address_offset: 0x58 } + - - { field_name: ip_protocol, mm_width: 8, access_mode: RW, address_offset: 0x54 } + - - { field_name: ip_header_checksum, mm_width: 16, access_mode: RW, address_offset: 0x50 } + - - { field_name: ip_source_address, mm_width: 32, access_mode: RW, address_offset: 0x4C } + - - { field_name: ip_destination_address, mm_width: 32, access_mode: RW, address_offset: 0x48 } # 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: 0x40 } - - - { field_name: udp_length, width: 16, access_mode: RW, address_offset: 0x3C } - - - { field_name: udp_checksum, width: 16, access_mode: RW, address_offset: 0x38 } + - - { field_name: udp_source_port, mm_width: 16, access_mode: RW, address_offset: 0x44 } + - - { field_name: udp_destination_port, mm_width: 16, access_mode: RW, address_offset: 0x40 } + - - { field_name: udp_length, mm_width: 16, access_mode: RW, address_offset: 0x3C } + - - { field_name: udp_checksum, mm_width: 16, access_mode: RW, address_offset: 0x38 } # application field group - - - { field_name: marker, width: 8, access_mode: RO, address_offset: 0x34 } - - - { field_name: version_id, width: 8, access_mode: RO, address_offset: 0x30 } - - - { field_name: observation_id, width: 32, access_mode: RW, address_offset: 0x2C } - - - { field_name: station_id, width: 16, access_mode: RW, address_offset: 0x28 } - - - { field_name: source_info, width: 16, access_mode: RW, address_offset: 0x24 } + - - { field_name: marker, mm_width: 8, access_mode: RO, address_offset: 0x34 } + - - { field_name: version_id, mm_width: 8, access_mode: RO, address_offset: 0x30 } + - - { field_name: observation_id, mm_width: 32, access_mode: RW, address_offset: 0x2C } + - - { field_name: station_id, mm_width: 16, access_mode: RW, address_offset: 0x28 } + - - { field_name: source_info, mm_width: 16, access_mode: RW, address_offset: 0x24 } - "source_info": - - { field_name: antenna_band_index, width: 1, bit_offset: 15, access_mode: RW, address_offset: 0x24 } - - { field_name: nyquist_zone_index, width: 2, bit_offset: 13, access_mode: RW, address_offset: 0x24 } - - { field_name: f_adc, width: 1, bit_offset: 12, access_mode: RW, address_offset: 0x24 } - - { field_name: fsub_type, width: 1, bit_offset: 11, access_mode: RW, address_offset: 0x24 } - - { field_name: payload_error, width: 1, bit_offset: 10, access_mode: RW, address_offset: 0x24 } - - { field_name: beam_repositioning_flag, width: 1, bit_offset: 9, access_mode: RW, address_offset: 0x24 } - - { field_name: subband_calibrated_flag, width: 1, bit_offset: 8, access_mode: RW, address_offset: 0x24 } - - { field_name: reserved, width: 3, bit_offset: 5, access_mode: RW, address_offset: 0x24 } - - { field_name: gn_index, width: 5, bit_offset: 0, access_mode: RW, address_offset: 0x24 } - - - - { field_name: reserved, width: 8, access_mode: RW, address_offset: 0x20 } - - - { field_name: integration_interval, width: 24, access_mode: RW, address_offset: 0x1C } - - - { field_name: data_id, width: 32, access_mode: RW, address_offset: 0x18 } + - { field_name: antenna_band_index, mm_width: 1, bit_offset: 15, access_mode: RW, address_offset: 0x24 } + - { field_name: nyquist_zone_index, mm_width: 2, bit_offset: 13, access_mode: RW, address_offset: 0x24 } + - { field_name: f_adc, mm_width: 1, bit_offset: 12, access_mode: RW, address_offset: 0x24 } + - { field_name: fsub_type, mm_width: 1, bit_offset: 11, access_mode: RW, address_offset: 0x24 } + - { field_name: payload_error, mm_width: 1, bit_offset: 10, access_mode: RW, address_offset: 0x24 } + - { field_name: beam_repositioning_flag, mm_width: 1, bit_offset: 9, access_mode: RW, address_offset: 0x24 } + - { field_name: subband_calibrated_flag, mm_width: 1, bit_offset: 8, access_mode: RW, address_offset: 0x24 } + - { field_name: reserved, mm_width: 3, bit_offset: 5, access_mode: RW, address_offset: 0x24 } + - { field_name: gn_index, mm_width: 5, bit_offset: 0, access_mode: RW, address_offset: 0x24 } + + - - { field_name: reserved, mm_width: 8, access_mode: RW, address_offset: 0x20 } + - - { field_name: integration_interval, mm_width: 24, access_mode: RW, address_offset: 0x1C } + - - { field_name: data_id, mm_width: 32, access_mode: RW, address_offset: 0x18 } - "data_id_xst": - - { field_name: reserved, width: 7, bit_offset: 25, access_mode: RW, address_offset: 0x18 } - - { field_name: subband_index, width: 9, bit_offset: 16, access_mode: RW, address_offset: 0x18 } - - { field_name: signal_input_A_index, width: 8, bit_offset: 8, access_mode: RW, address_offset: 0x18 } - - { field_name: signal_input_B_index, width: 8, bit_offset: 0, access_mode: RW, address_offset: 0x18 } - - - - { field_name: nof_signal_inputs, width: 8, access_mode: RW, address_offset: 0x14 } - - - { field_name: nof_bytes_per_statistic, width: 8, access_mode: RW, address_offset: 0x10 } - - - { field_name: nof_statistics_per_packet, width: 16, access_mode: RW, address_offset: 0xC } - - - { field_name: block_period, width: 16, access_mode: RW, address_offset: 0x8 } - - - { field_name: BSN, width: 32, access_mode: RW, address_offset: 0x0, radix_width: 64 } + - { 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 } diff --git a/boards/uniboard1/libraries/unb1_board/unb1_board.peripheral.yaml b/boards/uniboard1/libraries/unb1_board/unb1_board.peripheral.yaml index e85ac86d90071a13a312f2a805e5a9ac0be32bba..faf0c65fd9c6df00dbf7e479840f80d65697ac8d 100644 --- a/boards/uniboard1/libraries/unb1_board/unb1_board.peripheral.yaml +++ b/boards/uniboard1/libraries/unb1_board/unb1_board.peripheral.yaml @@ -44,81 +44,38 @@ peripherals: # peripheral, unb1_board_wdi_reg - peripheral_name: ctrl - + peripheral_description: " " mm_ports: # actual hdl name: unb1_board_wdi_reg - mm_port_name : pio_wdi mm_port_type : REG + mm_port_description: "Reset register, for nios " fields: - - field_name : nios_reset - width : 32 - access_mode : WO - address_offset : 0x0 - number_of_fields: 1 field_description: " Reset done by nios " + number_of_fields: 1 + address_offset : 0x0 + mm_width : 32 + access_mode : WO - mm_port_description: "Reset register, for nios " - peripheral_description: " " - # peripheral, unb1_board_wdi_reg - peripheral_name: wdi - + peripheral_description: " " mm_ports: # actual hdl name: unb1_board_wdi_reg - mm_port_name : wdi mm_port_type : REG + mm_port_description: "Reset register, if the right value is provided the factory image will be reloaded " fields: - - field_name : reset_word + field_description: " Only the value 0xB007FAC7 'Boot factory' will result in a reset " access_mode : WO address_offset: 0x0 - field_description: " Only the value 0xB007FAC7 'Boot factory' will result in a reset " - - mm_port_description: "Reset register, if the right value is provided the factory image will be reloaded " - peripheral_description: " " # periheral, unb1_board_sens - peripheral_name: sens - - parameters: - - { name: g_sim, value: FALSE } - - { name: g_clk_freq, value: c_unb1_board_mm_clk_freq_125M } - - { name: g_temp_high, value: 85 } - - mm_ports: - # actual hdl name: reg_unb1_sens - - mm_port_name : sens - mm_port_type : REG - fields: - - - field_name : sens_data - width : 8 - access_mode : RO - address_offset: 0x0 - number_of_fields: 4 - field_description: | - " data array with sens data - 0x0 = fpga temperature in degrees (two's complement) - 0x1 = eth_temp temperature in degrees (two's complement) - 0x2 = hot_swap_v_sens - 0x3 = hot_swap_v_source" - - - - field_name : sens_err - width : 1 - access_mode : RO - address_offset: 0x10 - radix : unsigned - field_description: "" - - - - field_name : temp_high - width : 7 - address_offset: 0x14 - reset_value : g_temp_high - software_value: g_temp_high - field_description: "" - - mm_port_description: " " - peripheral_description: | " +-----------------------------------------------------------------------------+ @@ -142,13 +99,13 @@ peripherals: LTC4260_V_UNIT_SENSE = 0.0003 -- 0.3 mV over Rs for current sense LTC4260_V_UNIT_SOURCE = 0.4 -- 400 mV supply voltage (e.g +48 V) LTC4260_V_UNIT_ADIN = 0.01 -- 10 mV ADC - + . From UniBoard unb_sensors.h: SENS_HOT_SWAP_R_SENSE = 0.005 -- R sense on UniBoard is 5 mOhm (~= 10 mOhm // 10 mOhm) SENS_HOT_SWAP_I_UNIT_SENSE = LTC4260_V_UNIT_SENSE / SENS_HOT_SWAP_R_SENSE SENS_HOT_SWAP_V_UNIT_SOURCE = LTC4260_V_UNIT_SOURCE - - ==> + + ==> Via all FN and BN: 0 = FPGA temperature = TInt8(fpga_temp) Only via BN3: @@ -156,4 +113,39 @@ peripherals: 2 = UniBoard hot swap supply current = hot_swap_v_sense * SENS_HOT_SWAP_I_UNIT_SENSE 3 = UniBoard hot swap supply voltage = hot_swap_v_source * SENS_HOT_SWAP_V_UNIT_SOURCE 4 = I2C error status for BN3 sensors access only, 0 = ok" + parameters: + - { name: g_sim, value: FALSE } + - { name: g_clk_freq, value: c_unb1_board_mm_clk_freq_125M } + - { name: g_temp_high, value: 85 } + mm_ports: + # actual hdl name: reg_unb1_sens + - mm_port_name : sens + mm_port_type : REG + mm_port_description: " " + fields: + - - field_name : sens_data + field_description: | + " data array with sens data + 0x0 = fpga temperature in degrees (two's complement) + 0x1 = eth_temp temperature in degrees (two's complement) + 0x2 = hot_swap_v_sens + 0x3 = hot_swap_v_source" + number_of_fields: 4 + address_offset: 0x0 + mm_width : 8 + access_mode : RO + + - - field_name : sens_err + field_description: "" + address_offset: 0x10 + mm_width : 1 + access_mode : RO + radix : uint32 + + - - field_name : temp_high + field_description: "" + address_offset: 0x14 + mm_width : 7 + reset_value : g_temp_high + diff --git a/boards/uniboard2b/designs/unb2b_minimal/unb2b_minimal.fpga.yaml b/boards/uniboard2b/designs/unb2b_minimal/unb2b_minimal.fpga.yaml index 01243fd42502200dbbc1ec823b7c66f6cb3da100..40f9191902718876c4770eddae1437b8cc66f0fe 100644 --- a/boards/uniboard2b/designs/unb2b_minimal/unb2b_minimal.fpga.yaml +++ b/boards/uniboard2b/designs/unb2b_minimal/unb2b_minimal.fpga.yaml @@ -11,10 +11,10 @@ peripherals: # Factory / minimal (from ctrl_unb2b_board.vhd) ############################################################################# - peripheral_name: unb2b_board/system_info + lock_base_address: 0x10000 mm_port_names: - ROM_SYSTEM_INFO - PIO_SYSTEM_INFO - lock_base_address: 0x10000 - peripheral_name: unb2b_board/wdi mm_port_names: @@ -24,11 +24,11 @@ peripherals: 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 @@ -42,17 +42,17 @@ peripherals: - peripheral_name: epcs/epcs 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 mm_port_names: - REG_REMU diff --git a/boards/uniboard2b/libraries/unb2b_board/unb2b_board.peripheral.yaml b/boards/uniboard2b/libraries/unb2b_board/unb2b_board.peripheral.yaml index 254ac5e1c7e182c50a91e78df03f08789fb39790..fc5f4ccbf3e156fe51d24ed3009ccc25029f53c2 100644 --- a/boards/uniboard2b/libraries/unb2b_board/unb2b_board.peripheral.yaml +++ b/boards/uniboard2b/libraries/unb2b_board/unb2b_board.peripheral.yaml @@ -1,4 +1,3 @@ ---- schema_name: args schema_version: 1.0 schema_type: peripheral @@ -17,9 +16,9 @@ peripherals: fields: - - field_name: rw_data field_description: "Void data" - access_mode: RW - address_offset: 0x0 number_of_fields: 512 + address_offset: 0x0 + access_mode: RW - peripheral_name: system_info # pi_system_info.py peripheral_description: "" @@ -32,10 +31,12 @@ peripherals: fields: - - field_name: ro_data field_description: "FPGA info memory map data" - access_mode: RO + number_of_fields: 32768 # c_rom_addr_w in mms_unb2b_board_system_info address_offset: 0x0 - number_of_fields: 8192 # c_rom_addr_w in mms_unb2b_board_system_info - radix: char + mm_width: 32 + user_width: 8 + radix: char8 + access_mode: RO # MM port for mms_unb2b_board_system_info.vhd / unb2b_board_system_info_reg.vhd - mm_port_name: PIO_SYSTEM_INFO @@ -52,65 +53,66 @@ peripherals: # Each field specified - - field_name: info field_description: "Info" - width: 32 + address_offset: 0x0 bit_offset: 0 + mm_width: 32 access_mode: RO - address_offset: 0x0 - "info": # field_group - field_name: gn_index field_description: "Global node index, unb2 FPGA id = gn_index % 4, unb2 backplane id = gn_index // 4" - width: 8 + address_offset: 0x0 bit_offset: 0 + mm_width: 8 access_mode: RO - address_offset: 0x0 - field_name: hw_version field_description: "UniBoard2 hardware (HW) version." - width: 2 + address_offset: 0x0 bit_offset: 8 + mm_width: 2 access_mode: RO - address_offset: 0x0 - field_name: cs_sim field_description: "0 when running on HW, 1 when running in simulation." - width: 1 + address_offset: 0x0 bit_offset: 10 + mm_width: 1 access_mode: RO - address_offset: 0x0 - field_name: fw_version_major field_description: "FPGA Firmware (FW) version major number, not used use version stamp instead." - width: 4 + address_offset: 0x0 bit_offset: 16 + mm_width: 4 access_mode: RO - address_offset: 0x0 - field_name: fw_version_minor field_description: "FPGA Firmware (FW) version minor number, not used use version stamp instead." - width: 4 + address_offset: 0x0 bit_offset: 20 + mm_width: 4 access_mode: RO - address_offset: 0x0 - field_name: rom_version field_description: "Version of the mmap schema in ROM_SYSTEM_INFO." - width: 3 + address_offset: 0x0 bit_offset: 24 + mm_width: 3 access_mode: RO - address_offset: 0x0 - field_name: technology field_description: "FPGA technology" - width: 5 + address_offset: 0x0 bit_offset: 27 + mm_width: 5 access_mode: RO - address_offset: 0x0 - - field_name: use_phy field_description: "PHY interfaces that are active in the FPGA, not used." - width: 8 - access_mode: RO address_offset: 0x4 + mm_width: 8 + access_mode: RO - - field_name: design_name field_description: "FPGA FW design name string." - access_mode: RO + number_of_fields: 52 address_offset: 0x8 - number_of_fields: 13 - radix: char - radix_width: 8 + mm_width: 32 + user_width: 8 + radix: char8 + access_mode: RO - - field_name: stamp_date field_description: "FPGA FW compile date string." access_mode: RO @@ -118,22 +120,22 @@ peripherals: number_of_fields: 1 - - field_name: stamp_time field_description: "FPGA FW compile time string." - access_mode: RO - address_offset: 0x40 number_of_fields: 1 + address_offset: 0x40 + access_mode: RO - - field_name: stamp_commit field_description: "FPGA FW commit hash string." - access_mode: RO - address_offset: 0x44 number_of_fields: 3 - radix: hexadecimal + address_offset: 0x44 + access_mode: RO - - field_name: design_note field_description: "FPGA FW design note string." - access_mode: RO + number_of_fields: 52 address_offset: 0x50 - number_of_fields: 13 - radix: char - radix_width: 8 + mm_width: 32 + user_width: 8 + radix: char8 + access_mode: RO - peripheral_name: wdi # pi_wdi.py peripheral_description: "" @@ -145,8 +147,8 @@ peripherals: fields: - - field_name: wdi_override field_description: "Write value 0xB007FAC7 = 'Boot factory' to disable the watchdog interrupt (WDI), to cause an FPGA image reload." - access_mode: WO address_offset: 0x0 + access_mode: WO - peripheral_name: unb2_fpga_sens peripheral_description: "" @@ -160,9 +162,9 @@ peripherals: fields: - - field_name: temp field_description: "Raw data" - access_mode: RO - address_offset: 0x0 number_of_fields: 1 + address_offset: 0x0 + access_mode: RO - mm_port_name: REG_FPGA_VOLTAGE_SENS # pi_unb_fpga_voltagesens.py mm_port_type: REG @@ -170,7 +172,7 @@ peripherals: fields: - - field_name: voltages field_description: "Not used" - access_mode: RO - address_offset: 0x0 number_of_fields: 6 - + address_offset: 0x0 + access_mode: RO + diff --git a/libraries/base/common/common.peripheral.yaml b/libraries/base/common/common.peripheral.yaml index b9ad15bbbc80f89fafefa2a7b4e206061810d813..5d06bbdbda5d1d9331af904518ebbc63f6a51c9d 100644 --- a/libraries/base/common/common.peripheral.yaml +++ b/libraries/base/common/common.peripheral.yaml @@ -21,6 +21,6 @@ peripherals: fields: - - field_name: enable field_description: "When 1 pass on delayed pulse to the output, else disable the output pulse." - width: 1 - access_mode: RW address_offset: 0x0 + mm_width: 1 + access_mode: RW diff --git a/libraries/base/diag/diag.peripheral.yaml b/libraries/base/diag/diag.peripheral.yaml index c92c4a5823e36e62d9b5d26da9d022fb043b7b96..ac86812ef1440c831599e5e484f71145a97cec63 100644 --- a/libraries/base/diag/diag.peripheral.yaml +++ b/libraries/base/diag/diag.peripheral.yaml @@ -14,15 +14,15 @@ peripherals: mm_ports: # MM port for diag_wg_wideband_reg.vhd - mm_port_name: REG_DIAG_WG - mm_port_description: "Waveform control." mm_port_type: REG + mm_port_description: "Waveform control." number_of_mm_ports: g_nof_streams fields: - - field_name: nof_samples field_description: "Number of samples in WG period." - width: 16 - bit_offset: 16 address_offset: 0x0 + bit_offset: 16 + mm_width: 16 - - field_name: mode field_description: | "WG mode: @@ -30,35 +30,35 @@ peripherals: 1 = calc, uses WG buffer waveform to output sinus with ampl * sin(freq * t + phase 2 = repeat, outputs WG buffer waveform repeatedly 3 = single, outputs WG buffer waveform once" - width: 8 - bit_offset: 0 address_offset: 0x0 + bit_offset: 0 + mm_width: 8 - - field_name: phase field_description: "Phase of WG sinus, phase = int('phase in degrees' * 2**width / 360)." - width: 16 - bit_offset: 0 address_offset: 0x4 + bit_offset: 0 + mm_width: 16 - - field_name: freq field_description: "Frequency of WG sinus, freq = int('frequency in range 0 to 1' * f_adc * 2**width), where f_adc is sample frequency in Hz." - width: 31 - bit_offset: 0 address_offset: 0x8 + bit_offset: 0 + mm_width: 31 - - field_name: ampl field_description: "Amplitude of WG sinus, ampl = int('amplitude in range 0 to 2' * 2**(width-1), where amplitude > 1 causes clipping." - width: 17 - bit_offset: 0 address_offset: 0xC + bit_offset: 0 + mm_width: 17 # MM port for mms_diag_wg_wideband.vhd - mm_port_name: RAM_DIAG_WG - mm_port_description: "Waveform buffer." mm_port_type: RAM + mm_port_description: "Waveform buffer." number_of_mm_ports: g_nof_streams fields: - - field_name: data field_description: "Waveform default is one sinus period (diag_sin_1024x18.hex)." - width: 18 # = c_wg_buf_dat_w in node_adc_input_and_timing.vhd - address_offset: 0x0 number_of_fields: 1024 # = 2**c_wg_buf_addr_w in node_adc_input_and_timing.vhd + address_offset: 0x0 + mm_width: 18 # = c_wg_buf_dat_w in node_adc_input_and_timing.vhd - peripheral_name: diag_data_buffer # pi_diag_data_buffer.py peripheral_description: "Data buffer (DB)" @@ -71,27 +71,27 @@ peripherals: mm_ports: # MM port for mms_diag_data_buffer.vhd - mm_port_name: REG_DIAG_DB - mm_port_description: "Data buffer status." mm_port_type: REG + mm_port_description: "Data buffer status." number_of_mm_ports: g_nof_streams fields: - - field_name: sync_cnt field_description: "Number of times the DB has been written." - access_mode: RO address_offset: 0x0 + access_mode: RO - - field_name: word_cnt field_description: "Number data words in the DB." - access_mode: RO address_offset: 0x4 + access_mode: RO # MM port for mms_diag_data_buffer.vhd - mm_port_name: RAM_DIAG_DB - mm_port_description: "Data buffer memory, gets filled after the sync when g_use_in_sync = True, else after the last word was read." mm_port_type: RAM + mm_port_description: "Data buffer memory, gets filled after the sync when g_use_in_sync = True, else after the last word was read." number_of_mm_ports: g_nof_streams fields: - - field_name: data field_description: "" - width: g_data_w - address_offset: 0x0 number_of_fields: g_nof_data + address_offset: 0x0 + mm_width: g_data_w diff --git a/libraries/base/dp/dp.peripheral.yaml b/libraries/base/dp/dp.peripheral.yaml index 2d2b0570c3c965e81927fb4b479bb79817c3d709..7a8008c0e8addecda2dee9e1579f39f0fd09c9d6 100644 --- a/libraries/base/dp/dp.peripheral.yaml +++ b/libraries/base/dp/dp.peripheral.yaml @@ -16,8 +16,8 @@ peripherals: fields: - - field_name: rd_usedw field_description: "Number of words that can be read from the FIFO." - access_mode: RO address_offset: 0x0 + access_mode: RO # MM port for mms_dp_fifo_to_mm.vhd / dp_fifo_to_mm.vhd - mm_port_name: REG_DPMM_DATA # Use REG_, instead of preferred FIFO_, to match mm_port_name in pi_dpmm.py mm_port_type: FIFO @@ -25,8 +25,8 @@ peripherals: fields: - - field_name: rd_data field_description: "Read data from the FIFO." - access_mode: RO address_offset: 0x0 + access_mode: RO - peripheral_name: mmdp # pi_mmdp.py @@ -39,13 +39,13 @@ peripherals: fields: - - field_name: wr_usedw field_description: "Number of words that are in the write FIFO." - access_mode: RO address_offset: 0x0 + access_mode: RO - - field_name: wr_availw field_description: "Number of words that can be written to the write FIFO." - access_mode: RO address_offset: 0x4 + access_mode: RO # MM port for mms_dp_fifo_from_mm.vhd / dp_fifo_from_mm.vhd - mm_port_name: REG_MMDP_DATA # Use REG_, instead of preferred FIFO_, to match mm_port_name in pi_mmdp.py mm_port_type: FIFO @@ -53,8 +53,8 @@ peripherals: fields: - - field_name: data field_description: "Write data to the FIFO." - access_mode: WO address_offset: 0x0 + access_mode: WO - peripheral_name: dp_xonoff # pi_dp_xonoff.py @@ -73,10 +73,10 @@ peripherals: field_description: | "When enable_stream = 0 the data stream is stopped, else when 1 then the data stream is passed on. Toggling the data stream on or off happens at block or packet boundaries." - width: 1 - access_mode: RW - address_offset: 0x0 number_of_fields: 1 #g_nof_streams #sel_a_b(g_combine_streams, 1, g_nof_streams) + address_offset: 0x0 + mm_width: 1 + access_mode: RW - peripheral_name: dp_shiftram # pi_dp_shiftram.py @@ -95,9 +95,9 @@ peripherals: fields: - - field_name: shift field_description: "Fill level of the sample delay buffer in number of data samples." - width: ceil_log2(g_nof_words) - access_mode: RW address_offset: 0x0 + mm_width: ceil_log2(g_nof_words) + access_mode: RW - peripheral_name: dp_bsn_source # pi_dp_bsn_source.py @@ -116,32 +116,25 @@ peripherals: "When 1 then enable BSN source, else when 0 disable BSN source. If dp_on_pps is 0, then dp_on = 1 enables the BSN source immediately. To enable the BSN source at the next PPS, then first set dp_on_pps = 1. Clearing dp_on stops the BSN source." - width: 1 - access_mode: RW address_offset: 0x0 + mm_width: 1 + access_mode: RW - - field_name: dp_on_pps field_description: "When 1 and dp_on = 1 then enable BSN source at next PPS." - width: 1 + address_offset: 0x0 bit_offset: 1 + mm_width: 1 access_mode: RW - address_offset: 0x0 - - field_name: nof_block_per_sync field_description: "Number of blocks per sync interval." - access_mode: RW address_offset: 0x4 - #- - field_name: bsn_lo - # field_description: "Initial BSN[31:0]" - # access_mode: RW - # address_offset: 0x8 - #- - field_name: bsn_hi - # field_description: "Initial BSN[63:32]" - # access_mode: RW - # address_offset: 0xC + access_mode: RW - - field_name: bsn field_description: "Initial BSN" - access_mode: RW address_offset: 0x8 - radix_width: 64 + user_width: 64 + radix: uint64 + access_mode: RW - peripheral_name: dp_bsn_source_v2 # pi_dp_bsn_source_v2.py @@ -162,37 +155,30 @@ peripherals: "When 1 then enable BSN source, else when 0 disable BSN source. If dp_on_pps is 0, then dp_on = 1 enables the BSN source immediately. To enable the BSN source at the next PPS, then first set dp_on_pps = 1. Clearing dp_on stops the BSN source." - width: 1 - access_mode: RW address_offset: 0x0 + mm_width: 1 + access_mode: RW - - field_name: dp_on_pps field_description: "When 1 and dp_on = 1, then enable BSN source at next PPS." - width: 1 + address_offset: 0x0 bit_offset: 1 + mm_width: 1 access_mode: RW - address_offset: 0x0 - - field_name: nof_block_per_sync field_description: "Number of clock cycles per sync interval." - access_mode: RW address_offset: 0x4 - #- - field_name: bsn_init_lo - # field_description: "Initial BSN[31:0]" - # access_mode: RW - # address_offset: 0x8 - #- - field_name: bsn_init_hi - # field_description: "Initial BSN[63:32]" - # access_mode: RW - # address_offset: 0xC + access_mode: RW - - field_name: bsn_init field_description: "Initial BSN" - access_mode: RW address_offset: 0x8 - radix_width: 64 + user_width: 64 + radix: uint64 + access_mode: RW - - field_name: bsn_time_offset field_description: "The BSN block time offset in number of clock cycles, with respect to the PPS." - width: g_bsn_time_offset_w - access_mode: RW address_offset: 0x10 + mm_width: g_bsn_time_offset_w + access_mode: RW - peripheral_name: dp_bsn_scheduler # pi_dp_bsn_scheduler.py @@ -203,19 +189,12 @@ peripherals: mm_port_type: REG mm_port_description: "" fields: - #- - field_name: scheduled_bsn_lo - # field_description: "Write scheduled BSN lo, read current BSN lo. First access lo, then hi." - # access_mode: RW - # address_offset: 0x0 - #- - field_name: scheduled_bsn_hi - # field_description: "Write scheduled BSN hi, read current BSN hi. First access lo, then hi." - # access_mode: RW - # address_offset: 0x4 - - field_name: scheduled_bsn field_description: "Write scheduled BSN. First access lo, then hi." - access_mode: RW address_offset: 0x0 - radix_width: 64 + user_width: 64 + radix: uint64 + access_mode: RW - peripheral_name: dp_bsn_monitor # pi_dp_bsn_monitor.py @@ -232,64 +211,50 @@ peripherals: fields: - - field_name: xon_stable field_description: "Data block flow control xon signal was active and stable during last sync interval." - width: 1 + address_offset: 0x0 bit_offset: 0 + mm_width: 1 access_mode: RO - address_offset: 0x0 - - field_name: ready_stable field_description: "Clock cycle flow control ready signal was active and stable during last sync interval." - width: 1 + address_offset: 0x0 bit_offset: 1 + mm_width: 1 access_mode: RO - address_offset: 0x0 - - field_name: sync_timeout field_description: "Data stream sync did not occur during last sync interval." - width: 1 + address_offset: 0x0 bit_offset: 2 # EK TODO: 2 is correct, but using 1 cause gen_doc.py to fail without clear error, because fields then overlap + mm_width: 1 access_mode: RO - address_offset: 0x0 - #- - field_name: bsn_at_sync_lo - # field_description: "Data stream BSN lo at sync." - # access_mode: RO - # address_offset: 0x4 - #- - field_name: bsn_at_sync_hi - # field_description: "Data stream BSN hi at sync." - # access_mode: RO - # address_offset: 0x8 - - field_name: bsn_at_sync field_description: "Data stream BSN at sync." - access_mode: RO address_offset: 0x4 - radix_width: 64 + user_width: 64 + radix: uint64 + access_mode: RO - - field_name: nof_sop field_description: "Number data blocks (sop = start of packet) during last sync interval." - access_mode: RO address_offset: 0xC + access_mode: RO - - field_name: nof_valid field_description: "Number valid samples of the data blocks during last sync interval (= nof_sop * block size)." - access_mode: RO address_offset: 0x10 + access_mode: RO - - field_name: nof_err field_description: "Number data blocks with error indication during last sync interval." - access_mode: RO address_offset: 0x14 - #- - field_name: bsn_first_lo - # field_description: "First data stream BSN lo ever." - # access_mode: RO - # address_offset: 0x18 - #- - field_name: bsn_first_hi - # field_description: "First data stream BSN hi ever." - # access_mode: RO - # address_offset: 0x1C + access_mode: RO - - field_name: bsn_first field_description: "First data stream BSN ever." - access_mode: RO address_offset: 0x18 - radix_width: 64 + user_width: 64 + radix: uint64 + access_mode: RO - - field_name: bsn_first_cycle_cnt field_description: "Arrival latency of first data stream BSN ever, relative to local sync." - access_mode: RO address_offset: 0x20 + access_mode: RO - peripheral_name: dp_bsn_monitor_v2 # pi_dp_bsn_monitor_v2.py @@ -306,51 +271,44 @@ peripherals: fields: - - field_name: xon_stable field_description: "Data block flow control xon signal was active and stable during last sync interval." - width: 1 + address_offset: 0x0 bit_offset: 0 + mm_width: 1 access_mode: RO - address_offset: 0x0 - - field_name: ready_stable field_description: "Clock cycle flow control ready signal was active and stable during last sync interval." - width: 1 + address_offset: 0x0 bit_offset: 1 + mm_width: 1 access_mode: RO - address_offset: 0x0 - - field_name: sync_timeout field_description: "Data stream sync did not occur during last sync interval." - width: 1 + address_offset: 0x0 bit_offset: 1 + mm_width: 1 access_mode: RO - address_offset: 0x0 - #- - field_name: bsn_at_sync_lo - # field_description: "Data stream BSN lo at sync." - # access_mode: RO - # address_offset: 0x4 - #- - field_name: bsn_at_sync_hi - # field_description: "Data stream BSN hi at sync." - # access_mode: RO - # address_offset: 0x8 - - field_name: bsn_at_sync field_description: "Data stream BSN at sync." - access_mode: RO address_offset: 0x4 - radix_width: 64 + user_width: 64 + radix: uint64 + access_mode: RO - - field_name: nof_sop field_description: "Number data blocks (sop = start of packet) during last sync interval." - access_mode: RO address_offset: 0xC + access_mode: RO - - field_name: nof_valid field_description: "Number valid samples of the data blocks during last sync interval (= nof_sop * block size)." - access_mode: RO address_offset: 0x10 + access_mode: RO - - field_name: nof_err field_description: "Number data blocks with error indication during last sync interval." - access_mode: RO address_offset: 0x14 + access_mode: RO - - field_name: latency field_description: "Arrival latency of data stream BSN at sync, relative to local sync." - access_mode: RO address_offset: 0x20 + access_mode: RO - peripheral_name: dp_selector # pi_dp_selector.py @@ -365,6 +323,6 @@ peripherals: field_description: | "When input_select = 0 select the reference data stream(s), else when 1 select the other data stream(s). The input_select is synchronsized to the start of a sync interval." - width: 1 - access_mode: RW address_offset: 0x0 + mm_width: 1 + access_mode: RW diff --git a/libraries/base/reorder/reorder.peripheral.yaml b/libraries/base/reorder/reorder.peripheral.yaml index d74d0333fecd7b8a8243da6ffa36e6847b71716a..fa238d51081386f0d1330737dc6f921421944d0a 100644 --- a/libraries/base/reorder/reorder.peripheral.yaml +++ b/libraries/base/reorder/reorder.peripheral.yaml @@ -22,13 +22,13 @@ peripherals: mm_ports: # MM port for reorder_col_wide.vhd / reorder_col.vhd - mm_port_name: RAM_SS_SS_WIDE - mm_port_description: "" mm_port_type: RAM + mm_port_description: "" number_of_mm_ports: g_wb_factor fields: - - field_name: index field_description: "" - width: ceil_log2(g_nof_ch_in) - address_offset: 0x0 number_of_fields: g_nof_ch_sel + address_offset: 0x0 + mm_width: ceil_log2(g_nof_ch_in) diff --git a/libraries/dsp/bf/bf.peripheral.yaml b/libraries/dsp/bf/bf.peripheral.yaml index 12c36e3e1a9c95371dbcca9f63b5a2f2d83604fb..0a2824614a9051f0822a1bc9153e0c4827711381 100644 --- a/libraries/dsp/bf/bf.peripheral.yaml +++ b/libraries/dsp/bf/bf.peripheral.yaml @@ -7,7 +7,9 @@ hdl_library_description: " This is the description for the bf package " peripherals: - peripheral_name: bf - + peripheral_description: | + "This is the beamformer unit" + parameters: - { name: g_bf.in_weights_w , value: 16 } - { name: g_bf.nof_weights , value: 256 } @@ -18,62 +20,59 @@ peripherals: mm_ports: # ram_bf_weights - - mm_port_name : WEIGHTS - number_of_mm_ports: g_bf.nof_weights + - mm_port_name: WEIGHTS mm_port_type: RAM + mm_port_description: > + " " + number_of_mm_ports: g_bf.nof_weights fields: - - - field_name : bf_weights - width : g_bf.in_weights_w * c_nof_complex - - number_of_fields: g_bf.nof_signal_paths + - - field_name: bf_weights field_description: | - "Contains the weights. + "Contains the weights. The real and the imaginary parts are concatenated: W_real in Lower part. W_imag in Higher part." - mm_port_description: > - " " + number_of_fields: g_bf.nof_signal_paths + mm_width: g_bf.in_weights_w * c_nof_complex + # ram_ss_ss_wide - - mm_port_name : SS_SS_WIDE - number_of_mm_ports: g_bf.nof_weights + - mm_port_name: SS_SS_WIDE mm_port_type: RAM + mm_port_description: > + " " + number_of_mm_ports: g_bf.nof_weights fields: - - - field_name : ss_ss_wide - width : 32 - number_of_fields: g_bf.nof_subbands * g_bf.nof_input_streams * c_nof_signal_paths_per_stream # 16*4=64, nof_input_streams*nof_signal_paths_per_stream + - - field_name: ss_ss_wide field_description: | "Contains the addresses to select from the stored subbands." - mm_port_description: > - " " + number_of_fields: g_bf.nof_subbands * g_bf.nof_input_streams * c_nof_signal_paths_per_stream # 16*4=64, nof_input_streams*nof_signal_paths_per_stream + mm_width: 32 # ram_st_sst_bf - - mm_port_name : ST_SST - number_of_mm_ports: g_bf.nof_weights + - mm_port_name: ST_SST mm_port_type: RAM + mm_port_description: > + " " + number_of_mm_ports: g_bf.nof_weights fields: - - - field_name : st_sst_bf - width : 56 - number_of_fields: 512 - access_mode : RO + - - field_name: st_sst_bf field_description: | "Contains the weights. The real and the imaginary parts are concatenated: W_real in Lower part. W_imag in Higher part." - mm_port_description: > - " " + number_of_fields: 512 + mm_width: 56 + access_mode : RO # reg_st_sst_bf - mm_port_name : treshold - number_of_mm_ports: 1 mm_port_type: REG + mm_port_description: > + " " + number_of_mm_ports: 1 fields: - - - field_name : treshold - address_offset: 0x0 - field_description : | + - - field_name: treshold + field_description: | "When the treshold register is set to 0 the statistics will be auto-correlations. In case the treshold register is set to a non-zero value, it allows to create a sample & hold function for the a-input of the multiplier. The a-input of the multiplier is updated every treshold clockcycle. Thereby cross statistics can be created." - mm_port_description: > - " " - - peripheral_description: | - "This is the beamformer unit" + address_offset: 0x0 diff --git a/libraries/dsp/filter/filter.peripheral.yaml b/libraries/dsp/filter/filter.peripheral.yaml index af75840c8d526380dcf05aeb4acab04678f8e6de..0e13878acb86d6fbb3315e8cc5692b88869b4225 100644 --- a/libraries/dsp/filter/filter.peripheral.yaml +++ b/libraries/dsp/filter/filter.peripheral.yaml @@ -8,37 +8,46 @@ hdl_library_description: "Poly-phase filter (PPF) for a Wideband Poly-phase filt peripherals: - peripheral_name: fil_ppf_w # pi_fil_ppf_w.py peripheral_description: | - "PPF FIR filter for wideband data streams, all data streams use the same FIR coefficients. - The PPF has g_nof_bands phases, where g_nof_bands is equal to the size of the FFT in the - PFB. The PPF has g_nof_taps FIR taps per phase. Hence the total number of FIR coefficients - is g_nof_taps * g_nof_bands. - The PPF can process a data stream that is clocked at a wideband factor g_wb_factor higher - data rate, by running g_wb_factor parts in parallel. + "PPF FIR filter for wideband data streams, all g_fil_ppf.nof_streams use the same FIR + coefficients. The PPF has g_fil_ppf.nof_bands poly phases, where g_fil_ppf.nof_bands is + equal to the size (number of points) of the FFT in the PFB. The PPF has + g_fil_ppf.nof_taps FIR taps per poly phase. Hence the total number of FIR coefficients + is g_fil_ppf.nof_taps * g_fil_ppf.nof_bands. + The PPF can process a data stream that is clocked at a wideband factor g_fil_ppf.wb_factor + higher data rate, by running g_fil_ppf.wb_factor parts in parallel. The + g_fil_ppf.wb_factor >= 1 and a power of 2. + The PPF can process 2**g_fil_ppf.nof_chan channels that are multiplexed in time in + a data stream when g_fil_ppf.nof_chan > 0. Therefore typically when g_fil_ppf.nof_chan > 0 + then g_fil_ppf.wb_factor = 1, and when g_fil_ppf.wb_factor > 1 then g_fil_ppf.nof_chan = 0, + because time multiplexing is only useful when the processing clock rate is faster then the + data stream rate. The FIR coefficients are real values." parameters: # Parameters of fil_ppf_wide.vhd - - { name: g_wb_factor, value: 1 } - - { name: g_nof_taps, value: 8 } - - { name: g_nof_bands, value: 256 } - - { name: g_coef_dat_w, value: 16 } + - { name: g_fil_ppf.wb_factor, value: 1 } + - { name: g_fil_ppf.nof_chan, value: 0 } + - { name: g_fil_ppf.nof_bands, value: 256 } + - { name: g_fil_ppf.nof_taps, value: 8 } + - { name: g_fil_ppf.nof_streams, value: 1 } + - { name: g_fil_ppf.coef_dat_w, value: 16 } mm_ports: # MM port for fil_ppf_wide.vhd / fil_ppf_single.vhd - mm_port_name: RAM_FIL_COEFS + mm_port_type: RAM mm_port_description: | - "The FIR filter coefficients are stored in blocks of g_nof_bands/g_wb_factor real - coefficients: + "The FIR filter coefficients are stored in blocks of g_fil_ppf.nof_bands/g_fil_ppf.wb_factor + real coefficients: - (int16)coefs[g_wb_factor][g_nof_taps][g_nof_bands/g_wb_factor] + (int16)coefs[g_fil_ppf.wb_factor][g_fil_ppf.nof_taps][g_fil_ppf.nof_bands/g_fil_ppf.wb_factor] - For g_wb_factor = 1 this reduces to g_nof_taps blocks of g_nof_bands/g_wb_factor - coefficients: + For g_fil_ppf.wb_factor = 1 this reduces to g_fil_ppf.nof_taps blocks of + g_fil_ppf.nof_bands/g_fil_ppf.wb_factor coefficients: - (int16)coefs[g_nof_taps][g_nof_bands]" - mm_port_type: RAM - number_of_mm_ports: g_wb_factor * g_nof_taps + (int16)coefs[g_fil_ppf.nof_taps][g_fil_ppf.nof_bands]" + number_of_mm_ports: g_fil_ppf.wb_factor * g_fil_ppf.nof_taps fields: - - field_name: coef field_description: "Real FIR filter coefficient" - width: g_coef_dat_w + number_of_fields: g_fil_ppf.nof_bands / g_fil_ppf.wb_factor address_offset: 0x0 - number_of_fields: g_nof_bands / g_wb_factor + mm_width: g_fil_ppf.coef_dat_w diff --git a/libraries/dsp/fringe_stop/fringe_stop.peripheral.yaml b/libraries/dsp/fringe_stop/fringe_stop.peripheral.yaml index 2872466d08baf491453e722ba3bd0403fb03ed53..514869711c507f52a70603d41165b33dfb609efa 100644 --- a/libraries/dsp/fringe_stop/fringe_stop.peripheral.yaml +++ b/libraries/dsp/fringe_stop/fringe_stop.peripheral.yaml @@ -7,85 +7,56 @@ hdl_library_description: " This is the description for the finge_stop library " peripherals: - peripheral_name: fringe_stop - - parameters: - - { name: g_nof_channels, value: 256 } - - { name: g_fs_offset_w , value: 10 } - - { name: g_fs_step_w , value: 17 } - - mm_ports: - # actual hdl name: ram_fringe_stop_step - - mm_port_name : STEP - mm_port_type : RAM - fields: - - - field_name : fringe_stop_step - width: g_fs_step_w - number_of_fields: g_nof_channels - field_description: | - "Contains the step size for all nof_channels channels." - mm_port_description: " " - - # actual hdl name: fringe_stop_offset - - mm_port_name : STOP_OFFSET - mm_port_type : RAM - fields: - - - field_name: fringe_stop_offset - width: g_fs_offset_w - number_of_fields: g_nof_channels - field_description: | - "Contains the offset for all nof_channels channels." - mm_port_description: " " - peripheral_description: | "The fringe stopping peripheral is based on piecewise linear coefficients. The coefficients are indicated as offset and step. The offset and step are used to calculate an index that is used to select a certain phase from a look-up table. The look-up table contains a series of complex values that are based on a sinewave. The length of the look-up table is determined by the width of the offset RAM (offset_w). If offset_w = 10 then the length of the look-up table is 2^offset_w=1024. In that case the look-up table contains 1024 complex values that make one sine-wave period. - + The index is determined as follows: - + index(t) = (offset + step*t) MOD 2^offset_w - + Where t ranges from 0 to Tmax-1. Tmax is the number of samples that fit in the control interval (the sync interval). The fringe stop peripheral is capable to process 1 or more channels in series (nof_channels). - + Accumulation Register The accumulation register that maintains the accumulated step value is flushed by the sync pulse in the system. The accumulation register in the Apertif case is 31 bit wide. For the additon of the offset and the accumulated step the 10 (offset_w) highest bit of the accumulated value are used --> offset(9:0) + step_accumulated(30:21). - + RAMs The fringe stop interface is facilitated by two RAMs: - + -RAM_FRINGE_STOP_OFFSET -RAM_FRINGE_STOP_STEP - + Both RAMs are implemented as dual-page RAMs.The page swap is triggered by the sync-pulse. The VHDL is always accessing the page that is NOT accessible for the software and vice-versa. This means that the values that are written to the RAMs will only be actually used in the following sync-interval: - - - A| _ T0 _ T1 _ T2 + + + A| _ T0 _ T1 _ T2 A| sync __| |___________________________| |___________________________| |________________________ - A| | VHDL uses data T0 | VHDL uses data T1 | VHDL uses data T2 + A| | VHDL uses data T0 | VHDL uses data T1 | VHDL uses data T2 A| | Software writes data T1 | Software writes data T2 | Software writes data T3 - A| | | | - A| page_swap page_swap page_swap - - + A| | | | + A| page_swap page_swap page_swap + + The software should be sure to write the next set of data before the sync_interval expires. Keeping track of the synchronization with the sync-pulse can be done, using one of the BSN Monitors in the system. In the Apertif system the BSN Monitor at the input of the beamformer can be used. - + The number_of_fields of both RAMs is determined by the number of unique channels that ought to be processed. - + RAM_FRINGE_STOP_OFFSET This RAM contains the offset values for all channels, ranging from Channel 0 to Channel Max-1. The width of the RAM is defined by the offset_w. - + +-----------------------------------------+ - | RAM_address | RAM_content | + | RAM_address | RAM_content | |-----------------------------------------| | 0x0 | Offset_Channel_0 | | 0x1 | Offset_Channel_1 | @@ -94,13 +65,13 @@ peripherals: | .. | .. | | .. | Offset_Channel_Max-1 | +-----------------------------------------+ - + RAM_FRINGE_STOP_STEP This RAM contains the step size values for all channels, ranging from Channel 0 to Channel Max-1. The width of the RAM is specified by the step_w. - + +-----------------------------------------+ - | RAM_address | RAM_content | + | RAM_address | RAM_content | |-----------------------------------------| | 0x0 | Step_Channel_0 | | 0x1 | Step_Channel_1 | @@ -109,4 +80,30 @@ peripherals: | .. | .. | | .. | Step_Channel_Max-1 | +-----------------------------------------+" - + parameters: + - { name: g_nof_channels, value: 256 } + - { name: g_fs_offset_w , value: 10 } + - { name: g_fs_step_w , value: 17 } + mm_ports: + # actual hdl name: ram_fringe_stop_step + - mm_port_name : STEP + mm_port_type : RAM + mm_port_description: " " + fields: + - - field_name : fringe_stop_step + field_description: | + "Contains the step size for all nof_channels channels." + mm_width: g_fs_step_w + number_of_fields: g_nof_channels + + # actual hdl name: fringe_stop_offset + - mm_port_name : STOP_OFFSET + mm_port_type : RAM + mm_port_description: " " + fields: + - - field_name: fringe_stop_offset + field_description: | + "Contains the offset for all nof_channels channels." + number_of_fields: g_nof_channels + mm_width: g_fs_offset_w + diff --git a/libraries/dsp/si/si.peripheral.yaml b/libraries/dsp/si/si.peripheral.yaml index 470bac8cdd0d81af50ff66cb9e581e19edb23db2..206534545d065f54e4b155f8ba1086225391e6c0 100644 --- a/libraries/dsp/si/si.peripheral.yaml +++ b/libraries/dsp/si/si.peripheral.yaml @@ -11,10 +11,10 @@ peripherals: mm_ports: # MM port for si_arr.vhd - mm_port_name: REG_SI - mm_port_description: "In the even Nyquist zones the sampled spectrum gets flipped in frequency. This flip can be compensated for by enabling spectral inversion (SI)." mm_port_type: REG + mm_port_description: "In the even Nyquist zones the sampled spectrum gets flipped in frequency. This flip can be compensated for by enabling spectral inversion (SI)." fields: - - field_name: enable field_description: "When 0 then pass on the array of input signals, when 1 then enable spectral inversion for all the input signals." - width: 1 address_offset: 0x0 + mm_width: 1 diff --git a/libraries/dsp/st/st.peripheral.yaml b/libraries/dsp/st/st.peripheral.yaml index c7c9f0c1f8718215ec467035485555bc0c4dac51..13bbf592e2000dc1d0336ff519d3f8050e8cdef1 100644 --- a/libraries/dsp/st/st.peripheral.yaml +++ b/libraries/dsp/st/st.peripheral.yaml @@ -17,25 +17,27 @@ peripherals: # Parameters of st_sst.vhd - { name: g_nof_stat, value: 512 } # nof accumulators - { name: g_xst_enable, value: False } # False for auto powers, True for cross powers - - { name: g_stat_data_w, value: 64 } # statistics accumulator width in bits - - { name: g_stat_data_sz, value: 2 } # statistics accumulator width in 32b MM words + - { name: g_stat_data_w, value: 64 } # statistics accumulator user_width in bits + - { name: g_stat_data_sz, value: 2 } # statistics accumulator user_width in 32b MM words mm_ports: # MM port for st_sst.vhd - mm_port_name: RAM_ST_SST + mm_port_type: RAM mm_port_description: | "The statistics are calculated for blocks of g_nof_stat time multiplexed data streams. There are g_nof_instances parallel time multiplexed data streams. The statistic power values have g_stat_data_w bits. The memory format is: . g_xst_enable = False, for real powers : (uint32 * g_stat_data_sz)st[g_nof_instances]_[g_nof_stat] . g_xst_enable = True, for complex powers : (cuint32 * g_stat_data_sz)st[g_nof_instances]_[g_nof_stat]" - mm_port_type: RAM number_of_mm_ports: g_nof_instances fields: - - field_name: power field_description: "" - width: g_stat_data_w - address_offset: 0x0 number_of_fields: g_nof_stat * g_stat_data_sz + address_offset: 0x0 + mm_width: 32 + user_width: g_stat_data_w + radix: uint64 - peripheral_name: st_sst_for_sdp # pi_st_sst.py @@ -46,11 +48,12 @@ peripherals: - { name: g_nof_instances, value: 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 width in bits: W_statistic = 64 - - { name: g_stat_data_sz, value: 2 } # statistics accumulator width in 32b MM words: W_statistic_sz = 2 + - { name: g_stat_data_w, value: 54 } # statistics accumulator user_width in bits: W_statistic = 64 + - { name: g_stat_data_sz, value: 2 } # statistics accumulator user_width in 32b MM words: W_statistic_sz = 2 mm_ports: # MM port for st_sst.vhd - mm_port_name: RAM_ST_SST + mm_port_type: RAM mm_port_description: | "The subband statistics per PN are stored in g_nof_instances = P_pfb = S_pn / Q_fft = 6 blocks of N_sub * Q_fft = 512 * 2 = 1024 real values as: @@ -58,15 +61,15 @@ peripherals: (uint64)SST[g_nof_instances]_[g_nof_stat] = (uint64)SST[S_pn/Q_fft]_[N_sub][Q_fft] where S_pn = 12, Q_fft = 2 and N_sub = 512 are defined in sdp_pkg.vhd." - mm_port_type: RAM number_of_mm_ports: g_nof_instances fields: - - field_name: power field_description: "" - width: 32 - address_offset: 0x0 number_of_fields: g_nof_stat * g_stat_data_sz - radix_width: g_stat_data_w + address_offset: 0x0 + mm_width: 32 + user_width: g_stat_data_w + radix: uint64 - peripheral_name: st_bst_for_sdp # pi_st_bst.py @@ -77,23 +80,24 @@ peripherals: - { name: g_nof_instances, value: 6 } # 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 width in bits: W_statistic = 64 - - { name: g_stat_data_sz, value: 2 } # statistics accumulator width in 32b MM words: W_statistic_sz = 2 + - { name: g_stat_data_w, value: 54 } # statistics accumulator user_width in bits: W_statistic = 64 + - { name: g_stat_data_sz, value: 2 } # statistics accumulator user_width in 32b MM words: W_statistic_sz = 2 mm_ports: # MM port for st_sst.vhd - mm_port_name: RAM_ST_SST + mm_port_type: RAM mm_port_description: | "The beamlet statistics per PN are stored in 1 block of S_sub_bf * N_pol_bf = 488 * 2 = 976 real values as: (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." - mm_port_type: RAM number_of_mm_ports: 1 fields: - - field_name: power field_description: "" - width: 32 - address_offset: 0x0 number_of_fields: g_nof_stat * g_stat_data_sz - radix_width: g_stat_data_w + address_offset: 0x0 + mm_width: 32 + user_width: g_stat_data_w + radix: uint64 diff --git a/libraries/io/aduh/aduh.peripheral.yaml b/libraries/io/aduh/aduh.peripheral.yaml index c364451f0f3de254af4406b59b016b9535923307..5f19809c1d61f2637f413ce97ce5adae7f62935b 100644 --- a/libraries/io/aduh/aduh.peripheral.yaml +++ b/libraries/io/aduh/aduh.peripheral.yaml @@ -20,20 +20,20 @@ peripherals: fields: - - field_name: mean_sum_lo field_description: "Mean sum[31:0] of samples during a sync interval." - access_mode: RO address_offset: 0x0 + access_mode: RO - - field_name: mean_sum_hi field_description: "Mean sum[63:32] of samples during a sync interval." - access_mode: RO address_offset: 0x4 + access_mode: RO - - field_name: power_sum_lo field_description: "Power sum[31:0] of sample powers during a sync interval." - access_mode: RO address_offset: 0x8 + access_mode: RO - - field_name: power_sum_hi field_description: "Power sum[63:32] of sample powers during a sync interval." - access_mode: RO address_offset: 0xC + access_mode: RO - peripheral_name: aduh_mon_data_buffer # pi_aduh_monitor.py peripheral_description: "Data buffer to capture samples (= diag_data_buffer)" @@ -53,7 +53,7 @@ peripherals: fields: - - field_name: data field_description: "" - width: g_symbol_w * g_nof_symbols_per_data - address_offset: 0x0 number_of_fields: g_buffer_nof_symbols / g_nof_symbols_per_data + address_offset: 0x0 + mm_width: g_symbol_w * g_nof_symbols_per_data diff --git a/libraries/io/epcs/epcs.peripheral.yaml b/libraries/io/epcs/epcs.peripheral.yaml index 2026d2bdf28c1bf9ae67ec48f00edf13fb94b0f5..8a0d28ba86093e3888bb6eb6a4b30921ea844c32 100644 --- a/libraries/io/epcs/epcs.peripheral.yaml +++ b/libraries/io/epcs/epcs.peripheral.yaml @@ -27,45 +27,45 @@ peripherals: fields: - - field_name: addr field_description: "Address to write to or read from." - width: 24 - access_mode: WO address_offset: 0x0 + mm_width: 24 + access_mode: WO - - field_name: rden field_description: "Read enable bit." - width: 1 - access_mode: WO address_offset: 0x4 + mm_width: 1 + access_mode: WO - - field_name: read_bit field_description: "Read bit." - width: 1 + address_offset: 0x8 + mm_width: 1 access_mode: WO side_effect: PW - address_offset: 0x8 - - field_name: write_bit field_description: "Write bit." - width: 1 + address_offset: 0xc + mm_width: 1 access_mode: WO side_effect: PW - address_offset: 0xc - - field_name: sector_erase field_description: "Sector erase bit." - width: 1 - access_mode: WO address_offset: 0x10 + mm_width: 1 + access_mode: WO - - field_name: busy field_description: "Busy bit." - width: 1 - access_mode: RO address_offset: 0x14 + mm_width: 1 + access_mode: RO - - field_name: unprotect field_description: "Use 0xBEDA221E (= Bedazzle) as password to unprotect address range." - width: 32 - access_mode: WO address_offset: 0x18 + mm_width: 32 + access_mode: WO diff --git a/libraries/io/eth/eth.peripheral.yaml b/libraries/io/eth/eth.peripheral.yaml index 5593e60c884be463d06bf6bce75c1443c9f71e7c..e98da05be1818690181856cb6e972b9b8c50b64d 100644 --- a/libraries/io/eth/eth.peripheral.yaml +++ b/libraries/io/eth/eth.peripheral.yaml @@ -22,9 +22,9 @@ peripherals: fields: - - field_name: status field_description: "" - access_mode: RO - address_offset: 0x0 number_of_fields: 1024 # = c_tech_tse_byte_addr_w in tech_tse_pkg.vhd + address_offset: 0x0 + access_mode: RO # MM port for registers in eth_mm_registers.vhd in the ETH module [2] - mm_port_name: AVS_ETH_0_REG @@ -33,9 +33,9 @@ peripherals: fields: - - field_name: status field_description: "" - access_mode: RO - address_offset: 0x0 number_of_fields: 12 # = c_eth_reg_nof_words in eth_pkg.vhd + address_offset: 0x0 + access_mode: RO # MM port for ETH packet packet buffers in eth.vhd - mm_port_name: AVS_ETH_0_RAM diff --git a/libraries/io/nw_10GbE/nw_10GbE.peripheral.yaml b/libraries/io/nw_10GbE/nw_10GbE.peripheral.yaml index c70b59c3b9abca3930868c04f33f630373978632..05a3c22d5427bee0324743a72f9ea6294afe1dfa 100644 --- a/libraries/io/nw_10GbE/nw_10GbE.peripheral.yaml +++ b/libraries/io/nw_10GbE/nw_10GbE.peripheral.yaml @@ -31,120 +31,120 @@ peripherals: mm_port_description: "MAC registers" number_of_mm_ports: g_nof_macs fields: - - - {field_name: rx_transfer_control, width: 1, access_mode: RW, address_offset: 0x0000 } # = 0x0000 - - - {field_name: rx_transfer_status, width: 1, access_mode: RO, address_offset: 0x0004 } # = 0x0001 - - - {field_name: rx_padcrc_control, width: 2, access_mode: RW, address_offset: 0x0100 } # = 0x0040 - - - {field_name: rx_crccheck_control, width: 2, access_mode: RW, address_offset: 0x0200 } # = 0x0080 - - - {field_name: rx_pktovrflow_error, width: 32, access_mode: RO, address_offset: 0x0300, radix_width: 36 } # = 0x00C0 - - - {field_name: rx_pktovrflow_etherStatsDropEvents, width: 32, access_mode: RO, address_offset: 0x0308, radix_width: 36 } # = 0x00C2 - - - {field_name: rx_lane_decoder_preamble_control, width: 1, access_mode: RW, address_offset: 0x0400 } # = 0x0100 - - - {field_name: rx_preamble_inserter_control, width: 1, access_mode: RW, address_offset: 0x0500 } # = 0x0140 - - - {field_name: rx_frame_control, width: 20, access_mode: RW, address_offset: 0x2000 } # = 0x0800 - - - {field_name: rx_frame_maxlength, width: 16, access_mode: RW, address_offset: 0x2004 } # = 0x0801 - - - {field_name: rx_frame_addr0, width: 16, access_mode: RW, address_offset: 0x2008 } # = 0x0802 - - - {field_name: rx_frame_addr1, width: 16, access_mode: RW, address_offset: 0x200c } # = 0x0803 - - - {field_name: rx_frame_spaddr0_0, width: 16, access_mode: RW, address_offset: 0x2010 } # = 0x0804 - - - {field_name: rx_frame_spaddr0_1, width: 16, access_mode: RW, address_offset: 0x2014 } # = 0x0805 - - - {field_name: rx_frame_spaddr1_0, width: 16, access_mode: RW, address_offset: 0x2018 } # = 0x0806 - - - {field_name: rx_frame_spaddr1_1, width: 16, access_mode: RW, address_offset: 0x201c } # = 0x0807 - - - {field_name: rx_frame_spaddr2_0, width: 16, access_mode: RW, address_offset: 0x2020 } # = 0x0808 - - - {field_name: rx_frame_spaddr2_1, width: 16, access_mode: RW, address_offset: 0x2024 } # = 0x0809 - - - {field_name: rx_frame_spaddr3_0, width: 16, access_mode: RW, address_offset: 0x2028 } # = 0x080A - - - {field_name: rx_frame_spaddr3_1, width: 16, access_mode: RW, address_offset: 0x202c } # = 0x080B - - - {field_name: rx_pfc_control, width: 17, access_mode: RW, address_offset: 0x2060 } # = 0x0818 - - - {field_name: tx_transfer_control, width: 1, access_mode: RW, address_offset: 0x4000 } # = 0x1000 - - - {field_name: tx_transfer_status, width: 1, access_mode: RO, address_offset: 0x4004 } # = 0x1001 - - - {field_name: tx_padins_control, width: 1, access_mode: RW, address_offset: 0x4100 } # = 0x1040 - - - {field_name: tx_crcins_control, width: 2, access_mode: RW, address_offset: 0x4200 } # = 0x1080 - - - {field_name: tx_pktunderflow_error, width: 32, access_mode: RO, address_offset: 0x4300, radix_width: 36 } # = 0x10C0 - - - {field_name: tx_preamble_control, width: 1, access_mode: RW, address_offset: 0x4400 } # = 0x1100 - - - {field_name: tx_pauseframe_control, width: 2, access_mode: RW, address_offset: 0x4500 } # = 0x1140 - - - {field_name: tx_pauseframe_quanta, width: 16, access_mode: RW, address_offset: 0x4504 } # = 0x1141 - - - {field_name: tx_pauseframe_enable, width: 1, access_mode: RW, address_offset: 0x4508 } # = 0x1142 + - - {field_name: rx_transfer_control, mm_width: 1, access_mode: RW, address_offset: 0x0000 } # = 0x0000 + - - {field_name: rx_transfer_status, mm_width: 1, access_mode: RO, address_offset: 0x0004 } # = 0x0001 + - - {field_name: rx_padcrc_control, mm_width: 2, access_mode: RW, address_offset: 0x0100 } # = 0x0040 + - - {field_name: rx_crccheck_control, mm_width: 2, access_mode: RW, address_offset: 0x0200 } # = 0x0080 + - - {field_name: rx_pktovrflow_error, mm_width: 32, user_width: 36, user_word_order: be, radix: uint64, access_mode: RO, address_offset: 0x0300 } # = 0x00C0 + - - {field_name: rx_pktovrflow_etherStatsDropEvents, mm_width: 32, user_width: 36, user_word_order: be, radix: uint64, access_mode: RO, address_offset: 0x0308 } # = 0x00C2 + - - {field_name: rx_lane_decoder_preamble_control, mm_width: 1, access_mode: RW, address_offset: 0x0400 } # = 0x0100 + - - {field_name: rx_preamble_inserter_control, mm_width: 1, access_mode: RW, address_offset: 0x0500 } # = 0x0140 + - - {field_name: rx_frame_control, mm_width: 20, access_mode: RW, address_offset: 0x2000 } # = 0x0800 + - - {field_name: rx_frame_maxlength, mm_width: 16, access_mode: RW, address_offset: 0x2004 } # = 0x0801 + - - {field_name: rx_frame_addr0, mm_width: 16, access_mode: RW, address_offset: 0x2008 } # = 0x0802 + - - {field_name: rx_frame_addr1, mm_width: 16, access_mode: RW, address_offset: 0x200c } # = 0x0803 + - - {field_name: rx_frame_spaddr0_0, mm_width: 16, access_mode: RW, address_offset: 0x2010 } # = 0x0804 + - - {field_name: rx_frame_spaddr0_1, mm_width: 16, access_mode: RW, address_offset: 0x2014 } # = 0x0805 + - - {field_name: rx_frame_spaddr1_0, mm_width: 16, access_mode: RW, address_offset: 0x2018 } # = 0x0806 + - - {field_name: rx_frame_spaddr1_1, mm_width: 16, access_mode: RW, address_offset: 0x201c } # = 0x0807 + - - {field_name: rx_frame_spaddr2_0, mm_width: 16, access_mode: RW, address_offset: 0x2020 } # = 0x0808 + - - {field_name: rx_frame_spaddr2_1, mm_width: 16, access_mode: RW, address_offset: 0x2024 } # = 0x0809 + - - {field_name: rx_frame_spaddr3_0, mm_width: 16, access_mode: RW, address_offset: 0x2028 } # = 0x080A + - - {field_name: rx_frame_spaddr3_1, mm_width: 16, access_mode: RW, address_offset: 0x202c } # = 0x080B + - - {field_name: rx_pfc_control, mm_width: 17, access_mode: RW, address_offset: 0x2060 } # = 0x0818 + - - {field_name: tx_transfer_control, mm_width: 1, access_mode: RW, address_offset: 0x4000 } # = 0x1000 + - - {field_name: tx_transfer_status, mm_width: 1, access_mode: RO, address_offset: 0x4004 } # = 0x1001 + - - {field_name: tx_padins_control, mm_width: 1, access_mode: RW, address_offset: 0x4100 } # = 0x1040 + - - {field_name: tx_crcins_control, mm_width: 2, access_mode: RW, address_offset: 0x4200 } # = 0x1080 + - - {field_name: tx_pktunderflow_error, mm_width: 32, user_width: 36, user_word_order: be, radix: uint64, access_mode: RO, address_offset: 0x4300 } # = 0x10C0 + - - {field_name: tx_preamble_control, mm_width: 1, access_mode: RW, address_offset: 0x4400 } # = 0x1100 + - - {field_name: tx_pauseframe_control, mm_width: 2, access_mode: RW, address_offset: 0x4500 } # = 0x1140 + - - {field_name: tx_pauseframe_quanta, mm_width: 16, access_mode: RW, address_offset: 0x4504 } # = 0x1141 + - - {field_name: tx_pauseframe_enable, mm_width: 1, access_mode: RW, address_offset: 0x4508 } # = 0x1142 # Altera is unclear about the width of the quanta registers. Assuming 32 bits, where bits 16:31 are reserved: - - - {field_name: pfc_pause_quanta_0, width: 32, access_mode: RW, address_offset: 0x4600 } # = 0x1180 - - - {field_name: pfc_pause_quanta_1, width: 32, access_mode: RW, address_offset: 0x4604 } # = 0x1181 - - - {field_name: pfc_pause_quanta_2, width: 32, access_mode: RW, address_offset: 0x4608 } # = 0x1182 - - - {field_name: pfc_pause_quanta_3, width: 32, access_mode: RW, address_offset: 0x460c } # = 0x1183 - - - {field_name: pfc_pause_quanta_4, width: 32, access_mode: RW, address_offset: 0x4610 } # = 0x1184 - - - {field_name: pfc_pause_quanta_5, width: 32, access_mode: RW, address_offset: 0x4614 } # = 0x1185 - - - {field_name: pfc_pause_quanta_6, width: 32, access_mode: RW, address_offset: 0x4618 } # = 0x1186 - - - {field_name: pfc_pause_quanta_7, width: 32, access_mode: RW, address_offset: 0x461c } # = 0x1187 - - - {field_name: pfc_holdoff_quanta_0, width: 32, access_mode: RW, address_offset: 0x4640 } # = 0x1190 - - - {field_name: pfc_holdoff_quanta_1, width: 32, access_mode: RW, address_offset: 0x4644 } # = 0x1191 - - - {field_name: pfc_holdoff_quanta_2, width: 32, access_mode: RW, address_offset: 0x4648 } # = 0x1192 - - - {field_name: pfc_holdoff_quanta_3, width: 32, access_mode: RW, address_offset: 0x464c } # = 0x1193 - - - {field_name: pfc_holdoff_quanta_4, width: 32, access_mode: RW, address_offset: 0x4650 } # = 0x1194 - - - {field_name: pfc_holdoff_quanta_5, width: 32, access_mode: RW, address_offset: 0x4654 } # = 0x1195 - - - {field_name: pfc_holdoff_quanta_6, width: 32, access_mode: RW, address_offset: 0x4658 } # = 0x1196 - - - {field_name: pfc_holdoff_quanta_7, width: 32, access_mode: RW, address_offset: 0x465c } # = 0x1197 - - - {field_name: tx_pfc_priority_enable, width: 8, access_mode: RW, address_offset: 0x4680 } # = 0x11A0 - - - {field_name: tx_addrins_control, width: 1, access_mode: RW, address_offset: 0x4800 } # = 0x1200 - - - {field_name: tx_addrins_macaddr0, width: 32, access_mode: RW, address_offset: 0x4804 } # = 0x1201 - - - {field_name: tx_addrins_macaddr1, width: 16, access_mode: RW, address_offset: 0x4808 } # = 0x1202 - - - {field_name: tx_frame_maxlength, width: 16, access_mode: RW, address_offset: 0x6004 } # = 0x1801 - - - {field_name: rx_stats_clr, width: 1, access_mode: RW, address_offset: 0x3000 } # = 0x0C00 - - - {field_name: tx_stats_clr, width: 1, access_mode: RW, address_offset: 0x7000 } # = 0x1C00 - - - {field_name: rx_stats_framesOK, width: 32, access_mode: RO, address_offset: 0x3008, radix_width: 36 } # = 0x0C02 - - - {field_name: tx_stats_framesOK, width: 32, access_mode: RO, address_offset: 0x7008, radix_width: 36 } # = 0x1C02 - - - {field_name: rx_stats_framesErr, width: 32, access_mode: RO, address_offset: 0x3010, radix_width: 36 } # = 0x0C04 - - - {field_name: tx_stats_framesErr, width: 32, access_mode: RO, address_offset: 0x7010, radix_width: 36 } # = 0x1C04 - - - {field_name: rx_stats_framesCRCErr, width: 32, access_mode: RO, address_offset: 0x3018, radix_width: 36 } # = 0x0C06 - - - {field_name: tx_stats_framesCRCErr, width: 32, access_mode: RO, address_offset: 0x7018, radix_width: 36 } # = 0x1C06 - - - {field_name: rx_stats_octetsOK, width: 32, access_mode: RO, address_offset: 0x3020, radix_width: 36 } # = 0x0C08 - - - {field_name: tx_stats_octetsOK, width: 32, access_mode: RO, address_offset: 0x7020, radix_width: 36 } # = 0x1C08 - - - {field_name: rx_stats_pauseMACCtrl_Frames, width: 32, access_mode: RO, address_offset: 0x3028, radix_width: 36 } # = 0x0C0A - - - {field_name: tx_stats_pauseMACCtrl_Frames, width: 32, access_mode: RO, address_offset: 0x7028, radix_width: 36 } # = 0x1C0A - - - {field_name: rx_stats_ifErrors, width: 32, access_mode: RO, address_offset: 0x3030, radix_width: 36 } # = 0x0C0C - - - {field_name: tx_stats_ifErrors, width: 32, access_mode: RO, address_offset: 0x7030, radix_width: 36 } # = 0x1C0C - - - {field_name: rx_stats_unicast_FramesOK, width: 32, access_mode: RO, address_offset: 0x3038, radix_width: 36 } # = 0x0C0E - - - {field_name: tx_stats_unicast_FramesOK, width: 32, access_mode: RO, address_offset: 0x7038, radix_width: 36 } # = 0x1C0E - - - {field_name: rx_stats_unicast_FramesErr, width: 32, access_mode: RO, address_offset: 0x3040, radix_width: 36 } # = 0x0C10 - - - {field_name: tx_stats_unicast_FramesErr, width: 32, access_mode: RO, address_offset: 0x7040, radix_width: 36 } # = 0x1C10 - - - {field_name: rx_stats_multicastFramesOK, width: 32, access_mode: RO, address_offset: 0x3048, radix_width: 36 } # = 0x0C12 - - - {field_name: tx_stats_multicastFramesOK, width: 32, access_mode: RO, address_offset: 0x7048, radix_width: 36 } # = 0x1C12 - - - {field_name: rx_stats_multicast_FramesErr, width: 32, access_mode: RO, address_offset: 0x3050, radix_width: 36 } # = 0x0C14 - - - {field_name: tx_stats_multicast_FramesErr, width: 32, access_mode: RO, address_offset: 0x7050, radix_width: 36 } # = 0x1C14 - - - {field_name: rx_stats_broadcastFramesOK, width: 32, access_mode: RO, address_offset: 0x3058, radix_width: 36 } # = 0x0C16 - - - {field_name: tx_stats_broadcastFramesOK, width: 32, access_mode: RO, address_offset: 0x7058, radix_width: 36 } # = 0x1C16 - - - {field_name: rx_stats_broadcast_FramesErr, width: 32, access_mode: RO, address_offset: 0x3060, radix_width: 36 } # = 0x0C18 - - - {field_name: tx_stats_broadcast_FramesErr, width: 32, access_mode: RO, address_offset: 0x7060, radix_width: 36 } # = 0x1C18 - - - {field_name: rx_stats_etherStatsOctets, width: 32, access_mode: RO, address_offset: 0x3068, radix_width: 36 } # = 0x0C1A - - - {field_name: tx_stats_etherStatsOctets, width: 32, access_mode: RO, address_offset: 0x7068, radix_width: 36 } # = 0x1C1A - - - {field_name: rx_stats_etherStatsPkts, width: 32, access_mode: RO, address_offset: 0x3070, radix_width: 36 } # = 0x0C1C - - - {field_name: tx_stats_etherStatsPkts, width: 32, access_mode: RO, address_offset: 0x7070, radix_width: 36 } # = 0x1C1C - - - {field_name: rx_stats_etherStats_UndersizePkts, width: 32, access_mode: RO, address_offset: 0x3078, radix_width: 36 } # = 0x0C1E - - - {field_name: tx_stats_etherStats_UndersizePkts, width: 32, access_mode: RO, address_offset: 0x7078, radix_width: 36 } # = 0x1C1E - - - {field_name: rx_stats_etherStats_OversizePkts, width: 32, access_mode: RO, address_offset: 0x3080, radix_width: 36 } # = 0x0C20 - - - {field_name: tx_stats_etherStats_OversizePkts, width: 32, access_mode: RO, address_offset: 0x7080, radix_width: 36 } # = 0x1C20 - - - {field_name: rx_stats_etherStats_Pkts64Octets, width: 32, access_mode: RO, address_offset: 0x3088, radix_width: 36 } # = 0x0C22 - - - {field_name: tx_stats_etherStats_Pkts64Octets, width: 32, access_mode: RO, address_offset: 0x7088, radix_width: 36 } # = 0x1C22 - - - {field_name: rx_stats_etherStats_Pkts65to127Octets, width: 32, access_mode: RO, address_offset: 0x3090, radix_width: 36 } # = 0x0C24 - - - {field_name: tx_stats_etherStats_Pkts65to127Octets, width: 32, access_mode: RO, address_offset: 0x7090, radix_width: 36 } # = 0x1C24 - - - {field_name: rx_stats_etherStats_Pkts128to255Octets, width: 32, access_mode: RO, address_offset: 0x3098, radix_width: 36 } # = 0x0C26 - - - {field_name: tx_stats_etherStats_Pkts128to255Octets, width: 32, access_mode: RO, address_offset: 0x7098, radix_width: 36 } # = 0x1C26 - - - {field_name: rx_stats_etherStats_Pkts256to511Octets, width: 32, access_mode: RO, address_offset: 0x30a0, radix_width: 36 } # = 0x0C28 - - - {field_name: tx_stats_etherStats_Pkts256to511Octets, width: 32, access_mode: RO, address_offset: 0x70a0, radix_width: 36 } # = 0x1C28 - - - {field_name: rx_stats_etherStats_Pkts512to1023Octets, width: 32, access_mode: RO, address_offset: 0x30a8, radix_width: 36 } # = 0x0C2A - - - {field_name: tx_stats_etherStats_Pkts512to1023Octets, width: 32, access_mode: RO, address_offset: 0x70a8, radix_width: 36 } # = 0x1C2A - - - {field_name: rx_stats_etherStat_Pkts1024to1518Octets, width: 32, access_mode: RO, address_offset: 0x30b0, radix_width: 36 } # = 0x0C2C - - - {field_name: tx_stats_etherStat_Pkts1024to1518Octets, width: 32, access_mode: RO, address_offset: 0x70b0, radix_width: 36 } # = 0x1C2C - - - {field_name: rx_stats_etherStats_Pkts1519toXOctets, width: 32, access_mode: RO, address_offset: 0x30b8, radix_width: 36 } # = 0x0C2E - - - {field_name: tx_stats_etherStats_Pkts1519toXOctets, width: 32, access_mode: RO, address_offset: 0x70b8, radix_width: 36 } # = 0x1C2E - - - {field_name: rx_stats_etherStats_Fragments, width: 32, access_mode: RO, address_offset: 0x30c0, radix_width: 36 } # = 0x0C30 - - - {field_name: tx_stats_etherStats_Fragments, width: 32, access_mode: RO, address_offset: 0x70c0, radix_width: 36 } # = 0x1C30 - - - {field_name: rx_stats_etherStats_Jabbers, width: 32, access_mode: RO, address_offset: 0x30c8, radix_width: 36 } # = 0x0C32 - - - {field_name: tx_stats_etherStats_Jabbers, width: 32, access_mode: RO, address_offset: 0x70c8, radix_width: 36 } # = 0x1C32 - - - {field_name: rx_stats_etherStatsCRCErr, width: 32, access_mode: RO, address_offset: 0x30d0, radix_width: 36 } # = 0x0C34 - - - {field_name: tx_stats_etherStatsCRCErr, width: 32, access_mode: RO, address_offset: 0x70d0, radix_width: 36 } # = 0x1C34 - - - {field_name: rx_stats_unicastMACCtrlFrames, width: 32, access_mode: RO, address_offset: 0x30d8, radix_width: 36 } # = 0x0C36 - - - {field_name: tx_stats_unicastMACCtrlFrames, width: 32, access_mode: RO, address_offset: 0x70d8, radix_width: 36 } # = 0x1C36 - - - {field_name: rx_stats_multicastMAC_CtrlFrames, width: 32, access_mode: RO, address_offset: 0x30e0, radix_width: 36 } # = 0x0C38 - - - {field_name: tx_stats_multicastMAC_CtrlFrames, width: 32, access_mode: RO, address_offset: 0x70e0, radix_width: 36 } # = 0x1C38 - - - {field_name: rx_stats_broadcastMAC_CtrlFrames, width: 32, access_mode: RO, address_offset: 0x30e8, radix_width: 36 } # = 0x0C3A - - - {field_name: tx_stats_broadcastMAC_CtrlFrames, width: 32, access_mode: RO, address_offset: 0x70e8, radix_width: 36 } # = 0x1C3A - - - {field_name: rx_stats_PFCMACCtrlFrames, width: 32, access_mode: RO, address_offset: 0x30f0, radix_width: 36 } # = 0x0C3C - - - {field_name: tx_stats_PFCMACCtrlFrames, width: 32, access_mode: RO, address_offset: 0x70f0, radix_width: 36 } # = 0x1C3C + - - {field_name: pfc_pause_quanta_0, mm_width: 32, access_mode: RW, address_offset: 0x4600 } # = 0x1180 + - - {field_name: pfc_pause_quanta_1, mm_width: 32, access_mode: RW, address_offset: 0x4604 } # = 0x1181 + - - {field_name: pfc_pause_quanta_2, mm_width: 32, access_mode: RW, address_offset: 0x4608 } # = 0x1182 + - - {field_name: pfc_pause_quanta_3, mm_width: 32, access_mode: RW, address_offset: 0x460c } # = 0x1183 + - - {field_name: pfc_pause_quanta_4, mm_width: 32, access_mode: RW, address_offset: 0x4610 } # = 0x1184 + - - {field_name: pfc_pause_quanta_5, mm_width: 32, access_mode: RW, address_offset: 0x4614 } # = 0x1185 + - - {field_name: pfc_pause_quanta_6, mm_width: 32, access_mode: RW, address_offset: 0x4618 } # = 0x1186 + - - {field_name: pfc_pause_quanta_7, mm_width: 32, access_mode: RW, address_offset: 0x461c } # = 0x1187 + - - {field_name: pfc_holdoff_quanta_0, mm_width: 32, access_mode: RW, address_offset: 0x4640 } # = 0x1190 + - - {field_name: pfc_holdoff_quanta_1, mm_width: 32, access_mode: RW, address_offset: 0x4644 } # = 0x1191 + - - {field_name: pfc_holdoff_quanta_2, mm_width: 32, access_mode: RW, address_offset: 0x4648 } # = 0x1192 + - - {field_name: pfc_holdoff_quanta_3, mm_width: 32, access_mode: RW, address_offset: 0x464c } # = 0x1193 + - - {field_name: pfc_holdoff_quanta_4, mm_width: 32, access_mode: RW, address_offset: 0x4650 } # = 0x1194 + - - {field_name: pfc_holdoff_quanta_5, mm_width: 32, access_mode: RW, address_offset: 0x4654 } # = 0x1195 + - - {field_name: pfc_holdoff_quanta_6, mm_width: 32, access_mode: RW, address_offset: 0x4658 } # = 0x1196 + - - {field_name: pfc_holdoff_quanta_7, mm_width: 32, access_mode: RW, address_offset: 0x465c } # = 0x1197 + - - {field_name: tx_pfc_priority_enable, mm_width: 8, access_mode: RW, address_offset: 0x4680 } # = 0x11A0 + - - {field_name: tx_addrins_control, mm_width: 1, access_mode: RW, address_offset: 0x4800 } # = 0x1200 + - - {field_name: tx_addrins_macaddr0, mm_width: 32, access_mode: RW, address_offset: 0x4804 } # = 0x1201 + - - {field_name: tx_addrins_macaddr1, mm_width: 16, access_mode: RW, address_offset: 0x4808 } # = 0x1202 + - - {field_name: tx_frame_maxlength, mm_width: 16, access_mode: RW, address_offset: 0x6004 } # = 0x1801 + - - {field_name: rx_stats_clr, mm_width: 1, access_mode: RW, address_offset: 0x3000 } # = 0x0C00 + - - {field_name: tx_stats_clr, mm_width: 1, access_mode: RW, address_offset: 0x7000 } # = 0x1C00 + - - {field_name: rx_stats_framesOK, mm_width: 32, user_width: 36, user_word_order: be, radix: uint64, access_mode: RO, address_offset: 0x3008 } # = 0x0C02 + - - {field_name: tx_stats_framesOK, mm_width: 32, user_width: 36, user_word_order: be, radix: uint64, access_mode: RO, address_offset: 0x7008 } # = 0x1C02 + - - {field_name: rx_stats_framesErr, mm_width: 32, user_width: 36, user_word_order: be, radix: uint64, access_mode: RO, address_offset: 0x3010 } # = 0x0C04 + - - {field_name: tx_stats_framesErr, mm_width: 32, user_width: 36, user_word_order: be, radix: uint64, access_mode: RO, address_offset: 0x7010 } # = 0x1C04 + - - {field_name: rx_stats_framesCRCErr, mm_width: 32, user_width: 36, user_word_order: be, radix: uint64, access_mode: RO, address_offset: 0x3018 } # = 0x0C06 + - - {field_name: tx_stats_framesCRCErr, mm_width: 32, user_width: 36, user_word_order: be, radix: uint64, access_mode: RO, address_offset: 0x7018 } # = 0x1C06 + - - {field_name: rx_stats_octetsOK, mm_width: 32, user_width: 36, user_word_order: be, radix: uint64, access_mode: RO, address_offset: 0x3020 } # = 0x0C08 + - - {field_name: tx_stats_octetsOK, mm_width: 32, user_width: 36, user_word_order: be, radix: uint64, access_mode: RO, address_offset: 0x7020 } # = 0x1C08 + - - {field_name: rx_stats_pauseMACCtrl_Frames, mm_width: 32, user_width: 36, user_word_order: be, radix: uint64, access_mode: RO, address_offset: 0x3028 } # = 0x0C0A + - - {field_name: tx_stats_pauseMACCtrl_Frames, mm_width: 32, user_width: 36, user_word_order: be, radix: uint64, access_mode: RO, address_offset: 0x7028 } # = 0x1C0A + - - {field_name: rx_stats_ifErrors, mm_width: 32, user_width: 36, user_word_order: be, radix: uint64, access_mode: RO, address_offset: 0x3030 } # = 0x0C0C + - - {field_name: tx_stats_ifErrors, mm_width: 32, user_width: 36, user_word_order: be, radix: uint64, access_mode: RO, address_offset: 0x7030 } # = 0x1C0C + - - {field_name: rx_stats_unicast_FramesOK, mm_width: 32, user_width: 36, user_word_order: be, radix: uint64, access_mode: RO, address_offset: 0x3038 } # = 0x0C0E + - - {field_name: tx_stats_unicast_FramesOK, mm_width: 32, user_width: 36, user_word_order: be, radix: uint64, access_mode: RO, address_offset: 0x7038 } # = 0x1C0E + - - {field_name: rx_stats_unicast_FramesErr, mm_width: 32, user_width: 36, user_word_order: be, radix: uint64, access_mode: RO, address_offset: 0x3040 } # = 0x0C10 + - - {field_name: tx_stats_unicast_FramesErr, mm_width: 32, user_width: 36, user_word_order: be, radix: uint64, access_mode: RO, address_offset: 0x7040 } # = 0x1C10 + - - {field_name: rx_stats_multicastFramesOK, mm_width: 32, user_width: 36, user_word_order: be, radix: uint64, access_mode: RO, address_offset: 0x3048 } # = 0x0C12 + - - {field_name: tx_stats_multicastFramesOK, mm_width: 32, user_width: 36, user_word_order: be, radix: uint64, access_mode: RO, address_offset: 0x7048 } # = 0x1C12 + - - {field_name: rx_stats_multicast_FramesErr, mm_width: 32, user_width: 36, user_word_order: be, radix: uint64, access_mode: RO, address_offset: 0x3050 } # = 0x0C14 + - - {field_name: tx_stats_multicast_FramesErr, mm_width: 32, user_width: 36, user_word_order: be, radix: uint64, access_mode: RO, address_offset: 0x7050 } # = 0x1C14 + - - {field_name: rx_stats_broadcastFramesOK, mm_width: 32, user_width: 36, user_word_order: be, radix: uint64, access_mode: RO, address_offset: 0x3058 } # = 0x0C16 + - - {field_name: tx_stats_broadcastFramesOK, mm_width: 32, user_width: 36, user_word_order: be, radix: uint64, access_mode: RO, address_offset: 0x7058 } # = 0x1C16 + - - {field_name: rx_stats_broadcast_FramesErr, mm_width: 32, user_width: 36, user_word_order: be, radix: uint64, access_mode: RO, address_offset: 0x3060 } # = 0x0C18 + - - {field_name: tx_stats_broadcast_FramesErr, mm_width: 32, user_width: 36, user_word_order: be, radix: uint64, access_mode: RO, address_offset: 0x7060 } # = 0x1C18 + - - {field_name: rx_stats_etherStatsOctets, mm_width: 32, user_width: 36, user_word_order: be, radix: uint64, access_mode: RO, address_offset: 0x3068 } # = 0x0C1A + - - {field_name: tx_stats_etherStatsOctets, mm_width: 32, user_width: 36, user_word_order: be, radix: uint64, access_mode: RO, address_offset: 0x7068 } # = 0x1C1A + - - {field_name: rx_stats_etherStatsPkts, mm_width: 32, user_width: 36, user_word_order: be, radix: uint64, access_mode: RO, address_offset: 0x3070 } # = 0x0C1C + - - {field_name: tx_stats_etherStatsPkts, mm_width: 32, user_width: 36, user_word_order: be, radix: uint64, access_mode: RO, address_offset: 0x7070 } # = 0x1C1C + - - {field_name: rx_stats_etherStats_UndersizePkts, mm_width: 32, user_width: 36, user_word_order: be, radix: uint64, access_mode: RO, address_offset: 0x3078 } # = 0x0C1E + - - {field_name: tx_stats_etherStats_UndersizePkts, mm_width: 32, user_width: 36, user_word_order: be, radix: uint64, access_mode: RO, address_offset: 0x7078 } # = 0x1C1E + - - {field_name: rx_stats_etherStats_OversizePkts, mm_width: 32, user_width: 36, user_word_order: be, radix: uint64, access_mode: RO, address_offset: 0x3080 } # = 0x0C20 + - - {field_name: tx_stats_etherStats_OversizePkts, mm_width: 32, user_width: 36, user_word_order: be, radix: uint64, access_mode: RO, address_offset: 0x7080 } # = 0x1C20 + - - {field_name: rx_stats_etherStats_Pkts64Octets, mm_width: 32, user_width: 36, user_word_order: be, radix: uint64, access_mode: RO, address_offset: 0x3088 } # = 0x0C22 + - - {field_name: tx_stats_etherStats_Pkts64Octets, mm_width: 32, user_width: 36, user_word_order: be, radix: uint64, access_mode: RO, address_offset: 0x7088 } # = 0x1C22 + - - {field_name: rx_stats_etherStats_Pkts65to127Octets, mm_width: 32, user_width: 36, user_word_order: be, radix: uint64, access_mode: RO, address_offset: 0x3090 } # = 0x0C24 + - - {field_name: tx_stats_etherStats_Pkts65to127Octets, mm_width: 32, user_width: 36, user_word_order: be, radix: uint64, access_mode: RO, address_offset: 0x7090 } # = 0x1C24 + - - {field_name: rx_stats_etherStats_Pkts128to255Octets, mm_width: 32, user_width: 36, user_word_order: be, radix: uint64, access_mode: RO, address_offset: 0x3098 } # = 0x0C26 + - - {field_name: tx_stats_etherStats_Pkts128to255Octets, mm_width: 32, user_width: 36, user_word_order: be, radix: uint64, access_mode: RO, address_offset: 0x7098 } # = 0x1C26 + - - {field_name: rx_stats_etherStats_Pkts256to511Octets, mm_width: 32, user_width: 36, user_word_order: be, radix: uint64, access_mode: RO, address_offset: 0x30a0 } # = 0x0C28 + - - {field_name: tx_stats_etherStats_Pkts256to511Octets, mm_width: 32, user_width: 36, user_word_order: be, radix: uint64, access_mode: RO, address_offset: 0x70a0 } # = 0x1C28 + - - {field_name: rx_stats_etherStats_Pkts512to1023Octets, mm_width: 32, user_width: 36, user_word_order: be, radix: uint64, access_mode: RO, address_offset: 0x30a8 } # = 0x0C2A + - - {field_name: tx_stats_etherStats_Pkts512to1023Octets, mm_width: 32, user_width: 36, user_word_order: be, radix: uint64, access_mode: RO, address_offset: 0x70a8 } # = 0x1C2A + - - {field_name: rx_stats_etherStat_Pkts1024to1518Octets, mm_width: 32, user_width: 36, user_word_order: be, radix: uint64, access_mode: RO, address_offset: 0x30b0 } # = 0x0C2C + - - {field_name: tx_stats_etherStat_Pkts1024to1518Octets, mm_width: 32, user_width: 36, user_word_order: be, radix: uint64, access_mode: RO, address_offset: 0x70b0 } # = 0x1C2C + - - {field_name: rx_stats_etherStats_Pkts1519toXOctets, mm_width: 32, user_width: 36, user_word_order: be, radix: uint64, access_mode: RO, address_offset: 0x30b8 } # = 0x0C2E + - - {field_name: tx_stats_etherStats_Pkts1519toXOctets, mm_width: 32, user_width: 36, user_word_order: be, radix: uint64, access_mode: RO, address_offset: 0x70b8 } # = 0x1C2E + - - {field_name: rx_stats_etherStats_Fragments, mm_width: 32, user_width: 36, user_word_order: be, radix: uint64, access_mode: RO, address_offset: 0x30c0 } # = 0x0C30 + - - {field_name: tx_stats_etherStats_Fragments, mm_width: 32, user_width: 36, user_word_order: be, radix: uint64, access_mode: RO, address_offset: 0x70c0 } # = 0x1C30 + - - {field_name: rx_stats_etherStats_Jabbers, mm_width: 32, user_width: 36, user_word_order: be, radix: uint64, access_mode: RO, address_offset: 0x30c8 } # = 0x0C32 + - - {field_name: tx_stats_etherStats_Jabbers, mm_width: 32, user_width: 36, user_word_order: be, radix: uint64, access_mode: RO, address_offset: 0x70c8 } # = 0x1C32 + - - {field_name: rx_stats_etherStatsCRCErr, mm_width: 32, user_width: 36, user_word_order: be, radix: uint64, access_mode: RO, address_offset: 0x30d0 } # = 0x0C34 + - - {field_name: tx_stats_etherStatsCRCErr, mm_width: 32, user_width: 36, user_word_order: be, radix: uint64, access_mode: RO, address_offset: 0x70d0 } # = 0x1C34 + - - {field_name: rx_stats_unicastMACCtrlFrames, mm_width: 32, user_width: 36, user_word_order: be, radix: uint64, access_mode: RO, address_offset: 0x30d8 } # = 0x0C36 + - - {field_name: tx_stats_unicastMACCtrlFrames, mm_width: 32, user_width: 36, user_word_order: be, radix: uint64, access_mode: RO, address_offset: 0x70d8 } # = 0x1C36 + - - {field_name: rx_stats_multicastMAC_CtrlFrames, mm_width: 32, user_width: 36, user_word_order: be, radix: uint64, access_mode: RO, address_offset: 0x30e0 } # = 0x0C38 + - - {field_name: tx_stats_multicastMAC_CtrlFrames, mm_width: 32, user_width: 36, user_word_order: be, radix: uint64, access_mode: RO, address_offset: 0x70e0 } # = 0x1C38 + - - {field_name: rx_stats_broadcastMAC_CtrlFrames, mm_width: 32, user_width: 36, user_word_order: be, radix: uint64, access_mode: RO, address_offset: 0x30e8 } # = 0x0C3A + - - {field_name: tx_stats_broadcastMAC_CtrlFrames, mm_width: 32, user_width: 36, user_word_order: be, radix: uint64, access_mode: RO, address_offset: 0x70e8 } # = 0x1C3A + - - {field_name: rx_stats_PFCMACCtrlFrames, mm_width: 32, user_width: 36, user_word_order: be, radix: uint64, access_mode: RO, address_offset: 0x30f0 } # = 0x0C3C + - - {field_name: tx_stats_PFCMACCtrlFrames, mm_width: 32, user_width: 36, user_word_order: be, radix: uint64, access_mode: RO, address_offset: 0x70f0 } # = 0x1C3C - peripheral_name: nw_10GbE_eth10g # pi_nw_10GbE_eth10g.py / pi_10GbE.py @@ -161,19 +161,19 @@ peripherals: fields: - - field_name: tx_snk_out_xon field_description: "" - width: 1 + address_offset: 0x0 + mm_width: 1 bit_offset: 0 access_mode: RO - address_offset: 0x0 - - field_name: xgmii_tx_ready field_description: "" - width: 1 + address_offset: 0x0 + mm_width: 1 bit_offset: 1 access_mode: RO - address_offset: 0x0 - - field_name: xgmii_link_status field_description: "" - width: 2 + address_offset: 0x0 + mm_width: 2 bit_offset: 2 access_mode: RO - address_offset: 0x0 diff --git a/libraries/io/ppsh/ppsh.peripheral.yaml b/libraries/io/ppsh/ppsh.peripheral.yaml index e732647b7504398f8be33e9bb3c96763b2d1396b..4de7dd4254b41f1aa02e2f00609864b434c7277b 100644 --- a/libraries/io/ppsh/ppsh.peripheral.yaml +++ b/libraries/io/ppsh/ppsh.peripheral.yaml @@ -27,42 +27,41 @@ peripherals: fields: - - field_name: capture_cnt field_description: "Measured number of clock cycles between captured PPS pulses." - width: 30 + address_offset: 0x0 + mm_width: 30 bit_offset: 0 access_mode: RO - address_offset: 0x0 - - field_name: stable field_description: "PPS is stable (1) when capture_cnt = expected_cnt for all PPS periods since last time status was read, else PPS is not stable (0)." - width: 1 + address_offset: 0x0 + mm_width: 1 bit_offset: 30 access_mode: RO - address_offset: 0x0 - - field_name: toggle field_description: "Level bit that toggles after every PPS." - width: 1 + address_offset: 0x0 + mm_width: 1 bit_offset: 31 access_mode: RO - address_offset: 0x0 - - field_name: expected_cnt field_description: "Expected number of clock cycles between captured PPS pulses." - width: ceil_log2(g_st_clk_freq) + address_offset: 0x4 + mm_width: ceil_log2(g_st_clk_freq) bit_offset: 0 access_mode: RW - address_offset: 0x4 - - field_name: edge field_description: "When 0 then clock PPS in on rising edge of clock, else when 1 use falling edge of clock." - width: 1 + address_offset: 0x4 + mm_width: 1 bit_offset: 31 access_mode: RW - address_offset: 0x4 - - field_name: offset_cnt field_description: "Number of clock cycles at read access, that has passed since last PPS." address_offset: 0x8 - width: ceil_log2(g_st_clk_freq) + mm_width: ceil_log2(g_st_clk_freq) access_mode: RO - diff --git a/libraries/io/remu/remu.peripheral.yaml b/libraries/io/remu/remu.peripheral.yaml index eb13be5b392fb259f245e132111fe583b06b5837..48608f72751dc1405b74e25861cfdb9b5659b78f 100644 --- a/libraries/io/remu/remu.peripheral.yaml +++ b/libraries/io/remu/remu.peripheral.yaml @@ -24,45 +24,44 @@ peripherals: fields: - - field_name: reconfigure field_description: "Use 0xB007FAC7 (= boot factory) as password to reconfigure." - width: c_word_w - access_mode: WO address_offset: 0x0 + mm_width: c_word_w + access_mode: WO - - field_name: param field_description: "param" - width: 3 - access_mode: WO address_offset: 0x4 + mm_width: 3 + access_mode: WO - - field_name: read_param field_description: "read_param" - width: 1 + address_offset: 0x8 + mm_width: 1 access_mode: WO side_effect: PW - address_offset: 0x8 - - field_name: write_param field_description: "write_param" - width: 1 + address_offset: 0xc + mm_width: 1 access_mode: WO side_effect: PW - address_offset: 0xc - - field_name: data_out field_description: "data_out" - width: g_data_w - access_mode: RO address_offset: 0x10 + mm_width: g_data_w + access_mode: RO - - field_name: data_in field_description: "data_in" - width: g_data_w - access_mode: WO address_offset: 0x14 + mm_width: g_data_w + access_mode: WO - - field_name: busy field_description: "busy" - width: 1 - access_mode: RO address_offset: 0x18 - + mm_width: 1 + access_mode: RO diff --git a/libraries/technology/jesd204b/tech_jesd204b.peripheral.yaml b/libraries/technology/jesd204b/tech_jesd204b.peripheral.yaml index 4c748e535c27266b3077edf9f05275364aedd2d1..7fe5b2d604102e508778a46ad52f5545bb7ffa41 100644 --- a/libraries/technology/jesd204b/tech_jesd204b.peripheral.yaml +++ b/libraries/technology/jesd204b/tech_jesd204b.peripheral.yaml @@ -16,16 +16,16 @@ peripherals: fields: - - field_name: reset field_description: "Write 1 to reset the full JESD interface for all JESD signal inputs." - width: 1 + address_offset: 0x0 bit_offset: 31 + mm_width: 1 access_mode: RW - address_offset: 0x0 - - field_name: enable field_description: "Enable JESD signal input i by setting bit i = 1, disable by clearing bit i = 0." - width: 31 + address_offset: 0x0 bit_offset: 0 + mm_width: 31 access_mode: RW - address_offset: 0x0 - peripheral_name: jesd204b_arria10 # pi_jesd204b_unb2.py peripheral_description: | @@ -36,31 +36,31 @@ peripherals: mm_port_type: REG mm_port_description: "" fields: - - - {field_name: rx_dll_ctrl, width: 17, bit_offset: 0, access_mode: RW, address_offset: 0x50} - - - {field_name: rx_syncn_sysref_ctrl, width: 25, bit_offset: 0, access_mode: RW, address_offset: 0x54} - - - {field_name: rx_csr_lmfc_offset, width: 8, bit_offset: 12, access_mode: RW, address_offset: 0x54} - - - {field_name: rx_csr_rbd_offset, width: 8, bit_offset: 3, access_mode: RW, address_offset: 0x54} - - - {field_name: rx_csr_sysref_always_on, width: 1, bit_offset: 1, access_mode: RW, address_offset: 0x54} - - - {field_name: rx_err0, width: 9, bit_offset: 0, access_mode: RW, address_offset: 0x60} - - - {field_name: rx_err1, width: 10, bit_offset: 0, access_mode: RW, address_offset: 0x64} - - - {field_name: csr_rbd_count, width: 8, bit_offset: 3, access_mode: RO, address_offset: 0x80} - - - {field_name: csr_dev_syncn, width: 1, bit_offset: 0, access_mode: RO, address_offset: 0x80} - - - {field_name: rx_status1, width: 24, bit_offset: 0, access_mode: RW, address_offset: 0x84} - - - {field_name: rx_status2, width: 24, bit_offset: 0, access_mode: RW, address_offset: 0x88} - - - {field_name: rx_status3, width: 8, bit_offset: 0, access_mode: RW, address_offset: 0x8C} - - - {field_name: rx_ilas_csr_m, width: 8, bit_offset: 24, access_mode: RW, address_offset: 0x94} - - - {field_name: rx_ilas_csr_k, width: 5, bit_offset: 16, access_mode: RW, address_offset: 0x94} - - - {field_name: rx_ilas_csr_f, width: 8, bit_offset: 8, access_mode: RW, address_offset: 0x94} - - - {field_name: rx_ilas_csr_l, width: 5, bit_offset: 0, access_mode: RW, address_offset: 0x94} - - - {field_name: rx_ilas_csr_hd, width: 1, bit_offset: 31, access_mode: RW, address_offset: 0x98} - - - {field_name: rx_ilas_csr_cf, width: 5, bit_offset: 24, access_mode: RW, address_offset: 0x98} - - - {field_name: rx_ilas_csr_jesdv, width: 3, bit_offset: 21, access_mode: RW, address_offset: 0x98} - - - {field_name: rx_ilas_csr_s, width: 5, bit_offset: 16, access_mode: RW, address_offset: 0x98} - - - {field_name: rx_ilas_csr_subclassv, width: 3, bit_offset: 13, access_mode: RW, address_offset: 0x98} - - - {field_name: rx_ilas_csr_np, width: 5, bit_offset: 8, access_mode: RW, address_offset: 0x98} - - - {field_name: rx_ilas_csr_cs, width: 2, bit_offset: 6, access_mode: RW, address_offset: 0x98} - - - {field_name: rx_ilas_csr_n, width: 5, bit_offset: 0, access_mode: RW, address_offset: 0x98} - - - {field_name: rx_status4, width: 16, bit_offset: 0, access_mode: RW, address_offset: 0xF0} - - - {field_name: rx_status5, width: 16, bit_offset: 0, access_mode: RW, address_offset: 0xF4} - - - {field_name: rx_status6, width: 24, bit_offset: 0, access_mode: RW, address_offset: 0xF8} - - - {field_name: rx_status7, width: 32, bit_offset: 0, access_mode: RO, address_offset: 0xFC} + - - {field_name: rx_dll_ctrl, mm_width: 17, bit_offset: 0, access_mode: RW, address_offset: 0x50} + - - {field_name: rx_syncn_sysref_ctrl, mm_width: 25, bit_offset: 0, access_mode: RW, address_offset: 0x54} + - - {field_name: rx_csr_lmfc_offset, mm_width: 8, bit_offset: 12, access_mode: RW, address_offset: 0x54} + - - {field_name: rx_csr_rbd_offset, mm_width: 8, bit_offset: 3, access_mode: RW, address_offset: 0x54} + - - {field_name: rx_csr_sysref_always_on, mm_width: 1, bit_offset: 1, access_mode: RW, address_offset: 0x54} + - - {field_name: rx_err0, mm_width: 9, bit_offset: 0, access_mode: RW, address_offset: 0x60} + - - {field_name: rx_err1, mm_width: 10, bit_offset: 0, access_mode: RW, address_offset: 0x64} + - - {field_name: csr_rbd_count, mm_width: 8, bit_offset: 3, access_mode: RO, address_offset: 0x80} + - - {field_name: csr_dev_syncn, mm_width: 1, bit_offset: 0, access_mode: RO, address_offset: 0x80} + - - {field_name: rx_status1, mm_width: 24, bit_offset: 0, access_mode: RW, address_offset: 0x84} + - - {field_name: rx_status2, mm_width: 24, bit_offset: 0, access_mode: RW, address_offset: 0x88} + - - {field_name: rx_status3, mm_width: 8, bit_offset: 0, access_mode: RW, address_offset: 0x8C} + - - {field_name: rx_ilas_csr_m, mm_width: 8, bit_offset: 24, access_mode: RW, address_offset: 0x94} + - - {field_name: rx_ilas_csr_k, mm_width: 5, bit_offset: 16, access_mode: RW, address_offset: 0x94} + - - {field_name: rx_ilas_csr_f, mm_width: 8, bit_offset: 8, access_mode: RW, address_offset: 0x94} + - - {field_name: rx_ilas_csr_l, mm_width: 5, bit_offset: 0, access_mode: RW, address_offset: 0x94} + - - {field_name: rx_ilas_csr_hd, mm_width: 1, bit_offset: 31, access_mode: RW, address_offset: 0x98} + - - {field_name: rx_ilas_csr_cf, mm_width: 5, bit_offset: 24, access_mode: RW, address_offset: 0x98} + - - {field_name: rx_ilas_csr_jesdv, mm_width: 3, bit_offset: 21, access_mode: RW, address_offset: 0x98} + - - {field_name: rx_ilas_csr_s, mm_width: 5, bit_offset: 16, access_mode: RW, address_offset: 0x98} + - - {field_name: rx_ilas_csr_subclassv, mm_width: 3, bit_offset: 13, access_mode: RW, address_offset: 0x98} + - - {field_name: rx_ilas_csr_np, mm_width: 5, bit_offset: 8, access_mode: RW, address_offset: 0x98} + - - {field_name: rx_ilas_csr_cs, mm_width: 2, bit_offset: 6, access_mode: RW, address_offset: 0x98} + - - {field_name: rx_ilas_csr_n, mm_width: 5, bit_offset: 0, access_mode: RW, address_offset: 0x98} + - - {field_name: rx_status4, mm_width: 16, bit_offset: 0, access_mode: RW, address_offset: 0xF0} + - - {field_name: rx_status5, mm_width: 16, bit_offset: 0, access_mode: RW, address_offset: 0xF4} + - - {field_name: rx_status6, mm_width: 24, bit_offset: 0, access_mode: RW, address_offset: 0xF8} + - - {field_name: rx_status7, mm_width: 32, bit_offset: 0, access_mode: RO, address_offset: 0xFC}