- Enable the Abilities register, CONFIGURATION_AN_ABILITY (0x00F8), as per the core configuration or the abilities you want to advertise. For example, write the value 0x1E06 to address 0x00F8.
- Read the CONFIGURATION_AN_CONTROL_REG1 register (0x00E0), based on the requirement you can enable or bypass the auto-negotiation. If auto-negotiation is enabled than you need to write the nonce seed value into the same register. For example, write the value 0x16D to address 0x00E0.
- Enable the Link Training option by setting the link training enable signal in the CONFIGURATION_LT_CONTROL_REG1 (0x0100) register. For example, write the value 0x1 to address 0x0100.
- Write 1 to CONFIGURATION_LT_TRAINED_REG register (0x0104) to make ctl_lt_rx_trained high. It indicates that the receiver finite impulse response (FIR) filter coefficients have all been set, and that the receiver portion of training is complete.
- Write the CONFIGURATION_LT_SEED_REG0 register (0x0110) with some seed value. For example, write the value 0x0605 to address 0x0110.
- Write the CONFIGURATION_LT_COEFFICIENT_REG0 register (0x0130) with some coefficient values for the place holder logic. For example, write the value 0x540 to address 0x0130.
- Issue
sys_reset
/write1'b1
toctl_an_reset
(bit 28 of address 0x0004) so that the auto-negotiation block takes the updated nonce seed value into consideration. - Keep reading the
stat_an_autoneg_complete
(bit 2 of address 0x0458) which indicates the successful completion of the auto-negotiation and link training.
If the link partner sends next pages, the
ctl_an_lo_np_ack
signal must be set. This port can be tied
High.