Level 3 · Protocol Reference

8-bit Parallel

Eight wires, eight bits, all at once — no shifting, no clock, no strobe. The opposite trade-off from the other three: pins spent freely so nothing has to wait its turn.

WiresD0–D7 + GND (8 data lines)
ClockNone — timing only
TopologyPoint-to-point, wide
Trade-offPins for speed

A Little History

Parallel buses are older than serial protocols, in a sense — early computers moved data on wide buses because it was the obvious way to go fast when clock speeds were low: if you can't toggle a wire quickly, use more wires instead. The Centronics printer port, ISA and early PCI expansion buses, and camera and LCD interfaces on countless embedded devices all work this way. Serial protocols like UART, I²C, and SPI became more common as clock speeds rose high enough that shifting bits out one at a time stopped being the bottleneck — but wherever raw throughput still matters more than pin count, parallel buses never really left.

What It's Actually For

Moving a lot of data with the simplest possible per-bit circuitry. There's no shift register needed on either end — every bit just needs its own wire and something willing to hold a voltage on it. The cost is obvious: 8 bits of parallel data needs 8 pins, versus 1 or 2 for a serial protocol. That trade only makes sense when pins are cheap relative to the speed you need, which is why parallel buses show up on memory interfaces and camera sensors far more often than on simple sensors.

How It Works

All 8 lines present a full byte's worth of voltage levels simultaneously, hold it stable for a fixed window, then change all at once to the next byte. There's no clock line and no strobe signal telling the receiver when to sample — the stable window itself is the framing. As long as both sides agree on the timing, the receiver just samples the middle of each window and ignores the brief chaos during a transition.

0x6D 0x92 0x3B 0xC4 0x57 0xE8 D7 D6 D5 D4 D3 D2 D1 D0 0 1 0 1 0 1 1 0 0 1 1 1 1 0 1 0 0 1 0 1 1 0 1 0 1 0 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 0 5 ms 5 ms 5 ms 5 ms 5 ms 5 ms No clock or strobe wire — the stable window itself is the framing.
Six real bytes in a row, every bit labeled. Each column is a 5 ms window (marked below) — all 8 lines change together at a column boundary, then hold stable. Read straight down any single window (D7 at top, D0 at bottom) and you have that byte, e.g. the first: 0 1 1 0 1 1 0 1 = 0x6D.

On the Sniffer Board

Top view of the sniffer board with the Parallel header outlined in a red box
 The Parallel header is boxed in red. Pins run from pin 1 at the top: D0–D7, GND.

Each byte holds stable on D0–D7 for exactly 5 ms, then every line changes at once. Because this uses all 8 analyzer channels simultaneously, it can't be captured alongside any other bus on the sniffer board — plan on a separate capture just for this one.

Parallel header pins
PinConnects to
D0–D7Logic analyzer channels D0–D7 (D7 = )
Logic analyzer ground clip

In PulseView: 100 kHz sample rate, 10 second capture — that gives around 500 samples per 5 ms window, comfortably more than enough to land well clear of a transition edge. No decoder is needed here: enable all 8 channels, zoom into one stable window, and read the byte value directly off the levels — D7 is the , D0 is the .