In telecommunications, 4B5B is a form of data communications line code. 4B5B maps groups of 4 bits of data onto groups of 5 bits for transmission. These 5-bit words are predetermined in a dictionary and they are chosen to ensure that there will be sufficient transitions in the line state to produce a self-clocking signal. A collateral effect of the code is that 25% more bits are needed to send the same information.
Depending on the standard or specification of interest, there may be several 5-bit output codes left unused. The presence of any of the unused codes in the data stream can be used as an indication that there is a fault somewhere in the link. Therefore, the unused codes can be used to detect errors in the data stream.
The name 4B5B is generally taken to mean the FDDI version. Other 4-to-5-bit codes have been used for magnetic recording and are known as group coded recording (GCR), but those are (0,2) run-length limited codes, with at most two consecutive zeros. 4B5B allows up to three consecutive zeros (a (0,3) RLL code), providing a greater variety of control codes.
On optical fiber, the 4B5B output is NRZI-encoded. FDDI over copper (CDDI) uses MLT-3 encoding instead, as does 100BASE-TX Fast Ethernet.
4B5B codes are designed to produce at least two transitions per 5 bits of output code regardless of input data. The transitions provide necessary transitions for the receiver to perform clock recovery. For example, a run of 4 bits such as 00002 using NRZI encoding contains no transitions and that may cause clocking problems for the receiver. 4B5B solves this problem by assigning the 4-bit block a 5-bit code, in this case, 111102.
There are eight 5-bit codes that have 3 consecutive 0s: 00000, 00001, 00010, 01000, 10000, 00011, 10001, 11000. This leaves 24 codes available.
Encoding table
Data
4B5B code
(Hex)
(Binary)
0
0000
11110
1
0001
01001
2
0010
10100
3
0011
10101
4
0100
01010
5
0101
01011
6
0110
01110
7
0111
01111
Data
4B5B code
(Hex)
(Binary)
8
1000
10010
9
1001
10011
A
1010
10110
B
1011
10111
C
1100
11010
D
1101
11011
E
1110
11100
F
1111
11101
Symbol
4B5B code
Description
FDDI
Fast Ethernet
USB-PD
H
00100
Halt
Yes
Yes
No
I
11111
Idle
Yes
Yes
No
J
11000
Start #1
Yes
Yes
Yes
K
10001
Start #2
Yes
Yes
Yes
L
00110
Start #3
No
No
Yes
Q
00000
Quiet (loss of signal)
Yes
Yes
No
R
00111
Reset
Yes
Yes
Yes
S
11001
Set
Yes
No
Yes
T
01101
End (terminate)
Yes
Yes
Yes
Three consecutive zero bits only appear in normal data when a code ending with two 0 bits (2, E) is followed by a code beginning with a 0 bit (1, 4, 5, 6, 7), so will always appear separated by multiples of the 5-bit encoded symbol length (and never separated by a single symbol). Violations of this property are used for special synchronization codes.
Command characters
The following codes are sometimes referred to as command characters. They are commonly used in pairs, although USB-PD uses 4-symbol sequences to begin its packets.
^"5.3 Symbol Encoding". Universal Serial Bus Power Delivery Specification. Revision 2.0 Version 1.3. USB Implementers Forum. 12 January 2017. p. 105. 4b5b line code Shall be used. This encodes 4-bit data to 5-bit symbols for transmission and decodes 5-bit symbols to 4-bit data for consumption by the receiver.