Home

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.

(K-codes)
to
carry
control
information
or
align
the
receiver.
A
well-known
example
is
the
K28.5
code,
used
as
a
comma
character
to
facilitate
bit
alignment
in
a
stream.
The
encoding
therefore
supports
both
data
and
control
information,
while
constraining
the
symbol
set
to
maintain
DC
balance
and
a
minimum
density
of
signal
transitions.
It
provides
predictable
timing
and
robust
decoding,
but
at
the
expense
of
reduced
raw
data
rate
compared
to
more
modern
schemes
that
use
higher-efficiency
encodings.
It
remains
widely
associated
with
early
PCIe
generations,
SATA,
Fibre
Channel,
and
certain
other
high-speed
serial
interfaces,
where
its
balance
of
simplicity,
balance,
and
transition
density
suited
existing
hardware.