Voltage Level Translation: How Hardware Bridges 1.8V, 3.3V, and 5V Domains

2026-05-09

Modern boards are a Tower of Babel of voltages. Your FPGA core runs at 0.9V, its I/O at 1.8V, the SD card wants 3.3V, and that legacy sensor still demands 5V. Connecting them naively either fries silicon or fails to register a logic high. Level shifters are the diplomatic translators between these domains.

The fundamental problem: a CMOS input typically needs VIH ≥ 0.7 × VDD to register a '1'. Drive a 3.3V input with a 1.8V signal and you're at 0.55× — squarely in the forbidden zone where both transistors in the receiver conduct, wasting power and producing garbage. Drive a 1.8V input with 3.3V and you forward-bias the ESD diode, dumping current into the supply rail until something melts.

Three common topologies:

The auto-direction trap: chips like the TXS0108E use weak pull-ups (~10kΩ equivalent) and edge-accelerators to detect direction. Connect one to a strongly-driven open-drain bus with its own pull-ups and the chip fights itself, oscillating or latching. Match the chip family to the bus type — TXS for push-pull, TXB or discrete FETs for open-drain.

Real-world example: A Raspberry Pi (3.3V GPIO) talking to a WS2812 LED strip (5V data). The WS2812 needs VIH ≥ 0.7 × 5V = 3.5V, but the Pi only outputs 3.3V — marginal at best, and it works erratically depending on temperature and strip length. Solution: a single 74AHCT125 buffer powered from 5V, which has TTL-compatible inputs (VIH = 2.0V) and CMOS-compatible outputs (VOH ≈ 4.9V). One chip, $0.30, problem solved.

Rule of thumb: For any cross-domain signal, calculate VOH(driver) vs VIH(receiver) AND VOL(driver) vs VIL(receiver). If either margin is under 200mV, you need translation — not hope.

Key Takeaway: Voltage domain crossings need explicit translation matched to bus topology and speed — never assume "close enough" voltages will work across temperature and process variation.

All newsletters