CertusPro-NX SerDes/PCS Usage Guide
Preliminary
Technical Note
62
© 2020-2021 Lattice Semiconductor
FPGA-TN-02245-0.81
All rights reserved. CONFIDENTIAL
SKIP Byte 0
SKIP Byte 2
SKIP Byte 1
SKIP Byte 3
bit[1]
bit[0]
bit[3]
bit[2]
Mask Code
SKIP Pattern
Figure 6.20. SKIP Pattern Mask Code
This Elastic Buffer supports both 10-bit data mode (bypassing 8B/10B Decoder) and 8-bit data mode (after 8B/10B
decoding). The bit mapping of 8-bit mode and 10-bit mode is shown in
The clock frequency compensation operation is automatic, but the deletion/insertion of SKIP pattern can be observed
by user logic. “skp_add” is driven high to indicate the insertion of SKIP pattern, and “skp_del” is driven high to indicate
the deletion of SKIP pattern. “skp_add” and “skp_del” signal the Elastic FIFO overrun and underrun status.
“ebuf_empty” is driven high when this elastic FIFO is empty, and “ebuf_full” is driven high when elastic buffer is full.
Programmable high water line and low water line are shown in
The module starts to send data out when
the FIFO is half-full (byte number gets Middle threshold). When the byte number of data residing in the FIFO exceeds
the high water line, this module removes incoming SKIP pattern to prevent overflow. When the byte number of data
residing in the FIFO drops below the low water line, this module adds additional SKIP pattern from the incoming SKIP
pattern it matches to prevent underflow.
The minimum number of SKIP patterns after deletion can be set as one, two or three. This feature is useful when the
minimum IPG needs to be guaranteed in protocols like GigE.
The Elastic Buffer can control the frequency of clock frequency correction operation (SKIP insertion and deletion),
which is implemented by defining the minimum clock cycles required between two clock correction operations.
empty
Middle threshold
full
High water line
Lo w water line
byte number in
the FIFO
0
32
16
Figure 6.21. FIFO High/Low Water Line
Lane Aligner
Lane Aligner module is implemented to transfer the input data in respective recovered clock domains into a common
clock domain, and get all lanes aligned before forwarding data to next stage at the same time. This module should be
disabled in single-lane applications.
The Lane Aligner module looks for the predefined alignment pattern in the coming data and writes the data into a FIFO.
Once the first alignment pattern is received on a certain lane, the de-skew FIFO read-and-write pointers are both reset
to zero. The write pointer is then incremented for subsequent input data. The read pointer keeps zero and output data
of the FIFO read side is repeated for the last read-out data. Until alignment pattern is detected by all lanes, the read
pointer of the FIFO starts incrementing for each read clock cycle, aligning all lanes.