The asynchronous LVDS solution is an implementation where an external clock is provided to the design. This clock can be asynchronous to the incoming data stream within the limits specified in the Ethernet specifications. This 625 MHz differential clock is fed to an IBUFDS and the output drives the input of two PLLs. When implementing synchronous SGMII interfaces using this solution, the reference clock is user-selectable.
A PLL is used to generate multiple clocks at 312.5,125 MHz along with the 625,1250 MHz
tx_pll_clock
and rx_pll_clock
driven to
TX_BITSLICE_CONTROL and RX_BITSLICE_CONTROL. The clocking and reset logic is included in
a separate module <component_name>_clock_reset which is
instantiated in the <component_name>_support module .
The core supports up to three instances of PCS/PMA lanes within a single BYTE_GROUP. The core can be extrapolated to the full bank using multiple instances (up to four for an I/O bank) of three lane core instances. However one differential pair of clocks is required to drive the PLLs in the bank. This limits the maximum number of Ethernet links in an I/O bank to 11. This is shown in the following figure.
Typical use of the asynchronous LVDS solution involves multiple instances of the LVDS solution with a single clocking block. One instance of the core is generated with the Include Shared Logic in Core option. This instance contains all the clocking and reset logic that can be shared. The remaining instances can be generated using the Include Shared Logic in Example Design option.
The reset logic contains the reset sequence required in native I/O mode. The reset
sequence is used to calibrate the delays and provides the rx_bt_val
value to the core logic. This value is used to calculate the number of taps required to
maintain a relative difference of 400 ps between two RX_BITSLICEs.