diff --git a/boards/uniboard1/designs/unb1_minimal/revisions/unb1_minimal_sopc/unb1_minimal_sopc.system.yaml b/boards/uniboard1/designs/unb1_minimal/revisions/unb1_minimal_sopc/unb1_minimal_sopc.system.yaml new file mode 100644 index 0000000000000000000000000000000000000000..d6ee3b63770c2411d856bd2c111f507784a6a7e5 --- /dev/null +++ b/boards/uniboard1/designs/unb1_minimal/revisions/unb1_minimal_sopc/unb1_minimal_sopc.system.yaml @@ -0,0 +1,72 @@ +schema_name : args +schema_version: 1.0 +schema_type : fpga + +hdl_library_name: unb1_minimal_sopc + +fpga_name : unb1_minimal_sopc +fpga_description: | + "unb1_minimal system for sopc" + +peripherals: + - peripheral_name: rom_system_info + subsystem_name : '' + slave_port_names: + - rom_system_info + parameters: + - { name: lock_base_address, value: 0x1000 } + + - peripheral_name: reg_system_info + + subsystem_name : '' + slave_port_names: + - pio_system_info + parameters: + - { name: lock_base_address, value: 0x0 } + + - peripheral_name: ctrl_unb1_board + subsystem_name : '' + slave_port_names: + - pio_wdi + + - peripheral_name: unb1_board_wdi_reg + subsystem_name : '' + slave_port_names: + - reg_wdi + + - peripheral_name: eth1g + subsystem_name : '' + slave_port_names: + - avs_eth_0_mms_tse + - avs_eth_0_mms_reg + - avs_eth_0_mms_ram + + - peripheral_name: ppsh + subsystem_name : '' + slave_port_names: + - pio_pps + + - peripheral_name: epcs_reg + subsystem_name : '' + slave_port_names: + - reg_epcs + - reg_mmdp_ctrl + - reg_mmdp_data + - reg_dpmm_ctrl + - reg_dpmm_data + parameters: + - { name : g_sim_flash_model, value: FALSE } + + - peripheral_name: remu_reg + subsystem_name : '' + slave_port_names: + - reg_remu + + - peripheral_name: unb1_board_sens_reg + subsystem_name : '' + slave_port_names: + - reg_unb_sens + parameters: + - { name : g_sim, value: FALSE } + - { name : g_clk_freq, value: 125E6 } + - { name : g_temp_high, value: 85 } diff --git a/boards/uniboard1/libraries/unb1_board/unb1_board.peripheral.yaml b/boards/uniboard1/libraries/unb1_board/unb1_board.peripheral.yaml new file mode 100644 index 0000000000000000000000000000000000000000..1dc9ae0ba5d39c6614431d04a5b0a2bbab1ebd83 --- /dev/null +++ b/boards/uniboard1/libraries/unb1_board/unb1_board.peripheral.yaml @@ -0,0 +1,182 @@ +schema_name : args +schema_version: 1.0 +schema_type : peripheral + +hdl_library_name : unb1_board +hdl_library_description: " This is the description for the unb1_board package " + +peripherals: + - + peripheral_name: rom_system_info + slave_ports: + - + # rom_system_info + slave_prefix : WORK + slave_name : ROM_SYSTEM_INFO + slave_postfix: REG + slave_type : REG + fields: + - + field_name : field_rom_info + access_mode : RO + address_offset: 0x0 + number_of_fields: 1024 + field_description: | + "address place for rom_system_info" + slave_description: " rom_info " + + peripheral_description: | + " settings for rom_system_info register " + - + peripheral_name: reg_system_info + slave_ports: + - + # reg_system_info + slave_prefix : WORK + slave_name : REG_SYSTEM_INFO + slave_postfix: REG + slave_type : REG + fields: + - + field_name : field_reg_info + access_mode : RO + address_offset: 0x0 + number_of_fields: 31 + field_description: | + "address place for reg_system_info" + slave_description: " reg_info " + + peripheral_description: | + " settings for reg_system_info register " + + # peripheral, unb1_board_wdi_reg + - + peripheral_name: ctrl_unb1_board + + slave_ports: + - + # actual hdl name: unb1_board_wdi_reg + slave_prefix : UNB1_BOARD + slave_name : PIO_WDI + slave_postfix: REG + slave_type : REG + fields: + - + field_name : nios_reset + access_mode : WO + address_offset : 0x0 + number_of_fields: 4 + field_description: " Reset done by nios " + + slave_description: "Reset register, for nios " + + peripheral_description: " " + + # peripheral, unb1_board_wdi_reg + - + peripheral_name: unb1_board_wdi_reg + + slave_ports: + - + # actual hdl name: unb1_board_wdi_reg + slave_prefix : UNB1_BOARD + slave_name : WDI + slave_postfix: REG + slave_type : REG + fields: + - + field_name : reset_word + access_mode : WO + address_offset: 0x0 + field_description: " Only the value 0xB007FAC7 'Boot factory' will result in a reset " + + slave_description: "Reset register, if the right value is provided the factory image will be reloaded " + + peripheral_description: " " + + # periheral, unb1_board_sens + - + peripheral_name: unb1_board_sens_reg + + parameters: + - { name: g_sim, value: FALSE } + - { name: g_clk_freq, value: c_unb1_board_mm_clk_freq_125M } + - { name: g_temp_high, value: 85 } + + slave_ports: + - + # actual hdl name: reg_unb1_sens + slave_prefix : UNB1_BOARD + slave_name : SENS + slave_postfix: REG + slave_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: 0x4 + radix : unsigned + field_description: "" + + - + field_name : temp_high + width : 7 + address_offset: 0x5 + reset_value : g_temp_high + software_value: g_temp_high + field_description: "" + + slave_description: " " + + peripheral_description: | + " + +-----------------------------------------------------------------------------+ + |31 (byte3) 24|23 (byte2) 16|15 (byte1) 8|7 (byte0) 0| wi | + |-----------------------------------------------------------------------|-----| + | xxx fpga_temp = sens_data[0][7:0]| 0 | + |-----------------------------------------------------------------------|-----| + | xxx eth_temp = sens_data[1][7:0]| 1 | + |-----------------------------------------------------------------------|-----| + | xxx hot_swap_v_sense = sens_data[2][7:0]| 2 | + |-----------------------------------------------------------------------|-----| + | xxx hot_swap_v_source = sens_data[3][7:0]| 3 | + |-----------------------------------------------------------------------|-----| + | xxx sens_err[0]| 4 | + |-----------------------------------------------------------------------|-----| + | xxx temp_high[6:0]| 5 | + +-----------------------------------------------------------------------------+ + * The fpga_temp and eth_temp are in degrees (two's complement) + * The hot swap voltages depend on: + . From i2c_dev_ltc4260_pkg: + 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: + 1 = UniBoard ETH PHY temperature = TInt8(eth_temp) + 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" + diff --git a/libraries/base/diag/diag.peripheral.yaml b/libraries/base/diag/diag.peripheral.yaml new file mode 100644 index 0000000000000000000000000000000000000000..65d1b28189256ecc88e25db0154d238a8e09225d --- /dev/null +++ b/libraries/base/diag/diag.peripheral.yaml @@ -0,0 +1,258 @@ +schema_name : args +schema_version: 1.0 +schema_type : peripheral + +hdl_library_name : diag +hdl_library_description: " This is the description for the bf package " + +peripherals: + - + peripheral_name: diag_block_gen + + parameters: + - { name: g_nof_streams, value: 1 } + - { name: g_buf_dat_w , value: 32 } + - { name: g_buf_addr_w , value: 7 } + + slave_ports: + - + # actual hdl name: reg_diag_bg + slave_prefix : DIAG + slave_name : BG + slave_postfix: REG + slave_type : REG + fields: + - + field_name : Enable + width : 2 + address_offset: 0x0 + field_description: | + "Bit 0: enable the block generator Bit 1: enable the blok generator on PPS" + - + field_name : Samples_per_packet + width : 16 + address_offset: 0x1 + reset_value : 256 + field_description: | + "This REG specifies the number samples in a packet" + - + field_name : Blocks_per_sync + width : 16 + address_offset: 0x2 + reset_value : 781250 + field_description: | + "This REG specifies the number of packets in a sync period" + - + field_name : Gapsize + width : 16 + address_offset: 0x3 + reset_value : 80 + field_description: | + "This REG specifies the gap in number of clock cycles between two consecutive packets" + - + field_name : Mem_low_address + width : 8 + address_offset: 0x4 + field_description: | + "This REG specifies the starting address for reading from the waveform memory" + - + field_name : Mem_high_address + width : 8 + address_offset: 0x5 + field_description: | + "This REG specifies the last address to be read when from the waveform memory" + - + field_name : BSN_init_low + address_offset: 0x6 + field_description: | + "This REG specifies the lower(LSB) 32 bits [31:0] of the initialization BSN" + - + field_name : BSN_init_high + address_offset: 0x7 + field_description: | + "This REG specifies the higher(MSB) 32 bits [63:32] of the initialization BSN" + - + # actual hdl name: ram_diag_bg + slave_prefix : DIAG + slave_name : BG + slave_postfix: RAM + number_of_slaves: g_nof_streams + slave_type : RAM + fields: + - + field_name: diag_bg + width: g_buf_dat_w + number_of_fields: 2**g_buf_addr_w + field_description : | + "Contains the Waveform data for the data-streams to be send" + peripheral_description: | + "Block generator" + - + peripheral_name: diag_data_buffer + + parameters: + - { name: g_nof_streams , value: 1 } + - { name: g_data_w , value: 32 } + - { name: g_buf_nof_data, value: 1024 } + + slave_ports: + - + # actual hdl name: reg_diag_data_buffer + slave_prefix : DIAG + slave_name : DATA_BUFFER + slave_postfix: REG + slave_type : REG + fields: + - + field_name : Sync_cnt + access_mode : RO + address_offset: 0x0 + field_description: | + "Sync_cnt contains the nof times the buffer (ST) has received a sync pulse since the last MM read + (cleared when the last data word from the buffer is read)" + - + field_name : Word_cnt + access_mode : RO + address_offset: 0x1 + field_description: | + "Word_cnt indicates the number of word currently (ST) written in the buffer. Cleared on (ST) re-write of buffer." + - + field_name : Valid_cnt_arm_ena + address_offset: 0x2 + field_description: | + "Valid_cnt contains the number of valid cycles since the last sync pulse. Cleared on every sync pulse. + Arm_enable: Write to this REG to arm the system. + After the system is armed the next syn pulse will trigger the acquisition of data." + - + field_name : Reg_sync_delay + address_offset: 0x3 + field_description: | + "Reg_sync_delay contains the number of valid cycles to delay/wait after an armed-syncpulse, + before the data is written to the databuffer." + - + field_name : Version + access_mode : RO + address_offset: 0x7 + field_description: | + "Version contains the version number of the databuffer peripheral." + slave_description: "" + - + # actual hdl name: ram_diag_data_buffer + slave_prefix : DIAG + slave_name : DATA_BUFFER + slave_postfix: RAM + number_of_slaves: g_nof_streams + slave_type : RAM + fields: + - + field_name : ram + width : g_data_w + number_of_fields: g_buf_nof_data + field_description: | + "Contains the data that is being captured." + slave_description: "" + + peripheral_description: | + "Peripheral diag_data_buffer + + Memory map RAM_DIAG_DATA_BUFFER + + If there is only one instance then the RAM name is RAM_DIAG_DATA_BUFFER, else it + gets an instanceName as post fix so RAM_DIAG_DATA_BUFFER_<instanceName|. + + The diag_data_buffer can store multiple streams in parallel. For example + 1024 data words for 16 streams the memory map becomes: 16 + + + streamNr = 0: + +------------------------------------------------------------+ + | byte 3 | byte 2 | byte 1 | byte 0 | wi | + |------------------------------------------------------------| + | data_0[31:0] | 0 | + | data_1[31:0] | 1 | + | ... | .. | + | data_1023[31:0] | 1023 | + +------------------------------------------------------------+ + + + streamNr = 1: + +------------------------------------------------------------+ + | byte 3 | byte 2 | byte 1 | byte 0 | wi | + |------------------------------------------------------------| + | data_0[31:0] | 1024 | + | data_1[31:0] | 1025 | + | ... | .. | + | data_1023[31:0] | 2047 | + +------------------------------------------------------------+ + + + streamNr = 15: + +------------------------------------------------------------+ + | byte 3 | byte 2 | byte 1 | byte 0 | wi | + |------------------------------------------------------------| + | data_0[31:0] | 15360 | + | data_1[31:0] | 15361 | + | ... | .. | + | data_1023[31:0] | 16383 | + +------------------------------------------------------------+ + + + Remarks: + - The data buffer stores valid data samples until it is full. + - The data buffer fills again after an external sync pulse or after the + last data word was read via the MM bus, dependend on whether the generic + g_use_in_sync is TRUE or FALSE in diag_data_buffer.vhd. + - The actual data width depends on the generic g_data_w in + diag_data_buffer.vhd. The value of unused MSBits is undefined. + + + Memory map REG_DIAG_DATA_BUFFER (one for each stream like the RAM above) + + +----------------------------------------------------------------------------+ + | byte 3 | byte 2 | byte 1 | byte 0 | wi | + |----------------------------------------------------------------------------| + | sync_cnt[31:0] | 0 RO (Version 0 and 1) | + | word_cnt[31:0] | 1 RO (Version 0 and 1) | + | R = valid_cnt[31:0] W = arm_enable | 2 RW (Version 1 only) | + | reg_sync_delay[31:0] | 3 RW (Version 1 only) | + | RESERVED | 4 (Version 1 only) | + | RESERVED | 5 (Version 1 only) | + | RESERVED | 6 (Version 1 only) | + | version[31:0] | 7 RO (Version 1 only) | + +----------------------------------------------------------------------------+ + + + There are 3 access_modes of operation of the data_buffer. + Version 0 supports access_Mode 1 and access_Mode 2 + Version 1 supports access_Mode 1, access_Mode 2 and access_Mode 3 + + (1) NON-SYNC access_MODE: g_use_in_sync = FALSE + In this access_mode the first g_nof_data valid data input words are stored in the + data buffer. A new set of data will be stored when the last word is read + from the buffer via the MM interface. + + (2) SYNC-access_MODE: g_use_in_sync = TRUE and reg_sync_delay = 0 + On every received sync pulse a number of g_nof_data valid words are written + to the databuffer. Data will be overwritten on every new sync pulse. It is + up to the user to read out the data in time in between two sync pulses + + (3) ARM-access_MODE: g_use_in_sync = TRUE and reg_sync_delay | 0 + First the reg_sync_delay should be written with a desired delay value. Then + the arm REG must be written. After being armed the databuffer will wait + for the first sync pulse to arrive. When it has arrived it will wait for + reg_sync_delay valid cycles before g_nof_data valid words are written to the + databuffer. The data can then be read out through the MM interface. New data + will only be written if the databuffer is being armed again. + + - Sync_cnt contains the nof times the buffer (ST) has received a sync pulse + since the last MM read (cleared when the last data word from the buffer is + read); + - Word_cnt indicates the number of word currently (ST) written in the buffer. + Cleared on (ST) re-write of buffer. + - valid_cnt contains the number of valid cycles since the last sync pulse. + Cleared on every sync pulse. + - arm_enable. Write to this REG to arm the system. After the system is + armed the next syn pulse will truigger the acquisition of data. + - reg_sync_delay contains the number of valid cycles to delay/wait after an armed-syncpulse, + before the data is written to the databuffer. + - version contains the version number of the databuffer peripheral." diff --git a/libraries/base/dp/dp.peripheral.yaml b/libraries/base/dp/dp.peripheral.yaml new file mode 100644 index 0000000000000000000000000000000000000000..1c6e7a3bb2e6fcde98cd871db2aad69062201d07 --- /dev/null +++ b/libraries/base/dp/dp.peripheral.yaml @@ -0,0 +1,69 @@ +schema_name : args +schema_version: 1.0 +schema_type : peripheral + +hdl_library_name : dp +hdl_library_description: " This is the description for the dp package " + +peripherals: + - + peripheral_name: dp_bsn_align + + parameters: + - { name: g_nof_input, value : 2 } + + slave_ports: + - + # actual hdl name: reg_dp_bsn_align + slave_prefix : DP + slave_name : BSN_ALIGN + slave_postfix: REG + number_of_slaves: g_nof_input + slave_type : REG + fields: + - + field_name : Enable + width : 1 + address_offset : 0x0 + field_description: | + "Input enable register for input 0. If set to 0 the input is discarded from alignment. + If set to 1 the corresopnding input is taken into account." + slave_discription: " " + + peripheral_description: "This is the BSN aligner" + + - + peripheral_name: dp_fifo_fill + parameters: + - { name : g_nof_streams, value: 3 } + + slave_ports: + - + # actual hdl name: reg_dp_fifo_fill + slave_prefix : DP + slave_name : FIFO_FILL + slave_postfix: REG + number_of_slaves: g_nof_streams + slave_type : REG + fields: + - + field_name : fifo_used_words + access_mode : RO + address_offset : 0x0 + field_description: "Register reflects the currently used nof words on the fifo." + - + field_name : fifo_status + width : 2 + access_mode : RO + address_offset : 0x1 + field_description: "Bit 0: fifo_read_empty Bit 1: fifo_wr_full." + - + field_name : max_fifo_used_words + access_mode : RO + address_offset : 0x2 + field_description: | + "Register contains the maximum number of words that have been in the fifo. + Will be cleared after it has been read." + slave_discription: "" + + peripheral_description: "This is the MM slave version of the dp_fifo_fill component." diff --git a/libraries/dsp/bf/bf.peripheral.yaml b/libraries/dsp/bf/bf.peripheral.yaml new file mode 100644 index 0000000000000000000000000000000000000000..b4359c3404086da5bf4daf68dd0b665f57608799 --- /dev/null +++ b/libraries/dsp/bf/bf.peripheral.yaml @@ -0,0 +1,94 @@ +schema_name : args +schema_version: 1.0 +schema_type : peripheral + +hdl_library_name : bf +hdl_library_description: " This is the description for the bf package " + +peripherals: + - peripheral_name: bf_unit + + parameters: + - { name: g_bf.in_weights_w , value: 16 } + - { name: g_bf.nof_weights , value: 256 } + - { name: g_bf.nof_signal_paths , value: 64 } + - { name: g_bf.nof_subbands , value: 24 } + - { name: g_bf.nof_input_streams , value: 16 } + - { name: c_nof_signal_paths_per_stream, value: g_bf.nof_signal_paths / g_bf.nof_input_streams } + + slave_ports: + - + # ram_bf_weights + slave_prefix : BF + slave_name : WEIGHTS + slave_postfix: RAM + number_of_slaves: g_bf.nof_weights + slave_type: RAM + fields: + - + field_name : bf_weights + width : g_bf.in_weights_w * c_nof_complex + + number_of_fields: g_bf.nof_signal_paths + field_description: | + "Contains the weights. + The real and the imaginary parts are concatenated: W_real in Lower part. W_imag in Higher part." + slave_discription: > + " " + + - + # ram_ss_ss_wide + slave_prefix : BF + slave_name : SS_SS_WIDE + slave_postfix: RAM + number_of_slaves: g_bf.nof_weights + slave_type: RAM + 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_description: | + "Contains the addresses to select from the stored subbands." + slave_discription: > + " " + + - + # ram_st_sst_bf + slave_prefix : BF + slave_name : ST_SST + slave_postfix: RAM + number_of_slaves: g_bf.nof_weights + slave_type: RAM + fields: + - + field_name : st_sst_bf + width : 56 + number_of_fields: 512 + access_mode : RO + field_description: | + "Contains the weights. + The real and the imaginary parts are concatenated: W_real in Lower part. W_imag in Higher part." + slave_discription: > + + - + # reg_st_sst_bf + slave_prefix : BF + slave_name : ST_SST + slave_postfix: REG + number_of_slaves: 1 + slave_type: REG + fields: + - + field_name : treshold + address_offset: 0x0 + 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." + slave_discription: > + " " + + peripheral_description: | + "This is the beamformer unit" diff --git a/libraries/dsp/fringe_stop/fringe_stop.peripheral.yaml b/libraries/dsp/fringe_stop/fringe_stop.peripheral.yaml new file mode 100644 index 0000000000000000000000000000000000000000..a48573c686828c7ff18e53b0a8e3c6cd8e66bab1 --- /dev/null +++ b/libraries/dsp/fringe_stop/fringe_stop.peripheral.yaml @@ -0,0 +1,121 @@ +schema_name : args +schema_version: 1.0 +schema_type : peripheral + +hdl_library_name : fringe_stop +hdl_library_description: " This is the description for the finge_stop library " + +peripherals: + - + peripheral_name: fringe_stop_unit + + parameters: + - { name: g_nof_channels, value: 256 } + - { name: g_fs_offset_w , value: 10 } + - { name: g_fs_step_w , value: 17 } + + slave_ports: + - + # actual hdl name: ram_fringe_stop_step + slave_prefix : FRINGE_STOP + slave_name : STEP + slave_postfix: RAM + slave_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." + slave_discription: " " + + - + # actual hdl name: fringe_stop_offset + slave_prefix : FRINGE_STOP + slave_name : OFFSET + slave_postfix: RAM + slave_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." + slave_discription: " " + + 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| sync __| |___________________________| |___________________________| |________________________ + 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 + + + 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 | + |-----------------------------------------| + | 0x0 | Offset_Channel_0 | + | 0x1 | Offset_Channel_1 | + | 0x2 | Offset_Channel_2 | + | 0x3 | Offset_Channel_3 | + | .. | .. | + | .. | 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 | + |-----------------------------------------| + | 0x0 | Step_Channel_0 | + | 0x1 | Step_Channel_1 | + | 0x2 | Step_Channel_2 | + | 0x3 | Step_Channel_3 | + | .. | .. | + | .. | Step_Channel_Max-1 | + +-----------------------------------------+" + diff --git a/libraries/io/epcs/epcs.peripheral.yaml b/libraries/io/epcs/epcs.peripheral.yaml new file mode 100644 index 0000000000000000000000000000000000000000..50045e05a6e1c132f0ab60ce0cc503ef82c2288f --- /dev/null +++ b/libraries/io/epcs/epcs.peripheral.yaml @@ -0,0 +1,135 @@ +schema_name : args +schema_version: 1.0 +schema_type : peripheral + +hdl_library_name : epcs +hdl_library_description: " This is the description for the epcs package " + +peripherals: + + # epcs_reg + - + peripheral_name: epcs_reg + + parameters: + - {name: "g_sim_flash_model", value: TRUE} + + slave_ports: + - + # actual hdl name: epcs_reg + slave_prefix : EPCS + slave_name : EPCS + slave_postfix: REG + slave_type : REG + fields: + - + field_name : addr + width : 24 + access_mode : WO + address_offset: 0x0 + field_description: " address to write to or read from " + + - + field_name : rden + width : 1 + access_mode : WO + address_offset: 0x1 + field_description: " Read enable bit " + + - + field_name : read_bit + width : 1 + access_mode : WO + side_effect : PW + address_offset: 0x2 + field_description: " Read bit " + + - + field_name : write_bit + width : 1 + access_mode : WO + side_effect : PW + address_offset: 0x3 + field_description: " Write bit " + + - + field_name : sector_erase + width : 1 + access_mode : WO + address_offset: 0x4 + field_description: " Sector erase bit " + + - + field_name : busy + width : 1 + access_mode : RO + address_offset: 0x5 + field_description: " busy " + + slave_description: " Read and write access to flash " + + # actual hdl name: mms_dp_fifo_to_mm + - + slave_prefix : EPCS + slave_name : DPMM_CTRL + slave_postfix: REG + slave_type : REG + fields: + - + field_name : ctrl + width : 32 + access_mode : RW + address_offset: 0x0 + field_description: " " + + - + slave_prefix : EPCS + slave_name : DPMM_DATA + slave_postfix: REG + slave_type : REG + fields: + - + field_name : data + width : 32 + access_mode : RW + address_offset: 0x0 + field_description: " " + + # actual hdl name: mms_dp_fifo_from_mm + - + slave_prefix : EPCS + slave_name : MMDP_CTRL + slave_postfix: REG + slave_type : REG + fields: + - + field_name : ctrl + width : 32 + access_mode : RW + address_offset: 0x0 + field_description: " " + + - + slave_prefix : EPCS + slave_name : MMDP_DATA + slave_postfix: REG + slave_type : REG + fields: + - + field_name : data + width : 32 + access_mode : RW + address_offset: 0x0 + field_description: " " + + peripheral_description: | + "wi Bits SE R/W Name Default Description |REG_EPCS| + ============================================================================= + 0 [23..0] WO addr 0x0 Address to write to/read from + 1 [0] WO rden 0x0 Read enable + 2 [0] PW WE read 0x0 Read + 3 [0] PW WE write 0x0 Write + 4 [0] WO sector_erase 0x0 Sector erase + 5 [0] RO busy 0x0 Busy + =============================================================================" + \ No newline at end of file diff --git a/libraries/io/eth/eth.peripheral.yaml b/libraries/io/eth/eth.peripheral.yaml new file mode 100644 index 0000000000000000000000000000000000000000..f8a30232682a1caec7d26f287072ff4602e6d50d --- /dev/null +++ b/libraries/io/eth/eth.peripheral.yaml @@ -0,0 +1,66 @@ +schema_name : args +schema_version: 1.0 +schema_type : peripheral + +hdl_library_name : eth +hdl_library_description: " This is the description for the eth package " + +peripherals: + - + peripheral_name: eth1g + + parameters: + - { name: c_eth_ram_nof_words, value: 1024 } + #g_technology: c_tech_select_default + #g_ETH_PHY : "LVDS" + + slave_ports: + - + # actual hdl name: reg_tse + slave_prefix : ETH + slave_name : TSE + slave_postfix: REG + slave_type : REG + fields: + - + field_name : status + access_mode : RO + address_offset : 0x0 + number_of_fields: 1024 + field_description: | + " reg tse " + slave_description: "" + - + # actual hdl name: reg + slave_prefix : ETH + slave_name : REG + slave_postfix: REG + slave_type : REG + fields: + - + field_name : status + access_mode : RO + address_offset : 0x0 + number_of_fields: 11 + field_description: " reg registers " + slave_description: " " + - + # actual hdl name: ram + slave_prefix : ETH + slave_name : RAM + slave_postfix: RAM + slave_type : RAM + fields: + - + field_name : ram + number_of_fields: c_eth_ram_nof_words + field_description: | + "Contains the Waveform data for the data-streams to be send" + slave_description: " " + + peripheral_description: | + " + Connect the 1GbE TSE to the microprocessor and to streaming UDP ports. The + packets for the streaming channels are directed based on the UDP port + number and all other packets are transfered to the default control channel." + diff --git a/libraries/io/ppsh/ppsh.peripheral.yaml b/libraries/io/ppsh/ppsh.peripheral.yaml new file mode 100644 index 0000000000000000000000000000000000000000..b9b71e89d669190ec79128165c4c5e501c1d89d0 --- /dev/null +++ b/libraries/io/ppsh/ppsh.peripheral.yaml @@ -0,0 +1,46 @@ +schema_name : args +schema_version: 1.0 +schema_type : peripheral + +hdl_library_name : ppsh +hdl_library_description: " This is the description for the finppshge_stop library " + +peripherals: + - + peripheral_name: ppsh + parameters: + - { name: g_cross_clock_domain, value: TRUE } + - { name: g_st_clk_freq, value: 200 * 10**6 } + + slave_ports: + - + # actual hdl name: reg_ppsh + slave_prefix : PPSH + slave_name : PPSH + slave_postfix: REG + slave_type : REG + fields: + - + field_name : status + access_mode : RO + address_offset: 0x0 + field_description: " ppsh status " + - + field_name : control + address_offset: 0x1 + field_description: " ppsh control " + slave_discription: " " + + peripheral_description: | + " + . Report PPS toggle, stable and period capture count + . Set dp_clk capture edge for PPS + Set expected period capture count for PPS stable + +----------------------------------------------------------------------------+ + |31 (byte3) 24|23 (byte2) 16|15 (byte1) 8|7 (byte0) 0| wi | + |-----------------------------------------------------------------------|----| + |toggle[31], stable[30] xxx capture_cnt = [29:0]| 0 | + |-----------------------------------------------------------------------|----| + |edge[31], xxx expected_cnt = [29:0]| 1 | + +----------------------------------------------------------------------------+" + diff --git a/libraries/io/remu/remu.peripheral.yaml b/libraries/io/remu/remu.peripheral.yaml new file mode 100644 index 0000000000000000000000000000000000000000..51d26382f1fc9515204307ed5da0da66692d1dab --- /dev/null +++ b/libraries/io/remu/remu.peripheral.yaml @@ -0,0 +1,90 @@ +schema_name : args +schema_version: 1.0 +schema_type : peripheral + +hdl_library_name : remu +hdl_library_description: " This is the description for the remu package " + +peripherals: + + # peripheral, remu_reg + - + peripheral_name: remu_reg + + parameters: + - { name: g_data_w, value: 24 } + + slave_ports: + - + # actual hdl name: reg_remu + slave_prefix : WORK + slave_name : REMU + slave_postfix: REG + slave_type : REG + fields: + - + field_name : reconfigure_key + width : c_word_w + access_mode : WO + address_offset: 0x0 + field_description: " reconfigure key for safety " + + - + field_name : param + width : 3 + access_mode : WO + address_offset: 0x1 + radix : unsigned + field_description: " " + + - + field_name : read_param + width : 1 + access_mode : WO + side_effect : PW + address_offset: 0x2 + field_description: " read_param " + + - + field_name : write_param + width : 1 + access_mode : WO + side_effect : PW + address_offset: 0x3 + field_description: " write_param " + + - + field_name : data_out + width : g_data_w + access_mode : RO + address_offset: 0x4 + field_description: " data_out " + + - + field_name : data_in + width : g_data_w + access_mode : WO + address_offset: 0x5 + field_description: " data_in " + + - + field_name : busy + width : 1 + access_mode : RO + address_offset: 0x6 + field_description: " busy " + + slave_description: " Remote Upgrade " + + peripheral_description: | + "wi Bits R/W SE Name Default Description |REG_EPCS| + ============================================================================= + 0 [31..0] WO reconfigure_key 0x0 + 1 [2..0] WO param + 2 [0] WO PW read_param + 3 [0] WO PW write_param + 4 [23..0] RO data_out + 5 [23..0] WO data_in + 6 [0] RO busy + ============================================================================= + "