DE-09: Shift Registers — VLSI Trainers
Digital Electronics Series · DE-09

Shift Registers

SISO, SIPO, PISO, PIPO — Bidirectional and Universal shift registers — Ring counter and Johnson counter — IC details (7491, 74164, 74194, 74195) — Serial adder, parity generator, time delay, data conversion, and sequence generator applications.

💾 What is a Register?

A register is a group of n flip-flops sharing a common clock, capable of storing an n-bit binary word. A single D flip-flop stores 1 bit — it transfers the D input to its output on the clock edge and holds that value until the next clock edge.

When flip-flops are connected so that the output of each feeds the input of the next — with each clock pulse shifting the stored pattern one position — the circuit is a shift register. Shift registers serve as temporary storage and also implement serial-to-parallel and parallel-to-serial data conversion.

Shift = multiply or divide by 2. Each right-shift of a binary number is equivalent to dividing by 2 (integer division). Each left-shift is equivalent to multiplying by 2. This arithmetic property is why shift operations appear in every ALU and DSP.

🗂️ Four Register Types

SIPO — Serial In Parallel Out

Input: 1 bit per clock (serial). Output: all n bits simultaneously (parallel).

Data shifts in one bit at a time — after n clocks the full word is available on all Q outputs at once.

Use: Serial-to-parallel conversion, receiving serial data streams.

SISO — Serial In Serial Out

Input: 1 bit per clock. Output: 1 bit per clock, delayed by n clock periods.

The complete word must be shifted through all n stages to appear at Q₀. Acts as a digital time-delay line.

Use: Time delay, pipeline buffers, shift-register counters.

PIPO — Parallel In Parallel Out

Input: all n bits simultaneously (parallel). Output: all n bits simultaneously.

A LOAD pulse latches all inputs into all flip-flops at once. Data is available immediately at all Q outputs.

Use: Data storage registers, CPU internal registers.

PISO — Parallel In Serial Out

Input: all n bits in one LOAD clock. Output: 1 bit per subsequent clock.

WRITE/LOAD mode fills all flip-flops in one clock. SHIFT mode outputs bits one by one from the last FF.

Use: Parallel-to-serial conversion, SPI/UART transmission.

SIPO — Serial In Parallel Out

Four D flip-flops in series. The output of each stage’s Q feeds the D input of the next. All Q outputs are accessible simultaneously for parallel readout.

Data flow: INPUT DATA → FF₃ → FF₂ → FF₁ → FF₀
DATA IN→
D FF₃ Q
Q₃
D FF₂ Q
Q₂
D FF₁ Q
Q₁
D FF₀ Q
Q₀
All Q₃Q₂Q₁Q₀ available simultaneously as parallel output ↕
Example — Load data 1111 serially into 4-bit SIPO register (starts cleared: 0000)
Clock pulseInput bitQ₃Q₂Q₁Q₀
Initial0000
1↓11000
2↓11100
3↓11110
4↓11111
After 4 clock pulses: Q₃Q₂Q₁Q₀ = 1111 — full data available in parallel

→→ SISO — Serial In Serial Out

Identical hardware to SIPO — four D flip-flops in series — but only the last flip-flop’s output (Q₀) is used. To retrieve data, n additional clock pulses must be applied after loading, shifting bits out one at a time through Q₀. Total clocks needed = n (to load) + n (to unload) = 2n.

Example — Load data 1101 (LSB first) into SISO, then read back serially
ClockInputQ₃Q₂Q₁Q₀ (serial out)
Initial (CLR)0000
1↓1 (LSB)1000
2↓00100
3↓11010
4↓1 (MSB)1101 ← LSB out
5↓00110
6↓00011
7↓00001 ← MSB out
Serial output at Q₀ over clocks 4–7: 1, 0, 1, 1 = data 1101 ✓ (LSB first)

PIPO — Parallel In Parallel Out

All flip-flops share a LOAD/PARALLEL TRANSFER signal. When the LOAD signal is HIGH, all AND gates are enabled, connecting all data inputs D₃D₂D₁D₀ to their respective flip-flop D inputs simultaneously. On the next clock edge, all data is loaded at once and all Q outputs reflect the loaded data immediately.

PIPO Shift Register — All Bits Load and Appear Simultaneously FF₃ FF₂ FF₁ FF₀ D₃ D₂ D₁ D₀ Q₃ Q₂ Q₁ Q₀ CLK (common) LOAD (common)
Figure 1 — PIPO shift register. All D inputs connect to their flip-flops through AND gates enabled by the common LOAD signal. On one clock pulse with LOAD=1, all four bits are stored simultaneously and appear immediately at Q₃Q₂Q₁Q₀.

PISO — Parallel In Serial Out

The PISO register operates in two phases controlled by a WRITE/SHIFT̄ line:

Example — Load 1001 in parallel, then shift out serially
ClockModeQ₃Q₂Q₁Q₀ (serial)
1↑WRITE1001
2↑SHIFT0100 ←
3↑SHIFT0010 ←
4↑SHIFT0001 ←
5↑SHIFT0001 ← MSB
Serial output sequence (LSB first): 1, 0, 0, 1 = original data 1001 ✓

↔️ Bidirectional Shift Register

A bidirectional (left/right) shift register uses NAND gates configured as OR selectors to connect each flip-flop’s D input to either the right or left adjacent flip-flop’s Q output, under control of the SHR/SHL̄ signal.

SHR/SHL̄OperationEffect on binary number
1 (HIGH)Shift RIGHT — Q of each FF → D of next FF to the rightDivide by 2 (arithmetic right shift)
0 (LOW)Shift LEFT — Q of each FF → D of preceding FF to the leftMultiply by 2 (arithmetic left shift)
Arithmetic significance. Right-shifting a binary number by one position = dividing by 2 (discarding remainder). Left-shifting by one position = multiplying by 2. A 4-bit right shift register that starts with 1000 (8) gives 0100 (4) → 0010 (2) → 0001 (1) → 0000 (0, shifted out). This is how processors implement fast multiply/divide by powers of 2.

🔧 Universal Shift Register

A universal shift register supports all four modes of operation plus bidirectional shifting, controlled by two mode-select inputs S₁ and S₀.

S₁S₀Operating ModeDescription
00No ChangeHold — register retains current contents
01Shift RightSerial data enters at shift-right input (SR); shifts right on each clock
10Shift LeftSerial data enters at shift-left input (SL); shifts left on each clock
11Parallel LoadData D₃D₂D₁D₀ loaded simultaneously on next clock

Key IC: 74194 4-bit bidirectional universal shift register. Positive edge triggered, synchronous parallel load, independent left/right shift with separate serial inputs, active-low asynchronous clear.

🔄 Ring Counter

A ring counter is a SISO shift register with the output of the last flip-flop (Q₀) connected back to the input of the first. A single 1 circulates around the register indefinitely. An n-bit ring counter has n states and repeats every n clock pulses.

4-bit Ring Counter — Single 1 Circulates Every 4 Clock Pulses FF₃ FF₂ FF₁ FF₀ PRE=1 Q₀ feeds back to D of FF₃ (ring connection) States Clk Q₃Q₂Q₁Q₀ 0 1000 1 0100 2 0010 3 0001 4→ 1000 ✓
Figure 2 — Ring counter. FF₃ is preset to 1, all others cleared. The single 1 moves right one position per clock. After n=4 clocks the pattern returns to 1000. Only one output is HIGH at any time — ideal for sequencing operations one after another.
Ring counter characteristics: n flip-flops → n states → modulus n. Only one FF is HIGH at any time, making it a natural 1-of-n decoder. No combinational decode logic needed — the Q output of each FF directly indicates “currently in state k”. Trade-off: uses more flip-flops than a binary counter for the same modulus.

🔄 Johnson (Twisted Ring) Counter

The Johnson counter differs from the ring counter by connecting the complement output Q̄ of the last flip-flop back to the D input of the first — the “twist.” This produces 2n states from n flip-flops (double the ring counter), and generates a sequence with only one bit changing at a time (like Gray code).

4-bit Johnson Counter — 8-state sequence (Q₀ connected back inverted)
ClockQ₃Q₂Q₁Q₀State
0 (reset)00000
110001
211002
311103
411114
501115
600116
700017
8→0000→ back to 0
4 flip-flops → 8 states → MOD-8 counter. Only 1 bit changes per clock (Gray code property).
PropertyRing CounterJohnson Counter
n flip-flops → statesn states2n states
FeedbackQ of last FF → D of firstQ̄ of last FF → D of first
4 FFs → modulusMOD-4MOD-8
Bits changing per step1 (single 1 moves)1 (Gray code-like)
Decode complexityNone (Q directly = state)2-input AND/NAND per state

🔌 Shift Register ICs

IC No.TypeBitsKey Features
7491 / 7491ASISO8-bitTwo gated serial inputs A and B; QH and Q̄H outputs; enter through A with B=1 or B with A=1
7494PISO4-bitParallel-in, serial-out
7495SIPO / PIPO4-bitSerial or parallel in, parallel out; left/right shift
74164SIPO8-bitTwo gated serial inputs A,B; 8 parallel outputs QA–QH; active-low CLR
74165PISO8-bitSH/LD̄ control; serial and parallel inputs; complementary outputs QH, Q̄H
74194Universal (bidirectional)4-bitS₁,S₀ mode select; separate SR and SL serial inputs; parallel I/O; synchronous clear; the most versatile shift register IC
74195PISO (universal)4-bitSH/LD̄ control; J-K serial input to first stage; parallel I/O; complementary QA and Q̄A
74198Universal (bidirectional)8-bitExtended 74194 to 8 bits

IC 74194 — Mode Control (most important shift register IC)

IC 74194 — 4-bit Bidirectional Universal Shift Register S₁   S₀   Mode 0   0   No change (hold) 0   1   Shift right (SR input) 1   0   Shift left (SL input) 1   1   Parallel load CLR̄: active-low async clear Positive edge triggered Inputs: D₃D₂D₁D₀ (parallel), SR (shift right serial), SL (shift left serial), S₁, S₀, CLR̄, CLK Outputs: Q₃Q₂Q₁Q₀ Two ICs cascaded → 8-bit universal register
Figure 3 — IC 74194 functional summary. Cascading is done by connecting Q₀ of first IC to SR of second (for right shift) and Q₃ of second IC to SL of first (for left shift). Both ICs share the same CLK, S₁, S₀, and CLR̄ signals.

🛠️ Applications of Shift Registers

Serial Adder

Two shift registers (augend A and addend B) plus a full adder and carry flip-flop implement serial addition. Augend and addend bits are shifted out LSB-first on each clock — the full adder adds one bit pair per clock with carry from the previous stage. The sum bit re-enters register A. After n clocks the complete n-bit sum is in register A.

Advantage vs parallel adder: Only one full adder needed (saves hardware). Disadvantage: Requires n clock cycles vs single-cycle parallel addition.

Time Delay

A SISO register of N stages introduces a time delay of:

Δτ = N × T_CLK = N / f_CLK

Example: N=8 stages, f_CLK = 500 kHz → Δτ = 8 × 2μs = 16μs delay. Change N or f_CLK to control the delay precisely.

Data Conversion

Parity Generator/Checker

A shift register clocked at the bit rate, with XOR feedback, accumulates the running XOR of all data bits. After n clocks the stored bit is the even parity of all n input bits. The same circuit checks parity at the receiver — if the final XOR of data + received parity bit is non-zero, an error occurred.

Sequence Generator

Connect the parallel outputs of a SISO register to a combinational logic network whose output feeds the serial input. By designing the feedback combinational circuit appropriately, any desired repeating binary sequence can be generated. Used in spread-spectrum communications (LFSR), test pattern generation, and digital signal synthesis.

Sequence Generator — Generate 101011… using 3-stage shift register

Required sequence has 6 bits → need N=3 stages (since 6 ≤ 2³=8). Feedback function derived from K-map:

K-mapFrom the state table of Q₂,Q₁,Q₀ vs required next input W:
ResultW = Q₂·Q₀ + Q̄₂·Q̄₀ = Q₂ ⊙ Q₀ (XNOR)
Connect XNOR of Q₂ and Q₀ back to D input of FF₂. The register cycles through: 101 → 010 → 101 → 011 → … generating 101011…

📋 Quick Reference

TypeInputOutputClocks to loadKey use
SIPOSerial (1 bit/clk)Parallel (all at once)nSerial → parallel conversion
SISOSerial (1 bit/clk)Serial (1 bit/clk, delayed)n (load) + n (unload)Time delay, pipeline
PIPOParallel (all at once)Parallel (all at once)1Data storage registers
PISOParallel (1 clock)Serial (1 bit/clk)1 (load) + n (shift)Parallel → serial conversion
Counter typen FFs → statesModulusBits/step
Ring countern statesn1 (one 1 moves)
Johnson counter2n states2n1 (Gray-code-like)
ICTypeBitsKey pin
7491SISO8Gated inputs A,B
74164SIPO8Gated A,B; active-low CLR̄
74194Universal bidirectional4S₁S₀ mode; SR,SL serial inputs
74195PISO (universal)4SH/LD̄; J-K serial input
Coming next — DE-10: Counters — Asynchronous (ripple) binary and decade counters, synchronous binary counters, up/down counters, Mod-N counter design procedure, arbitrary-sequence counters, decade counter ICs, and applications including digital frequency meter and digital clock.
Scroll to Top