Type a binary stream (or hex, or random). Pick a code. See the same bits encoded as voltage levels over time. Compare all six codes side-by-side for the same bit stream to understand the trade-off: DC balance, clock recovery (transitions per bit), and bandwidth (theoretical first-null). Long-form history "why NRZ → RZ → Manchester" lives in the deep-dive blog.
📖 Deep-dive blog (planned)
The history of why we go NRZ → RZ → Manchester → AMI → MLT-3 is a sequence of trade-offs. Each step solves a problem the previous one couldn't. The blog will walk through this evolution with the full derivation, eye diagrams, and how each code interacts with the channel (transformer coupling, baseline wander, jitter).
- The DC-balance problem — why AC-coupled channels and transformer isolation make a non-zero mean voltage a problem; how baseline wander destroys SNR over long packets.
- The clock-recovery problem — why long runs of 1s (or 0s) make it impossible for the receiver PLL to lock; the bit-error floor that results from bad clock recovery even at infinite SNR.
- The bandwidth problem — why NRZ at bit rate Rb has first-null at Rb, but RZ at 2Rb; the engineering trade-off between spectral efficiency and timing margin.
- Manchester vs. Differential Manchester — the two variants and where each is used (10BASE-T vs. token ring).
- AMI in T1 / E1 — why the telecom backbone uses AMI, and how B8ZS / HDB3 extend it to handle long zero runs.
- MLT-3 in 100BASE-TX — how a 3-level code achieves a 4× spectral reduction and why that matters for running gigabit Ethernet over Category-5 twisted pair.
- PAM-4 / PAM-8 (the next step) — multi-level pulse-amplitude modulation; how Ethernet went from 2-level NRZ (100M) to 4-level PAM-3/4 (1G / 10G) to keep up with bandwidth-limited channels.
Posts are planned. Tool ships first; deep-dives follow.