.. _axi_adxcvr: AXI_ADXCVR ================================================================================ .. hdl-component-diagram:: :path: library/xilinx/axi_adxcvr The AXI_ADXCVR utility IP core is used to control and configure the highspeed transceivers. There are separate AXI_ADXCVR cores for Intel and AMD Xilinx designs, due to the small differences between the AMD Xilinx's and Intel's transceivers architecture. For the AMD Xilinx architecture, the transceivers are instantiated in :ref:`UTIL_ADXCVR `. Features -------------------------------------------------------------------------------- - Supports :git-hdl:`Intel ` and :git-hdl:`AMD Xilinx ` devices. - Software can access the core's registers through an AXI4 Lite Memory Mapped interface. - Link reset and monitor for Intel and AMD Xilinx. - Reconfiguration interface control with broadcast capability for AMD Xilinx. - Access to the Statistical eye scan interface of the PHY (AMD Xilinx). - Supports up to 16 transceiver lanes per link (AMD Xilinx). Intel Devices -------------------------------------------------------------------------------- For Intel devices, the adi_jesd204 IP is using the axi_adxcvr core, which can be accessed by the **link_management** interface. It provides a global reset signal for the JESD204B framework. Resets the XCVR reset controller IP, the link PLL reset controller, the PHY itself, and also the link layer of the stack. Besides the reset generation, monitors the PLLs and the PHY state. Parameters ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. hdl-parameters:: :path: library/xilinx/axi_adxcvr * - ID - Instance identification number, if more than one instance is used. * - NUM_OF_LANES - The number of lanes (primitives) used in this link. * - XCVR_TYPE - Refers to the transceiver speed grade 0-9. * - FPGA_TECHNOLOGY - Encoded value describing the technology/generation of the FPGA device (e.g. Cyclone V, Arria 10, Stratix 10). * - FPGA_FAMILY - Encoded value describing the family variant of the FPGA device (e.g. SX, GX, GT). * - SPEED_GRADE - Encoded value describing the FPGA’s speed-grade. * - DEV_PACKAGE - Encoded value describing the device package. The package might affect high-speed interfaces. * - FPGA_VOLTAGE - Contains the value(0-5000 mV) at wich the FPGA device supplied. * - TX_OR_RX_N - If set (0x1), configures the link in transmit mode, otherwise receive. Interfaces ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. hdl-interfaces:: :path: library/xilinx/axi_adxcvr * - s_axi_aclk - System clock. (in general 100 MHz) * - s_axi_aresetn - System reset. * - s_axi - Subordinate AXI4 Lite Memory Mapped interface * - up_ch_* - | Connect logical port ``pll_locked`` to the fPLL’s **pll_locked** pin; | Connect logical port ``ready`` to PHY reset controller. Register Map ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. hdl-regmap:: :name: INTEL_XCVR :no-type-info: Software Guidelines ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ When the board powers up, both ATX and fPLL's must have a stable reference clock in order to lock automatically. If this requirement can not be respected by the system (e.g. the reference clocks are generated by a device that requires software configuration, through an interface implemented in FPGA), the software needs to reconfigure both PLLs, and just after that resets the transceivers. AMD Xilinx Devices -------------------------------------------------------------------------------- In AMD Xilinx Devices, the core configures itself to be interfaced with the GT variant supported by the UTIL_ADXCVR core. All the transceiver primitives are configured and programmed identically. .. _parameters-1: Parameters ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. hdl-parameters:: :path: library/xilinx/axi_adxcvr * - ID - Instance identification number, if more than one instance is used * - NUM_OF_LANES - The number of lanes (primitives) used in this link * - XCVR_TYPE - Define the current GT type, GTXE2(2), GTHE3(5), GTHE4(7) * - FPGA_TECHNOLOGY - Encoded value describing the technology/generation of the FPGA device (7series/ultrascale) * - FPGA_FAMILY - Encoded value describing the family variant of the FPGA device(e.g., zynq, kintex, virtex) * - SPEED_GRADE - Encoded value describing the FPGA's speed-grade * - DEV_PACKAGE - Encoded value describing the device package. The package might affect high-speed interfaces * - FPGA_VOLTAGE - Contains the value(0-5000 mV) at wich the FPGA device supplied * - TX_OR_RX_N - If set (0x1), configures the link in transmit mode, otherwise receive * - QPLL_ENABLE - If set (0x1), configures the link to use QPLL on QUAD basis. If multiple links are sharing the same transceiver, only one of them may enable the QPLL. * - LPM_OR_DFE_N - Chosing between LPM or DFE of modes for the RX Equalizer * - RATE - Defines the initial values for Transceiver Control Register (CONTROL 0x0008) * - TX_DIFFCTRL - Driver Swing Control(TX Configurable Driver) * - TX_POSTCURSOR - Transmitter post-cursor TX pre-emphasis control * - TX_PRECURSOR - Transmitter pre-cursor TX pre-emphasis control * - SYS_CLK_SEL - Selects the PLL reference clock source to drive the RXOUTCLK :ref:`Table 1 ` * - OUT_CLK_SEL - select the transceiver reference clock as the source of TXOUTCLK :ref:`Table 2 ` Interfaces ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. hdl-interfaces:: :path: library/xilinx/axi_adxcvr .. _register-map-1: Register Map ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. hdl-regmap:: :name: XCVR :no-type-info: .. _software-guidelines-1: Software Guidelines ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The system must have active DRP and reference clocks before any software access. The software is expected to write necessary control parameters to LPM_DFE_N, RATE, SYSCLK_SEL, OUTCLK_SEL register bits and then set RESETN bit to 0x1. After that, monitor the STATUS bit to be set. There are no other requirements for initialization. The DRP access is identical for common and channel interfaces. The SEL bits may be set to a specific transceiver lane or 0xff to broadcast. A write to the CONTROL register (bits WR, ADDR, WDATA) initiates DRP access in hardware. A read to this register has no effect. In order to write to the transceiver, set WR to 0x1 with the address. In order to read from the transceiver, set WR to 0x0 with the address. As soon as this register is written, the BUSY signal is set and is cleared only after the access is complete. The broadcast read is a logical OR of all the channels. After an access is started, do NOT interrupt the core for any reason (including setting RESETN to 0x0), allow the access to finish itself. Though the core itself is immune to a software abort, the transceiver may fail on further accesses and may require a system-wide reset. The eye-scan feature also allows a SEL option and a broadcast has the effect of a combined mask. That is, the error counter will be zero ONLY if all the transceiver error counters are zero. To start eye-scan, set ES_REQ to 0x1 and wait for the same bit to self-clear. If eye-scan needs to be stopped, set the ES_REQ bit to 0x0. .. _axi_adxcvr table_one_label: Table 1 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. list-table:: :header-rows: 1 * - SYSCLK_SEL - 00 - 01 - 10 - 11 * - GTXE2 - CPLL - RESERVED - RESERVED - QPLL * - GTHE3 - CPLL - RESERVED - QPLL1 - QPLL0 * - GTHE4 - CPLL - RESERVED - QPLL1 - QPLL0 * - GTYE4 - CPLL - RESERVED - QPLL1 - QPLL0 .. _axi_adxcvr table_two_label: Table 2 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. list-table:: :header-rows: 1 * - OUTCLK_SEL - 001 - 010 - 011 - 100 - 101 - All other combinations * - GTXE2 - OUTCLKPCS - OUTCLKPMA - REFCLK - REFCLK/2 - RESERVED - RESERVED * - GTHE3 - OUTCLKPCS - OUTCLKPMA - REFCLK - REFCLK/2 - PROGDIVCLK - RESERVED * - GTHE4 - OUTCLKPCS - OUTCLKPMA - REFCLK - REFCLK/2 - PROGDIVCLK - RESERVED * - GTYE4 - OUTCLKPCS - OUTCLKPMA - REFCLK - REFCLK/2 - PROGDIVCLK - RESERVED The REFCLK selected by OUTCLK_SEL depends on the SYSCLK_SEL, it may be CPLL, QPLL0 or QPLL1 refclk. Physical layer PRBS testing ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The PRBS_CNTRL and PRBS_STATUS registers expose controls of internal PRBS generators and checkers allowing the testing the multi-gigabit serial link at the physical layer without the need of the link layer bringup. TX link procedure ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ #. Configure the reference clock and device clocks for under test lane rate. Bring XCVR out from reset. #. In the PRBS_CNTRL registers set PRBSSEL to a non-zero value. See the transceiver guides for exact values, different transceiver families may have different encoding for the same pattern. #. On the receiving side of the link, set the checker for the same pattern and reset the error counters. #. No error should be recorded on the receiver side. #. Set the PRBSFORCEERR bit in the PRBS_CNTRL register to force the error injection into the stream of bits. #. The error should be detected and recorded on the receiver side. RX link procedure ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ #. Configure the reference clock and device clocks for under test lane rate. Bring XCVR out from reset. #. On the transmit side of the link, set a test pattern that is available in the receiving transceiver. Consult the transceiver documentation for details. #. In the PRBS_CNTRL registers set PRBSSEL to the corresponding pattern. Reset the error counters with PRBSCNTRESET. #. Check PRBS_STATUS fields for results. If the check is successful for non-GTX transceivers the PRBSLOCKED bit must appear as set and PRBSERR must stay low. For GTX transceivers the PRBSLOCKED bit can be ignored and checking the PRBSERR alone is sufficient. If PRBSERR is set, check with DRP accesses the internal error counter to get the number of errors received. See the transceiver guide for details. More Information -------------------------------------------------------------------------------- - :ref:`jesd204` - :dokuwiki:`JESD204B/C AXI_ADXCVR Highspeed Transceivers Linux Driver ` Reference -------------------------------------------------------------------------------- - :intel:`Intel® Arria® 10 Transceiver PHY User Guide ` - `7 Series FPGAs GTX/GTH Transceivers User Guide - AMD Xilinx `_ - `Ultrascale Architecture GTH Transceivers User Guide - AMD Xilinx `_