Download presentation
Presentation is loading. Please wait.
1
A few notes on Altera transceivers
Anton Kapliy January 2011
2
Transceiver datapath Circled in RED: 8b/10b encoder/decoder and CDR unit. 8b/10b is required to maintain high transition density in the received data stream. It also provides a basic error detection mechanism – see next page. Since comma always appears in LSB byte, we can also use it to establish byte order Lock byte boundary by detecting a 10-bit comma character from TLK2501
3
8b/10b 256 8-bit characters => 1024 10-bit characters
Larger 10-bit phase space => Select mappings with {5/5,6/4,4/6} bit parity E.g, – 6/4, sent if “RD-” Every 6/4 or 4/6 has a complement: E.g, – 4/6, sent if “RD+” To maintain overall DC balance and uniform transition density, RD+ and RD- alternate Error detection: unused 10-bit code OR disparity violation.
5
TLK2501 synchronization TLK2501 only synchronizes on this comma
In order to guarantee that K28.5 commas with correct disparity are received by TLK synchronization circuit, the first IDLE must be selected judiciously depending on running disparity. If a wrong IDLE is sent (e.g., /I2/ after RD+ or /I1/ after RD-), TLK receiver will assert error on received data.
6
ALTGX 8b/10b limitation 8b/10b encoder does not provide running disparity, so we can't send the correct IDLE (from one of Altera implementation guides) Altera has an 8b/10b megafunction that support 16b/20b cascading, but it is not free
7
8b/10b logic implementation
8b/10b map is usually implemented as a complex network of gates. This was the subject of a 1984 patent from IBM. 16b/20b implementation is the subject of more recent patents (2007) A simpler option is a MRAM-based lookup table for the entire mapping. But this would take up ~10% of Cyclone IV resources.
8
Alternative lookup-based solution
ALTGX provides optional interface to force running disparity to an arbitrary value data[8] Flip LUT (MRAM) Tells whether the encoded version of this 8bit word would flip running disparity disparity_flipped clk Given 16-bit data from LSC core, the upper and lower 8 bits are simultaneously sent to two flip LUTs. One clock later, we receive corresponding disparity_flipped bits. Together with running disparity in the end of last 16-bit data block, they tell us: Disparity encoding for upper and lowe 8 bits of current word Running disparity in the end of transmission of current 16-bit word
9
Transceiver reset sequence
Transmission is easy: just need PLL to lock Reception is more complicated. In the end, we wait for CDR's to lock
10
Operation with missing FTK link?
Prevent LSC initialization / operation if FTK receive line is missing Have a switch on the board to choose whether we allow FTK-less operation or not Have a separate version of firmware for operation with/without FTK Have a ~millisecond delay to see if FTK receiver CDR is locked; if not – continue operation without FTK.
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.