// // Copyright 2021 Ettus Research, A National Instruments Company // // SPDX-License-Identifier: LGPL-3.0-or-later // // Module: common_regs // Description: // Registers definition within the x4xx_ps_rfdc_bd IP. //XmlParse xml_on // // // // This section lists all common Processing System ports through // which the register maps in this project are accessed. Each input // port to the fabric will point to a regmap. // // // // This is the main AXI4-Lite master interface that the PS // exposes to the kernel to interact with the FPGA fabric. // There are multiple endpoints connected to this interface. // // // // // This is one of the two cache-coherent AXI slave ports available to // communicate from the fabric (master) to the PS (slave). // // // // // This is one of the two cache-coherent AXI slave ports available to // communicate from the fabric (master) to the PS (slave). // // // // // This is the SPI1 interface // (see Zynq UltraScale+ Devices Register Reference) // of the PS. // With chip select 3 enabled transactions are targeted for the PS MB CPLD register interface linked here.{br} // The request format on SPI is defined as.{br} // {b}Write request:{/b} // {ul} // {li}1'b1 = write // {li}15 bit address // {li}32 bit data (MOSI) // {li}8 bit processing gap // {li}5 bit padding // {li}1 bit ack // {li}2 bit status // {/ul} // {b}Read request:{/b} // {ul} // {li}1'b0 = read // {li}15 bit address // {li}8 bit processing gap // {li}32 bit data (MISO) // {li}5 bit padding // {li}1 bit ack // {li}2 bit status // {/ul} // // // // // // // // // // // // This is the map for the register space that the Processing System's // M_AXI_HPM0_FPD port (AXI4 master interface) has access to. // This port has a 40-bit address bus. // // // // Space reserved for RPU access // // // Register space for the JTAG engine for MB CPLD programming. // // // Register space reserved for future use. // // // MPM endpoint fro MB/DB communication. // // // Register space reserved for mboard-regs (Core). // // // AXI DMA engine for internal Ethernet interface. // // // Misc. registers for internal Ethernet. // // // Register space occupied by the Xilinx RFDC IP block. // // // Register space for RFDC control/status registers. // // // // // // // This is the map that the nixge driver uses in Ethernet DMA to // move data between the Processing System's architecture and the fabric. // This map is a combination of two main components: a Xilix AXI DMA engine // and some registers for MAC/PHY control. // // // // // Refer to Xilinx' AXI DMA v7.1 IP product guide for further // information on this register map: // https://www.xilinx.com/support/documentation/ip_documentation/axi_dma/v7_1/pg021_axi_dma.pdf // // // // MAC/PHY control for the Ethernet interface. // // // // // // This is a regmap to document the different ports that have access to the PS system memory. // Each port may have different restrictions on system memory. See the corresponding window // for details // // // // // The HPC0 port of the PS is used for general purpose cache-coherent accesses // to the PS system memory. Different applications may use it for different // purposes. Its access is configured as follows: {br} // {table border="1"} // {tr}{th}Offset{/th} {th}Size{/th} {th}Description{/th}{tr} // {tr}{td}0x000800000000{/td}{td}0x000800000000{/td}{td}DDR_HIGH{/td}{tr} // {tr}{td}0x00000000{/td} {td}0x80000000{/td} {td}DDR_LOW{/td}{tr} // {tr}{td}0xFF000000{/td} {td}0x01000000{/td} {td}LPS_OCM{/td}{tr} // {tr}{td}0xC0000000{/td} {td}0x20000000{/td} {td}QSPI{/td}{tr} // {/table} // // // // // // // The HPC1 port of the PS is connected to the Ethernet DMA module. Three slave // interfaces are lumped together in this window: scatter-gather, dma-rx, and dma-tx. // Its access is configured as follows: {br} // {table border="1"} // {tr}{th}Offset{/th} {th}Size{/th} {th}Description{/th}{tr} // {tr}{td}0x000800000000{/td}{td}0x000800000000{/td}{td}DDR_HIGH{/td}{tr} // {tr}{td}0x00000000{/td} {td}0x80000000{/td} {td}DDR_LOW{/td}{tr} // {tr}{td}0xC0000000{/td} {td}0x20000000{/td} {td}QSPI{/td}{tr} // {/table} // // // // // // // // // These are the registers located within the RFDC block design // that provide control and status support for the RF chain. // // // // // Register space for controlling the data clock MMCM instance // within the RFDC block design. // Refer to Xilinx' Clocking Wizard v6.0 Product Guide for the // regiter space description in chapter 2. // (https://www.xilinx.com/support/documentation/ip_documentation/clk_wiz/v6_0/pg065-clk-wiz.pdf) // // // // // Control register for inverting I/Q data. // // // // // // // // // // // // // // // // // // // // // Control register for resetting the data clock MMCM. // // // Write a '1' to this bit to reset the MMCM. Then write a // '0' to place the MMCM out of reset. // // // // // // // Control register for the RF reset controller. // Verify the FSM ID before polling starting any reset sequence. // To use the SW reset triggers: Wait until DB*_DONE is de-asserted. // Assert either the *_RESET or *_ENABLE bitfields. // Wait until DB*_DONE is asserted to release the trigger. // The DB*_DONE signal should then de-assert.{BR/} // {b}Note: The *_DB1 constants are not used in the HDL, their purpose is // merely for documentation.{/b} // // // // Write a '1' to this bit to reset the RF reset controller. // Write a '0' once db0_fsm_reset_done asserts. // // // // // Write a '1' to this bit to trigger a reset for the // daughterboard 0 ADC chain. Write a '0' once db0_adc_seq_done // is asserted. // // // // // Write a '1' to this bit to trigger the enable sequence for // the daughterboard 0 ADC chain. Write a '0' once // db0_adc_seq_done is asserted. // // // // // Write a '1' to this bit to trigger a reset for the // daughterboard 0 DAC chain. Write a '0' once db0_dac_seq_done // is asserted. // // // // // Write a '1' to this bit to trigger the enable sequence for // the daughterboard 0 DAC chain. Write a '0' once // db0_dac_seq_done is asserted. // // // // // // // Status register for the RF reset controller. // Verify the FSM ID before polling starting any reset sequence. // Refer to RF_RESET_CONTROL_REG for instructions on how to use // the status bits in this register.{BR/} // {b}Note: The *_DB1 constants are not used in the HDL, their purpose is // merely for documentation.{/b} // // // // This bit asserts ('1') when the DB0 RF reset controller FSM // reset sequence is completed. The bitfield deasserts ('0') // after deasserting db0_fsm_reset. // // // // // This bit asserts ('1') when the DB0 ADC chain reset sequence // is completed. The bitfield deasserts ('0') after // deasserting the issued triggered (enable or reset). // // // // // This bit asserts ('1') when the DB0 DAC chain reset sequence // is completed. The bitfield deasserts ('0') after // deasserting the issued triggered (enable or reset). // // // // // // // Status register for the RF AXI-Stream interfaces.{BR/} // {b}Note: The *_DB1 constants are not used in the HDL, their purpose is // merely for documentation.{/b} // // // // This bitfield is wired to the RFDC's DAC (DB0) AXI-Stream // TReady handshake signals. The LSB is channel 0 and the MSB // is channel 1. // // // // // This bitfield is wired to the RFDC's DAC (DB0) AXI-Stream // TValid handshake signals. The LSB is channel 0 and the MSB // is channel 1. // // // // // This bitfield is wired to the RFDC's ADC (DB0) AXI-Stream // TReady handshake signals (Q portion). The LSB is channel 0 // and the MSB is channel 1. // // // // // This bitfield is wired to the RFDC's ADC (DB0) AXI-Stream // TReady handshake signals (I portion). The LSB is channel 0 // and the MSB is channel 1. // // // // // This bitfield is wired to the RFDC's ADC (DB0) AXI-Stream // TValid handshake signals (Q portion). The LSB is channel 0 // and the MSB is channel 1. // // // // // This bitfield is wired to the RFDC's ADC (DB0) AXI-Stream // TValid handshake signals (I portion). The LSB is channel 0 // and the MSB is channel 1. // // // // // This bitfield is wired to the user's ADC (DB0) AXI-Stream // TValid handshake signals. The LSB is channel 0 and the MSB // is channel 1. // // // // // This bitfield is wired to the user's ADC (DB0) AXI-Stream // TReady handshake signals. The LSB is channel 0 and the MSB // is channel 1. // // // // // This bitfield is wired to the RFDC's DAC (DB1) AXI-Stream // TReady handshake signals. The LSB is channel 0 and the MSB // is channel 1. // // // // // This bitfield is wired to the RFDC's DAC (DB1) AXI-Stream // TValid handshake signals. The LSB is channel 0 and the MSB // is channel 1. // // // // // This bitfield is wired to the RFDC's ADC (DB1) AXI-Stream // TReady handshake signals (Q portion). The LSB is channel 0 // and the MSB is channel 1. // // // // // This bitfield is wired to the RFDC's ADC (DB1) AXI-Stream // TReady handshake signals (I portion). The LSB is channel 0 // and the MSB is channel 1. // // // // // This bitfield is wired to the RFDC's ADC (DB1) AXI-Stream // TValid handshake signals (Q portion). The LSB is channel 0 // and the MSB is channel 1. // // // // // This bitfield is wired to the RFDC's ADC (DB1) AXI-Stream // TValid handshake signals (I portion). The LSB is channel 0 // and the MSB is channel 1. // // // // // This bitfield is wired to the user's ADC (DB1) AXI-Stream // TValid handshake signals. The LSB is channel 0 and the MSB // is channel 1. // // // // // This bitfield is wired to the user's ADC (DB1) AXI-Stream // TReady handshake signals. The LSB is channel 0 and the MSB // is channel 1. // // // // // // // The fields of this register provide data to all the DAC channels when enabled // by the CALIBRATION_ENABLE register. // // // // // // // // // // This register enables calibration data in the DAC data path for each of the // four channels. Each of these bits is normally '0'. When written '1', DAC data // for the corresponding channel will be constantly driven with the contents of // the CALIBRATION_DATA register. // // // // Enables calibration data for channel 0. // // // // // Enables calibration data for channel 1. // // // // // Enables calibration data for channel 2. // // // // // Enables calibration data for channel 3. // // // // // // // Enable RF MMCM outputs. // // // // // // // // // // // Data Clk Pll Status Register // // // // // // // // This register shows threshold status for the ADCs. Each bit reflects the // RFDC's real-time ADC status signals, which will assert when the ADC input // signal exceeds the programmed threshold value. The status will remain // asserted until cleared by software. // The bitfield names follow the pattern ADCX_ZZ_over_threshold(1|2), where X is // the location of the tile in the converter column and ZZ is either 01 (the // lower RF-ADC in the tile) or 23 (the upper RF-ADC in the tile). // See also the Xilinx document PG269. // // // // // // // // // // // // // // // // // // // // // // // // // // // // // This register provides information to the driver on the type // of DSP that is instantiated in the fabric.{BR/} // The X410 platform supports multiple RF daughterboards, each requiring // a different fabric RF DSP chain that works with specific RFDC settings. // Each bandwidth DSP chain has a unique identifier (BW in MHz), this // information is conveyed in this register to let the driver // configure the RFDC with the proper settings. // Also, channel count for the DSP module is included.{BR/} // {b}Note: The *_DB1 constants are not used in the HDL, their purpose is // merely for documentation.{/b} // // // Fabric DSP BW in MHz for daughterboard 0. // // // Fabric DSP RX channel count for daughterboard 0. // // // Fabric DSP TX channel count for daughterboard 0. // // // Fabric DSP BW in MHz for daughterboard 1. // // // Fabric DSP RX channel count for daughterboard 0. // // // Fabric DSP TX channel count for daughterboard 0. // // // // // //XmlParse xml_off