4B3T
4B3T, which stands for 4 (four) Binary 3 (three) Ternary, is a line encoding scheme used for ISDN PRI interface. 4B3T represents four binary bits using three pulses.
Description
It uses three states:
- + (positive pulse),
- 0 (no pulse), and
- − (negative pulse).
This means we have 24 = 16 input combinations to represent, using 33 = 27 output combinations. 000 is not used to avoid long periods without a transition. 4B3T uses a paired disparity code to achieve an overall zero DC bias: six triplets are used which have no DC component (0+−, 0−+, +0−, −0+, +−0, −+0), and the remaining 20 are grouped into 10 pairs with differing disparity (e.g. ++− and −−+). When transmitting, the DC bias is tracked and a combination chosen that has a DC component of the opposite sign to the running total.
This mapping from 4 bits to three ternary states is given in a table known as Modified Monitoring State 43 (MMS43). A competing encoding technique, used for the ISDN basic rate interface where 4B3T is not used, is 2B1Q.
The sync sequence used is the 11-symbol Barker code, +++−−−+−−+− or its reverse, −+−−+−−−+++.
Encoding table
Each 4-bit input group is encoded as a 3-symbol group (transmitted left to right) from the following table. Encoding requires keeping track of the accumulated DC offset, the number of + pulses minus the number of − pulses in all preceding groups. The starting value is arbitrary; here we use the values 1 through 4, although −1.5, −0.5, +0.5 and +1.5 is another possibility.
Input | Accumulated DC offset | |||
---|---|---|---|---|
1 | 2 | 3 | 4 | |
0000 | + 0 + (+2) | 0−0 (−1) | ||
0001 | 0 − + (+0) | |||
0010 | + − 0 (+0) | |||
0011 | 0 0 + (+1) | − − 0 (−2) | ||
0100 | − + 0 (+0) | |||
0101 | 0 + + (+2) | − 0 0 (−1) | ||
0110 | − + + (+1) | − − + (−1) | ||
0111 | − 0 + (+0) | |||
1000 | + 0 0 (+1) | 0 − − (−2) | ||
1001 | + − + (+1) | − − − (−3) | ||
1010 | + + − (+1) | + − − (−1) | ||
1011 | + 0 − (+0) | |||
1100 | + + + (+3) | − + − (−1) | ||
1101 | 0 + 0 (+1) | − 0 − (−2) | ||
1110 | 0 + − (+0) | |||
1111 | + + 0 (+2) | 0 0 − (−1) |
Decoding table
Decoding is simpler, as the decoder does not need to keep track of the encoder state, although doing so allows greater error detection. The 000 triplet is not a legal encoded sequence, but is typically decoded as binary 0000.
Ternary | Binary | Ternary | Binary | Ternary | Binary | ||
---|---|---|---|---|---|---|---|
0 0 0 | N/A | − 0 0 | 0101 | + − − | 1010 | ||
+ 0 + | 0000 | − + + | 0110 | + 0 − | 1011 | ||
0 − 0 | 0000 | − − + | 0110 | + + + | 1100 | ||
0 − + | 0001 | − 0 + | 0111 | − + − | 1100 | ||
+ − 0 | 0010 | + 0 0 | 1000 | 0 + 0 | 1101 | ||
0 0 + | 0011 | 0 − − | 1000 | − 0 − | 1101 | ||
− − 0 | 0011 | + − + | 1001 | 0 + − | 1110 | ||
− + 0 | 0100 | − − − | 1001 | + + 0 | 1111 | ||
0 + + | 0101 | + + − | 1010 | 0 0 − | 1111 |
See also
Other line codes that have 3 states: