8b10b
8b/10b encoding is a binary line code used to transmit 8-bit data as 10-bit symbols. It was developed for high-speed serial communications to provide DC balance and reliable clock recovery while limiting long runs of identical bits. In the encoding, each 8-bit input is split into a 5-bit and a 3-bit portion. The 5-bit portion is encoded into 6 bits (5b/6b), and the 3-bit portion is encoded into 4 bits (3b/4b). The resulting 6 and 4 bits are concatenated to form a 10-bit output. A running disparity mechanism tracks the difference between number of 1s and 0s to keep the overall signal near zero DC level across long transmissions, aiding power efficiency and optical/electrical signaling.
Not all 10-bit patterns are used for data; several patterns are designated as control or special codes
Performance and tradeoffs: 8b/10b introduces a 25% overhead, since 8 data bits become 10 bits per symbol.