Skip to content
BetterDL

SISO, SIPO, PISO and PIPO

Also called: SISO, SIPO, PISO, PIPO, serial-in serial-out, serial-in parallel-out, parallel-in serial-out, parallel-in parallel-out, serial to parallel, parallel to serial, shift register types

The four shift register types, named by how data gets in and out: serial or parallel input, serial or parallel output.

Registers are classified by how data enters and leaves. Serial means one bit per clock edge on a single wire. Parallel means all n bits at once on n wires.

  • SISO (serial in, serial out): one bit in and one bit out per edge. Each bit comes out n clock periods after it went in, in the same order. Used as a delay line.
  • SIPO (serial in, parallel out): bits arrive one per edge; after n edges the whole word can be read on the n outputs at once. Converts serial → parallel.
  • PISO (parallel in, serial out): all n bits are loaded in one edge, then shifted out one per edge. Converts parallel → serial.
  • PIPO (parallel in, parallel out): load all n bits in one edge and read them all at once. This is the plain register with no shifting.

Why convert at all: serial links need far fewer wires. A UART or SPI port loads a byte in parallel and shifts it out (PISO), while the receiver shifts bits in and hands the processor a whole byte (SIPO). Chips like the 74HC595 (SIPO) and 74HC165 (PISO) let a microcontroller drive many LEDs or read many buttons with a few pins.

Counting edges for an n-bit register:

  • SISO: a bit entering at edge k reaches the output at edge k + n − 1.
  • SIPO: n edges to fill.
  • PISO: one load edge, then n − 1 shifts to bring out the remaining bits.
  • PIPO: one edge.

Worked examples

Example

A PISO register sending a nibble

A 4-bit PISO register shifts right, with its serial output at Q0 and SI = 0. It is loaded with 1011.

  1. 1.

    After the load edge: 1011. Q0 = 1 is already on the output.

  2. 2.

    Shift 1: 0101. Output 1.

  3. 3.

    Shift 2: 0010. Output 0.

  4. 4.

    Shift 3: 0001. Output 1.

  5. 5.

    The output stream is 1, 1, 0, 1: the bits of 1011 least significant bit first, using 1 load + 3 shifts.

Example

Which type for the job?

Match each task to a register type.

  1. 1.

    Send a 12-bit sensor reading down one wire: load it at once, shift it out → PISO.

  2. 2.

    Drive 16 LEDs from a few microcontroller pins: shift the pattern in, show all 16 bits at once → SIPO.

  3. 3.

    Delay a bit stream by 6 clock periods → 6-bit SISO.

  4. 4.

    Hold an 8-bit value loaded in one go → PIPO.

Common mistakes

  • Mixing up the letters. The first pair says how data gets in, the second how it gets out.

  • Counting n edges for a PISO to deliver all n bits after loading. The last stage's bit is already out after the load, so n − 1 shifts finish the job.

  • Reading a SIPO's outputs before all n bits have arrived. Until then they show a mix of new bits and leftovers.

Practice SISO, SIPO, PISO and PIPO

Interactive questions with instant feedback and a worked solution for every wrong answer.

Learn it step by step

SISO, SIPO, PISO and PIPO is taught in Registers.