diff --git a/libraries/base/diag/diag.peripheral.yaml b/libraries/base/diag/diag.peripheral.yaml index 1642e1e0ebaf9d48882a8b6055963a5bae60cd9e..ec4f28671473375570d764b2d7df883483f142e3 100644 --- a/libraries/base/diag/diag.peripheral.yaml +++ b/libraries/base/diag/diag.peripheral.yaml @@ -31,22 +31,22 @@ 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" - address_offset: 0x0 + address_offset: 0 * MM_BUS_SIZE bit_offset: 0 mm_width: 8 - - field_name: phase field_description: "Phase of WG sinus, phase = int('phase in degrees' * 2**width / 360)." - address_offset: 0x4 + address_offset: 1 * MM_BUS_SIZE 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." - address_offset: 0x8 + address_offset: 2 * MM_BUS_SIZE 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." - address_offset: 0xC + address_offset: 3 * MM_BUS_SIZE bit_offset: 0 mm_width: 17 # MM port for mms_diag_wg_wideband.vhd @@ -59,7 +59,7 @@ peripherals: - - field_name: data field_description: "Waveform default is one sinus period (diag_sin_1024x18.hex)." number_of_fields: 1024 # = 2**c_wg_buf_addr_w in node_adc_input_and_timing.vhd - address_offset: 0x0 + address_offset: 0 * MM_BUS_SIZE 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 @@ -80,11 +80,11 @@ peripherals: fields: - - field_name: sync_cnt field_description: "Number of times the DB has been written." - address_offset: 0x0 + address_offset: 0 * MM_BUS_SIZE access_mode: RO - - field_name: word_cnt field_description: "Number data words in the DB." - address_offset: 0x4 + address_offset: 1 * MM_BUS_SIZE access_mode: RO # MM port for mms_diag_data_buffer.vhd - mm_port_name: RAM_DIAG_DB @@ -96,7 +96,7 @@ peripherals: - - field_name: data field_description: "" number_of_fields: g_nof_data - address_offset: 0x0 + address_offset: 0 * MM_BUS_SIZE user_width: g_data_w - peripheral_name: diag_block_gen # pi_diag_block_gen.py @@ -111,29 +111,37 @@ peripherals: - mm_port_name: REG_DIAG_BG mm_port_type: REG mm_port_span: 8 * MM_BUS_SIZE - mm_port_description: "Block gen control." + mm_port_description: "Block generator control." number_of_mm_ports: 1 fields: - - field_name: enable - address_offset: 0x0 + field_description: "Starts the block generator." + address_offset: 0 * MM_BUS_SIZE bit_offset: 0 mm_width: 1 - - field_name: enable_sync - address_offset: 0x0 + field_description: "Starts the block generator at the next sync pulse when enable is set to 1." + address_offset: 0 * MM_BUS_SIZE bit_offset: 1 mm_width: 1 - - field_name: samples_per_packet - address_offset: 0x4 + field_description: "Number of samples per packet." + address_offset: 1 * MM_BUS_SIZE - - field_name: blocks_per_sync - address_offset: 0x8 + field_description: "Number blocks per sync interval." + address_offset: 2 * MM_BUS_SIZE - - field_name: gapsize - address_offset: 0xc + field_description: "The gap size between blocks in clock cycles." + address_offset: 3 * MM_BUS_SIZE - - field_name: mem_low_adrs - address_offset: 0x10 + field_description: "Start address of memory to use for block generator" + address_offset: 4 * MM_BUS_SIZE - - field_name: mem_high_adrs - address_offset: 0x14 + field_description: "End address of memory to use for block generator." + address_offset: 5 * MM_BUS_SIZE - - field_name: bsn_init - address_offset: 0x18 + field_description: "Initial BSN." + address_offset: 6 * MM_BUS_SIZE user_width: 64 radix: uint64 @@ -141,13 +149,13 @@ peripherals: - mm_port_name: RAM_DIAG_BG mm_port_type: RAM mm_port_span: ceil_pow2( 2**g_buf_addr_w * ceil_div(g_buf_dat_w, c_word_w)) * MM_BUS_SIZE - mm_port_description: "Block gen buffer memory, contains the data patterns to be generated." + mm_port_description: "Block generator buffer memory, contains the data patterns to be generated." number_of_mm_ports: g_nof_streams fields: - - field_name: data - field_description: "" + field_description: "Block generator buffer memory." number_of_fields: 2**g_buf_addr_w - address_offset: 0x0 + address_offset: 0 * MM_BUS_SIZE user_width: g_buf_dat_w - peripheral_name: diag_tx_seq # pi_diag_tx_seq.py @@ -165,15 +173,32 @@ peripherals: number_of_mm_ports: sel_a_b(g_mm_broadcast, 1, g_nof_streams) fields: - - field_name: control - address_offset: 0x0 + field_description: | + "Control register containing diag_dc = [2], diag_sel = [1], diag_en = [0]. + diag_en + '0' = init and disable output sequence + '1' = enable output sequence + diag_sel + '0' = generate PSRG data + '1' = generate CNTR data + diag_dc + '0' = Output sequence data (as selected by diag_sel) + '1' = Output constant data (value as set by diag_init)" + address_offset: 0 * MM_BUS_SIZE mm_width: 3 - - field_name: init - address_offset: 0x4 + field_description: "Initial data value." + address_offset: 1 * MM_BUS_SIZE - - field_name: tx_cnt - address_offset: 0x8 + field_description: | + "Counts the number of valid output data that was transmitted on stream 0 + since diag_en went active. An incrementing tx_cnt shows that data is + being transmitted." + address_offset: 2 * MM_BUS_SIZE access_mode: RO - - field_name: modulo - address_offset: 0xc + field_description: "A modulo can be used with CNTR data which results in a sequence with values of (cnt MOD modulo)" + address_offset: 3 * MM_BUS_SIZE - peripheral_name: diag_rx_seq # pi_diag_rx_seq.py peripheral_description: "RX test sequence" @@ -189,25 +214,52 @@ peripherals: number_of_mm_ports: g_nof_streams fields: - - field_name: control - address_offset: 0x0 + field_description: | + "Control register containing diag_sel = [1], diag_en = [0]. + diag_en + '0' = stop and reset input sequence verification + '1' = enable input sequence verification + diag_sel + '0' = verify PSRG data + '1' = verify CNTR data" + address_offset: 0 * MM_BUS_SIZE mm_width: 2 - - field_name: result - address_offset: 0x4 + field_description: | + "result register containing res_val_n = [1], res_ok_n = [0]. + res_val_n + '0' = No valid data is being received. + '1' = At least two valid data have been received. + res_ok_n + '0' = All data that has been received so far is correct. + '1' = At least 1 data word was received with errors" + address_offset: 1 * MM_BUS_SIZE access_mode: RO mm_width: 2 - - field_name: rx_cnt - address_offset: 0x8 + field_description: | + "the number of valid input data that was received since diag_en + went active. An incrementing rx_cnt shows that data is being received." + address_offset: 2 * MM_BUS_SIZE access_mode: RO - - field_name: rx_sample - address_offset: 0xc + field_description: | + "The rx_sample keeps the last valid in_dat value. When diag_en='0' it is + reset to 0. Reading rx_sample via MM gives an impression of the valid + in_dat activity." + address_offset: 3 * MM_BUS_SIZE access_mode: RO - - field_name: step_0 - address_offset: 0x10 + field_description: "step_0 = diag_steps_arr[0] which defines the allowed COUNTER increment values" + address_offset: 4 * MM_BUS_SIZE - - field_name: step_1 - address_offset: 0x14 + field_description: "step_1 = diag_steps_arr[1] which defines the allowed COUNTER increment values" + address_offset: 5 * MM_BUS_SIZE - - field_name: step_2 - address_offset: 0x18 + field_description: "step_2 = diag_steps_arr[2] which defines the allowed COUNTER increment values" + address_offset: 6 * MM_BUS_SIZE - - field_name: step_3 - address_offset: 0x1c + field_description: "step_3 = diag_steps_arr[3] which defines the allowed COUNTER increment values" + address_offset: 7 * MM_BUS_SIZE diff --git a/libraries/base/util/util.peripheral.yaml b/libraries/base/util/util.peripheral.yaml index 82287d4419242d27790a9cc5a55f3d3639df047f..af6518786578ee1d07ebe520bd7c52c930341cf8 100644 --- a/libraries/base/util/util.peripheral.yaml +++ b/libraries/base/util/util.peripheral.yaml @@ -4,20 +4,26 @@ schema_type: peripheral hdl_library_name: util hdl_library_description: "Util Heater." - peripherals: - peripheral_name: heater # pi_heater.py peripheral_description: "Heater component, see util_heater.vhd" + parameters: + - { name: c_nof_mac4_max, value: 800 } + - { name: c_reg_nof_words, value: c_util_heater_nof_mac4_max // 32 } # = 25 mm_ports: # MM port for util_heater.vhd - mm_port_name: REG_HEATER mm_port_type: REG - mm_port_span: 32 * MM_BUS_SIZE + mm_port_span: ceil_pow2(c_reg_nof_words) * MM_BUS_SIZE mm_port_description: "Heater control." fields: - - field_name: enable - field_description: "Enable" - number_of_fields: 25 + field_description: | + "The heater elements can be enabled or disabled via this MM register. + Each heater element consists of a MAC4. A MAC4 uses 4 18x18 multipliers. + The MM register allows enabling 0, 1, more or all MAC4 under SW control. + In this way it is possible to vary the power consumption during run time." + number_of_fields: c_reg_nof_words address_offset: 0x0 diff --git a/libraries/io/ddr/ddr.peripheral.yaml b/libraries/io/ddr/ddr.peripheral.yaml index 779cc9e24106252fadd598ea973ff75024bb76cb..b2cbd21a659e3682d4ca23512caee423de5bbb86 100644 --- a/libraries/io/ddr/ddr.peripheral.yaml +++ b/libraries/io/ddr/ddr.peripheral.yaml @@ -16,26 +16,50 @@ peripherals: mm_port_description: "DDR controller registers." number_of_mm_ports: 1 fields: - - - field_name: burstbegin - address_offset: 0x0 + - - field_name: reg_io_ddr + field_description: | + "IO DDR status bits concatenated: + ctlr_tech_mosi.wr & ctlr_tech_miso.rdval & ctlr_tech_miso.cal_fail & ctlr_tech_miso.cal_ok + ctlr_rst_out_i & ctlr_wr_flush_en & ctlr_tech_miso.waitrequest_n & ctlr_tech_miso.done" + address_offset: 0 * MM_BUS_SIZE + access_mode: RO + - - field_name: reg_rd_fifo_used + field_description: "Read FIFO fill level." + address_offset: 1 * MM_BUS_SIZE + access_mode: RO + - - field_name: reg_wr_fifo_used + field_description: "Write FIFO fill level." + address_offset: 2 * MM_BUS_SIZE + access_mode: RO + - - field_name: reg_fifo_full + field_description: "Read FIFO full bit & Write FIFO full bit" + address_offset: 3 * MM_BUS_SIZE + access_mode: RO + - - field_name: reg_burstbegin + field_description: "Start write or read access to DDR when reg_burstbegin = 1." + address_offset: 8 * MM_BUS_SIZE access_mode: WO - mm_width: 1 - - - field_name: wr_not_rd - address_offset: 0x4 + - - field_name: reg_wr_not_rd + field_description: "Set read / write mode. reg_wr_not_rd = 1 = write mode, reg_wr_not_rd = 0 = read mode." + address_offset: 9 * MM_BUS_SIZE access_mode: WO - mm_width: 1 - - - field_name: done - address_offset: 0x8 + - - field_name: reg_done + field_description: "reg_done = 1 when memory access is finished." + address_offset: 10 * MM_BUS_SIZE access_mode: RO - mm_width: 1 - - - field_name: address - address_offset: 0x14 + - - field_name: reg_address + field_description: "Start address for memory access." + address_offset: 13 * MM_BUS_SIZE access_mode: WO - - - field_name: burstsize - address_offset: 0x18 + - - field_name: reg_burstsize + field_description: "Access size for memory access" + address_offset: 14 * MM_BUS_SIZE access_mode: WO - - - field_name: flush - address_offset: 0x1c - mm_width: 1 + - - field_name: reg_flush + field_description: | + "Flush the write FIFO + The user input to the write FIFO sohuld be off. Internally the method waits sufficient us to + ensure that the write FIFO is read empty." + address_offset: 15 * MM_BUS_SIZE diff --git a/libraries/io/tr_10GbE/tr_10GbE.peripheral.yaml b/libraries/io/tr_10GbE/tr_10GbE.peripheral.yaml index 7615739f1d20fd13b1bfff5cb982e1eaae8ffcac..215c802fa4674c5f8f301d6f47eef4373ddbb760 100644 --- a/libraries/io/tr_10GbE/tr_10GbE.peripheral.yaml +++ b/libraries/io/tr_10GbE/tr_10GbE.peripheral.yaml @@ -2,7 +2,7 @@ schema_name: args schema_version: 1.0 schema_type: peripheral -hdl_library_name: tr_10GbE +hdl_library_name: tr_10GbE # copy of nw_10GbE. hdl_library_description: "Network peripherals for 10GbE." peripherals: