Software Auto-Negotiation

Software auto-negotiation ensures inter-operability with a wide range of devices. Enable this mode by setting:

  • The usx_an_enable field of pcsr_x_control_register to 1’b0.
  • The usx_an_tx_type field to 2’b00.

For software auto-negotiation, Efinix® recommends that you follow a similar methodology as the Clause 37 state machine:

  1. Program pcsr_x_usxgmii_an_adv_register to 16’h0000.
  2. Optionally unmask the usxgmii_new_link_info interrupt.
  3. Program these pcsr_x_control_register fields:
    • usx_an_enable—1’b0.
    • usx_an_tx_type—2’b01.
  4. Wait for 1 - 2 ms to ensure that the link partner auto-negotiation state machine is restarted.
  5. Program the pcsr_x_usxgmii_an_adv_register fields with the link parameters per the Cisco USXGMII specification, ensuring that the acknowledge field is set appropriately.
  6. Wait for an interrupt to trigger or periodically poll pcsr_x_usxgmii_an_lp_register until the returned value is non-zero.
  7. Update the pcsr_x_usxgmii_an_adv_register field and set the acknowledge bit.
  8. Wait for 1 - 2 ms to ensure that the link partner properly recognizes the acknowledge.
  9. Check that pcsr_x_usxgmii_an_lp_register has the acknowledge bit set. If it is not set, go back to step 1.
  10. Program the usx_an_tx_type field to 2’b11 to transmit IDLEs to the link partner.
  11. Wait 1 - 2 ms.
  12. Program the usx_an_tx_type field to 2’b10 to 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).