# 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 output levels:
* + (positive pulse),
* 0 (no pulse), and
* − (negative pulse).
This means we have 2$^4$ = 16 input combinations to represent, using 3$^3$ = 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.
MMS 43 coding table :
| Input | Input | Accumulated DC offset | Accumulated DC offset | Accumulated DC offset | Accumulated DC offset |
| Hex | Binary | 1 | 2 | 3 | 4 |
| 0 | 0000 | + 0 + (+2) | 0−0 (−1) | 0−0 (−1) | 0−0 (−1) |
| 1 | 0001 | 0 − + (+0) | 0 − + (+0) | 0 − + (+0) | 0 − + (+0) |
| 2 | 0010 | + − 0 (+0) | + − 0 (+0) | + − 0 (+0) | + − 0 (+0) |
| 3 | 0011 | 0 0 + (+1) | 0 0 + (+1) | 0 0 + (+1) | − − 0 (−2) |
| 4 | 0100 | − + 0 (+0) | − + 0 (+0) | − + 0 (+0) | − + 0 (+0) |
| 5 | 0101 | 0 + + (+2) | − 0 0 (−1) | − 0 0 (−1) | − 0 0 (−1) |
| 6 | 0110 | − + + (+1) | − + + (+1) | − − + (−1) | − − + (−1) |
| 7 | 0111 | − 0 + (+0) | − 0 + (+0) | − 0 + (+0) | − 0 + (+0) |
| 8 | 1000 | + 0 0 (+1) | + 0 0 (+1) | + 0 0 (+1) | 0 − − (−2) |
| 9 | 1001 | + − + (+1) | + − + (+1) | + − + (+1) | − − − (−3) |
| A | 1010 | + + − (+1) | + + − (+1) | + − − (−1) | + − − (−1) |
| B | 1011 | + 0 − (+0) | + 0 − (+0) | + 0 − (+0) | + 0 − (+0) |
| C | 1100 | + + + (+3) | − + − (−1) | − + − (−1) | − + − (−1) |
| D | 1101 | 0 + 0 (+1) | 0 + 0 (+1) | 0 + 0 (+1) | − 0 − (−2) |
| E | 1110 | 0 + − (+0) | 0 + − (+0) | 0 + − (+0) | 0 + − (+0) |
| F | 1111 | + + 0 (+2) | 0 0 − (−1) | 0 0 − (−1) | 0 0 − (−1) |
This code forces a transition after at most five consecutive identical non-zero symbols, or four consecutive zero symbols.

## 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 | Hex | Ternary | Binary | Hex | Ternary | Binary | Hex |
| 0 0 0 | — | — | − 0 0 | 0101 | 5 | + − − | 1010 | A |
| + 0 + | 0000 | 0 | − + + | 0110 | 6 | + 0 − | 1011 | B |
| 0 − 0 | 0000 | 0 | − − + | 0110 | 6 | + + + | 1100 | C |
| 0 − + | 0001 | 1 | − 0 + | 0111 | 7 | − + − | 1100 | C |
| + − 0 | 0010 | 2 | + 0 0 | 1000 | 8 | 0 + 0 | 1101 | D |
| 0 0 + | 0011 | 3 | 0 − − | 1000 | 8 | − 0 − | 1101 | D |
| − − 0 | 0011 | 3 | + − + | 1001 | 9 | 0 + − | 1110 | E |
| − + 0 | 0100 | 4 | − − − | 1001 | 9 | + + 0 | 1111 | F |
| 0 + + | 0101 | 5 | + + − | 1010 | A | 0 0 − | 1111 | F |

## 8B/6T

A similar paired-disparity code was used in the short-lived 100BASE-T4 Fast Ethernet standard. This achieved the same ratio of 4/3 bits per baud while needing to keep track of only two levels of accumulated DC offset by using a larger 256-entry coding table. 6 ternary symbols allow 140 balanced codes (30 permutations of +0000−, 90 permutations of ++00−−, and 20 permutations of +++−−−), and 126 codes with disparity +1 (6 permutations of +00000, 60 permutations of ++000−, and 60 permutations of +++0−−). The codes with disparity +1 are inverted whenever the running disparity is high. From the total of 266 code words, 256 are used as follows:
8B/6T coding table :
| 8B | 6T | 8B | 6T | 8B | 6T | 8B | 6T | 8B | 6T | 8B | 6T | 8B | 6T | 8B | 6T |
| 00 | +−00+− | 20 | 00−++− | 40 | +0+00− | 60 | 0−0++0 | 80 | +−+00− | A0 | 0−0++− | C0 | +−+0+− | E0 | +−0++− |
| 01 | 0+−+−0 | 21 | −−+00+ | 41 | ++00−0 | 61 | 00−+0+ | 81 | ++−0−0 | A1 | 00−+−+ | C1 | ++−+−0 | E1 | 0+−+−+ |
| 02 | +−0+−0 | 22 | ++−0+− | 42 | +0+0−0 | 62 | 0−0+0+ | 82 | +−+0−0 | A2 | 0−0+−+ | C2 | +−++−0 | E2 | +−0+−+ |
| 03 | −0++−0 | 23 | ++−0−+ | 43 | 0++0−0 | 63 | −00+0+ | 83 | −++0−0 | A3 | −00+−+ | C3 | −+++−0 | E3 | −0++−+ |
| 04 | −0+0+− | 24 | 00+0−+ | 44 | 0++00− | 64 | −00++0 | 84 | −++00− | A4 | −00++− | C4 | −++0+− | E4 | −0+++− |
| 05 | 0+−−0+ | 25 | 00+0+− | 45 | ++0−00 | 65 | 00−0++ | 85 | ++−−00 | A5 | 00−−++ | C5 | ++−−0+ | E5 | 0+−−++ |
| 06 | +−0−0+ | 26 | 00−00+ | 46 | +0+−00 | 66 | 0−00++ | 86 | +−+−00 | A6 | 0−0−++ | C6 | +−+−0+ | E6 | +−0−++ |
| 07 | −0+−0+ | 27 | −−+++− | 47 | 0++−00 | 67 | −000++ | 87 | −++−00 | A7 | −00−++ | C7 | −++−0+ | E7 | −0+−++ |
| 08 | −+00+− | 28 | −0−++0 | 48 | 000+00 | 68 | −+−++0 | 88 | 0+000− | A8 | −+−++− | C8 | 0+00+− | E8 | −+0++− |
| 09 | 0−++−0 | 29 | −−0+0+ | 49 | 000−++ | 69 | −−++0+ | 89 | 00+0−0 | A9 | −−++−+ | C9 | 00++−0 | E9 | 0−++−+ |
| 0A | −+0+−0 | 2A | −0−+0+ | 4A | 000+−+ | 6A | −+−+0+ | 8A | 0+00−0 | AA | −+−+−+ | CA | 0+0+−0 | EA | −+0+−+ |
| 0B | +0−+−0 | 2B | 0−−+0+ | 4B | 000++− | 6B | +−−+0+ | 8B | +000−0 | AB | +−−+−+ | CB | +00+−0 | EB | +0−+−+ |
| 0C | +0−0+− | 2C | 0−−++0 | 4C | 000−+0 | 6C | +−−++0 | 8C | +0000− | AC | +−−++− | CC | +000+− | EC | +0−++− |
| 0D | 0−+−0+ | 2D | −−00++ | 4D | 000−0+ | 6D | −−+0++ | 8D | 00+−00 | AD | −−+−++ | CD | 00+−0+ | ED | 0−+−++ |
| 0E | −+0−0+ | 2E | −0−0++ | 4E | 000+−0 | 6E | −+−0++ | 8E | 0+0−00 | AE | −+−−++ | CE | 0+0−0+ | EE | −+0−++ |
| 0F | +0−−0+ | 2F | 0−−0++ | 4F | 000+0− | 6F | +−−0++ | 8F | +00−00 | AF | +−−−++ | CF | +00−0+ | EF | +0−−++ |
| 10 | +0+−−0 | 30 | +−00−+ | 50 | +0+−−+ | 70 | −++000 | 90 | +−+−−+ | B0 | 0−000+ | D0 | +−+0−+ | F0 | +−000+ |
| 11 | ++0−0− | 31 | 0+−−+0 | 51 | ++0−+− | 71 | +−+000 | 91 | ++−−+− | B1 | 00−0+0 | D1 | ++−−+0 | F1 | 0+−0+0 |
| 12 | +0+−0− | 32 | +−0−+0 | 52 | +0+−+− | 72 | ++−000 | 92 | +−+−+− | B2 | 0−00+0 | D2 | +−+−+0 | F2 | +−00+0 |
| 13 | 0++−0− | 33 | −0+−+0 | 53 | 0++−+− | 73 | 00+000 | 93 | −++−+− | B3 | −000+0 | D3 | −++−+0 | F3 | −0+0+0 |
| 14 | 0++−−0 | 34 | −0+0−+ | 54 | 0++−−+ | 74 | −0+000 | 94 | −++−−+ | B4 | −0000+ | D4 | −++0−+ | F4 | −0+00+ |
| 15 | ++00−− | 35 | 0+−+0− | 55 | ++0+−− | 75 | 0−+000 | 95 | ++−+−− | B5 | 00−+00 | D5 | ++−+0− | F5 | 0+−+00 |
| 16 | +0+0−− | 36 | +−0+0− | 56 | +0++−− | 76 | +0−000 | 96 | +−++−− | B6 | 0−0+00 | D6 | +−++0− | F6 | +−0+00 |
| 17 | 0++0−− | 37 | −0++0− | 57 | 0+++−− | 77 | 0+−000 | 97 | −+++−− | B7 | −00+00 | D7 | −+++0− | F7 | −0++00 |
| 18 | 0+−0+− | 38 | −+00−+ | 58 | +++0−− | 78 | 0−−+++ | 98 | 0+0−−+ | B8 | −+−00+ | D8 | 0+00−+ | F8 | −+000+ |
| 19 | 0+−0−+ | 39 | 0−+−+0 | 59 | +++−0− | 79 | −0−+++ | 99 | 00+−+− | B9 | −−+0+0 | D9 | 00+−+0 | F9 | 0−+0+0 |
| 1A | 0+−++− | 3A | −+0−+0 | 5A | +++−−0 | 7A | −−0+++ | 9A | 0+0−+− | BA | −+−0+0 | DA | 0+0−+0 | FA | −+00+0 |
| 1B | 0+−00+ | 3B | +0−−+0 | 5B | ++0−−0 | 7B | −−0++0 | 9B | +00−+− | BB | +−−0+0 | DB | +00−+0 | FB | +0−0+0 |
| 1C | 0−+00+ | 3C | +0−0−+ | 5C | ++0−−+ | 7C | ++−00− | 9C | +00−−+ | BC | +−−00+ | DC | +000−+ | FC | +0−00+ |
| 1D | 0−+++− | 3D | 0−++0− | 5D | ++000− | 7D | 00+00− | 9D | 00++−− | BD | −−++00 | DD | 00++0− | FD | 0−++00 |
| 1E | 0−+0−+ | 3E | −+0+0− | 5E | −−+++0 | 7E | ++−−−+ | 9E | 0+0+−− | BE | −+−+00 | DE | 0+0+0− | FE | −+0+00 |
| 1F | 0−+0+− | 3F | +0−+0− | 5F | 00−++0 | 7F | 00+−−+ | 9F | +00+−− | BF | +−−+00 | DF | +00+0− | FF | +0−+00 |
| Unused | Unused | Unused | Unused | Unused | Unused | — | +++−−− | — | +−0000 | — | −+0000 | — | +00000 | — | 0+0000 |
| Unused | Unused | Unused | Unused | Unused | Unused | — | −−−+++ | — | 0000−+ | — | 0000+− | — | 00000+ | — | 0000+0 |