CertusPro-NX SerDes/PCS Usage Guide
Preliminary
Technical Note
FPGA-TN-02245-0.81
© 2020-2021 Lattice Semiconductor
67
All rights reserved. CONFIDENTIAL
Figure 6.27. 64B/66B PCS Tx FIFO Write Operation Case II
Rx FIFO
The Rx FIFO module is implemented to adapt Rx path clock frequency and phase difference between 64B/66B PCS and
fabric. It also serves in following two application cases.
Case I (with GPLL)
In this case, GPLL is required to generate a 156.25MHz clock as the read clock of Rx FIFO. The rx_data_valid is
continuous because the bandwidth between the write side and read side is the same, [email protected] and
[email protected]. Refer to
for the timing diagram of this case. For more details about this clocking
scheme of this case, refer to the
section.
Figure 6.28. 64B/66B PCS Rx FIFO Read Operation Case I
Case II (without GPLL)
In this case, user logic takes the clock originated from PMA as the read clock of Rx FIFO. The data valid signal for the
data out of Rx FIFO becomes discontinuous, considering that the frequency of write clock and read clock is the same
but the bandwidth between the write side and the read side is different. The write side should be adapted to the
bandwidth of 64B/66B Decoder module, [email protected], and the read side is [email protected]. Refer to
for the timing diagram of this case. For more details about this clocking scheme of this case, refer to the
section.
Figure 6.29. 64B/66B PCS Rx FIFO Read Operation Case II
The Rx FIFO also implements Clock Tolerance Compensation (CTC) functionality to compensate clock frequency up to ±
100 PPM difference. This functionality can compensate up to 1 clock cycle difference every 5000 clock cycles in Rx path
by monitoring Rx FIFO status and inserting or deleting characters specified by IEEE802.3, if pre-defined criteria is met.
What should be noted is that this CTC functionality can only be used in the case with GPLL.
B0
B1
B2
B3
tx_usr_clk
almost full
almost empty
tx_fifo_wr
tx_data/tx_control
B0
B1
B2
B3
B4
rx_usr_clk
rx_data_valid
rx_data/rx_control
B0
B1
B2
B3
rx_usr_clk
rx_data_valid
rx_data/rx_control