Software Auto-Negotiation
Software auto-negotiation ensures inter-operability with a wide range of devices. Enable this mode by setting:
- The
usx_an_enablefield ofpcsr_x_control_registerto1’b0. - The
usx_an_tx_typefield to2’b00.
For software auto-negotiation, Efinix® recommends that you follow a similar methodology as the Clause 37 state machine:
- Program
pcsr_x_usxgmii_an_adv_registerto16’h0000. - Optionally unmask the
usxgmii_new_link_infointerrupt. - Program these
pcsr_x_control_registerfields:usx_an_enable—1’b0.usx_an_tx_type—2’b01.
- Wait for 1 - 2 ms to ensure that the link partner auto-negotiation state machine is restarted.
- Program the
pcsr_x_usxgmii_an_adv_registerfields with the link parameters per the Cisco USXGMII specification, ensuring that the acknowledge field is set appropriately. - Wait for an interrupt to trigger or periodically poll
pcsr_x_usxgmii_an_lp_registeruntil the returned value is non-zero. - Update the
pcsr_x_usxgmii_an_adv_registerfield and set the acknowledge bit. - Wait for 1 - 2 ms to ensure that the link partner properly recognizes the acknowledge.
- Check that
pcsr_x_usxgmii_an_lp_registerhas the acknowledge bit set. If it is not set, go back to step 1. - Program the
usx_an_tx_typefield to2’b11to transmit IDLEs to the link partner. - Wait 1 - 2 ms.
- Program the
usx_an_tx_typefield to2’b10to allow transmission of XGMII data.
Software auto-negotiation is complete. Continue monitoring the interrupt to be notified when the link partner restarts auto-negotiation.
Note: The 10GBase-KR block does not support the auto-negotiation function for
backplane Ethernet, which is specified in Clause 73. It does support auto-negotiation
for non-backplane Ethernet (Clause 37).