Encoding of binary data in a signal that the transmission line is able to carry. Assume we are working with two discrete signals: high and low.
Boud rate: the rate of signal transitions on the link. Bit rate: the rate of bits transmission on the link
Non-Return to Zero (NRZ) encoding maps the data value 1 onto the high signal and the data value 0 onto the low signal.
Bits 0 1 0 1 1 0 0 1 ___ _______ ___ NRZ ___| |___| |_______|
The encoding has two problems caused by long strings of 1s or 0s.
The baud rate is equal to the bit rate.
Non-Return to Zero Inverted (NRZI) encoding makes a transition from the current signal to encode a 1 and stay at the current signal to encode a 0.
Bits 0 1 0 1 1 0 0 1 _______ ___________ NRZI ___| |___| |___
The encoding solves the problem of consecutive ones but not of consecutive zeros.
The internal clock signal is XOR-ed with the NRZ-encoded data. The 0 is thus encoded as a low-to-high transition and 1 being encoded as a high-to-low transition.
With Manchester both 0s and 1s encoding results in a transition of the signal.
Bits 0 1 0 1 1 0 0 1 ___ _______ ___ NRZ ___| |___| |_______| _ _ _ _ _ _ _ _ Clock _| |_| |_| |_| |_| |_| |_| |_| | ___ ___ _ _ ___ Manch _| |___| |_| |___| |_| |_|
The problem is that it doubles the rate at which signal transitions are made on the link. Thus the bit rate is half of the bound rate.
A 1 is ancoded with the first half of the signal equal to the last half of the previous bit's signal and 0 is encoded with the first half of the signal opposite to the last half of the previous bit's signal.
Same advantages and disadvantages of the Manchester encoding.
The idea is to insert one extra bit into the bit stream to break long sequences of 0s or 1s. Specifically, every 4 bits of data are encoded in 5-bit code. The 5-bit codes are selected so that each one has no more than one leading 0 and no more than two trailing 0s. Thus, no pair of 5-bit codes results in more than three consecutive 0s being transmitted.
The resulting 5-bit codes are then transmitted using NRZI.
Of the 4B/5B codes, 16 are used to encode the 4-bit payloads, 11111 is used when the line is idle, 00000 corrensponds to a dead line, 00100 is the mean halt. Of the remaining 13 codes, 7 of them are not valid because they violate the constraint rule, and the other 6 represents various control symbols. Some framing protocols (e.g. FDDI) make use of these control symbols.
4B/5B solves the "clock recovery" and the "baseline wander" issues by loosing the 20% of efficiency (4/5=0.8). Baud rate is 5/4 of bit-rate.
Other popular similar encodings are
proudly self-hosted on a cheap Raspberry Pi 2