4B5B

From Wikipedia, the free encyclopedia

In telecommunication, 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 pre-determined 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.

An alternative to using 4B5B coding is to use a scrambler. Some systems use scramblers in conjunction with 4B5B coding to assure DC balance and improve electromagnetic compatibility.

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.

Applications[edit]

4B5B was popularized by Fiber Distributed Data Interface (FDDI) in the mid-1980s. It was adopted for digital audio transmission by MADI in 1989.[1] and by Fast Ethernet in 1995.

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.

The 4B5B encoding is also used for USB Power Delivery communication,[2] where it is sent over the USB-C CC pin (further encoded using biphase mark code) or the USB-A/B power lines (further encoded using frequency-shift keying).

Clocking[edit]

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[edit]

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
H 00100 Halt Yes Yes
I 11111 Idle Yes Yes
J 11000 Start #1 Yes Yes
K 10001 Start #2 Yes Yes
L 00110 Start #3 No No
Q 00000 Quiet (loss of signal) Yes Yes
R 00111 Reset Yes Yes
S 11001 Set Yes No
T 01101 End (terminate) 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[edit]

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.

Control character 5b symbols Purpose
JK 11000 10001 Sync, Start delimiter
I 11111 100BASE-X idle marker
T 01101 USB-PD end delimiter
TT 01101 01101 FDDI end delimiter
TS 01101 11001 Not used
IH 11111 00100 SAL
TR 01101 00111 100BASE-X end delimiter
SR 11001 00111 Not used
SS 11001 11001 Not used
H 00100 100BASE-X transmit error
JJJK 11000 11000 11000 10001 USB-PD Start Of Packet (SOP)
JJLL 11000 11000 00110 00110 USB-PD SOP′
JLJL 11000 00110 11000 00110 USB-PD SOP″
JSSL 11000 11001 11001 00110 USB-PD SOP′_Debug
JSLK 11000 11001 00110 10001 USB-PD SOP″_Debug
RRRS 00111 00111 00111 11001 USB-PD Hard Reset
RJRL 00111 11000 00111 00110 USB-PD Cable Reset

See also[edit]

References[edit]

  1. ^ AES10-2008 (r2019): AES Recommended Practice for Digital Audio Engineering - Serial Multichannel Audio Digital Interface (MADI), Audio Engineering Society
  2. ^ "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.

External links[edit]