General Description: A problem in the 1000BASE-X PCS/PMA v3.0 core, TBI or PHY versions, causes a conflict with Auto-Negotiation. When the fiber optic cable is pulled out of the receiver, the transmitter continues to transmit data even though it should shut down after 10-20 ms. The problem occurs when Auto-Negotiation is initially disabled by writing to the PCS Control Register 0 (via the MDIO) with the following bits (this causes a conflict in the core):
bit 0.12 (set to 0 - Auto-Negotiation disable) bit 0.9 (set to 1 - Auto-Negotiation restart).
Since the Auto-Negotiation Restart bit is self-clearing, it only clears after Auto-Negotiation is restarted. However, since Auto-Negotiation is also disabled, it never allows a restart and this causes the bit to remain set. This problem keeps the core in transition between the Auto-Negotiation states "AN_DISABLE_LINK_OK" and "AN_ENABLE", and this prevents the link_timer from incrementing by holding it in reset. Since the link_timer is never incremented, "an_sync_status" does not follow "sync_status" 10-20 ms later and the core keeps transmitting.
To ensure correct operation, the 1000BASE-X PCS/PMA v3.0 core has been updated. The Auto-Negotiation Restart request signal is not formed directly from the PCS Control Register bit 0.9, it is now effectively "ANDed" with PCS Control Register bit 0.12 (Auto-Negotiation Enable). Consequently, Auto-Negotiation Restart only takes effect when Auto-Negotiation is enabled. As a result, when Auto-Negotiation is disabled, the register now self-clears to "0" immediately.
To obtain this fix, apply the patch found in the Release Notes for the 1000BASE-X PCS/PMA v3.0 core in (Xilinx Answer 17335).
Alternatively, you can avoid this problem by ensuring that bit 0.9 (Auto-Negotiation Restart) is always written to "0" whenever bit 0.12 is set to "0" (Auto-Negotiation = Disabled).