- Perform the one-time uB and ANLT reset sequence to initialize the GT Wizard
Subsystem microcontroller. After releasing
sys_reset, wait 40 μs, then assertubmbrst_0to 1. After 1 μs, assertresetb_anlt_0to 0. After another 1 μs, deassertresetb_anlt_0to 1, then after 1 μs deassertubmbrst_0to 0.Keep reading
gpo_0[15]until it reads 1, which indicates the GT Wizard Subsystem microcontroller has initialized and that the ANLT registers are ready for access. Wait an additional 110 μs before proceeding. - Read the default values of the ANLT registers to verify the AXI4-Lite interface to the GT Wizard Subsystem is
accessible. For example, read
ANLT_LANE_ID_0(0x157D0),ANLT_ABILITY_0(0x157D8),ANLT_ADV_ABILITY_0(0x157DC),ANLT_SETUP_0(0x157D4), andANLT_INTERRUPT_ENABLE_0(0x157F8). Confirm the reads complete without AXI4-Lite errors. - Write the ANLT_LANE_ID register to assign the lane identifier for the port.
For example, write the value
0x00000001to ANLT_LANE_ID_0 (0x157D0). - Write the ANLT_ABILITY register to advertise the preferred FEC capability
per IEEE 802.3 Clause 73. For 25GBASE-KR, write the value
0x00008000to ANLT_ABILITY_0 (0x157D8). For 10GBASE-KR, write the value0x00002100to ANLT_ABILITY_0 (0x157D8). - Write the ANLT_ADV_ABILITY register to advertise the preferred
speed/protocol capability (extended technology ability field). For 25G, write
the value 0x00000400 to ANLT_ADV_ABILITY_0 (0x157DC). For 10G, write the value
0x00000004to ANLT_ADV_ABILITY_0 (0x157DC). - Write
0x0000FFFFtoANLT_INTERRUPT_ENABLE_0(0x157F8) to enable all ANLT interrupts. - Write
0x00000070toANLT_SETUP_0(0x157D4) to enable Auto-Negotiation and Link Training and start the negotiation sequence. - Keep reading
ANLT_STATUS_0(0x157EC) until it reads0x00000081, which indicates Auto-Negotiation is complete and the link status bit is set. After AN completes, readANLT_RESULT_0(0x157E4),ANLT_RESULT2_0(0x157E8), andANLT_LP_ADV_ABILITY_0(0x157E0) to confirm the negotiated speed and the link partner's advertised abilities. - Continue reading ANLT_STATUS_0 (0x157EC) until it reads
0x000X008F(where X is don't care; bits 16–15 can set in some cases, indicating LT frame lock but not impacting ANLT completion status), which indicates that Link Training is also complete and the datapath is ready to enter mission mode. - After ANLT_STATUS_0 reads
0x000X008F, wait forrx_block_lock_ledto assert High, confirming PCS RX block synchronization is achieved at the negotiated line rate. - Monitor
completion_statusuntil it transitions from the initial value (5'h1For5'h00) to an active result. A value of5'h01indicates the traffic test passed. Any other non-zero value indicates a failure. For example,5'h02indicates no block lock on any lane and5'h0Findicates bit errors were detected in the received packets.
Note: The addresses listed above apply to GTY/GTYP and GTM
Lane 0. Use the corresponding addresses from the ANLT Register Addresses tables. For
full bit-field definitions of all registers, refer to the
Versal Adaptive SoC Transceiver Subsystem Product
Guide (PG442) and
Versal Auto Negotiation and Link Training Interface
User Guide (UG1790) (registration
required).