Logo
All chapters
Volume II: Digital Logic  ›  Registers & Counters

Registers

A group of flip-flops sharing a clock, storing a multi-bit word and moving it around.

PrevDesign Procedure
NextShift Registers

Description

A set of n flip-flops on a common clock that holds an n-bit word. Computation works on whole words; a register stores and transfers them as a unit. Each flip-flop stores one bit; control lines add parallel load, clear, and enable.

  • A load line selects between holding the value and loading new data.
  • A 2-to-1 MUX in front of each flip-flop chooses old Q or new D.
  • An enable lets the register skip clocks without losing data.
  • Moving a word from one register to another on a clock edge.
  • The basis of RTL: every datapath operation is a register transfer.
  • What: A set of n flip-flops on a common clock that holds an n-bit word.
  • Why: Computation works on whole words; a register stores and transfers them as a unit.
  • How: Each flip-flop stores one bit; control lines add parallel load, clear, and enable.
  • Where: CPU register files, pipeline stages, I/O buffers, data paths.
  • When: Whenever a multi-bit value must persist or move between blocks each clock.

At a glance

What

A set of n flip-flops on a common clock that holds an n-bit word.

Why

Computation works on whole words; a register stores and transfers them as a unit.

How

Each flip-flop stores one bit; control lines add parallel load, clear, and enable.

Where

CPU register files, pipeline stages, I/O buffers, data paths.

When

Whenever a multi-bit value must persist or move between blocks each clock.

Think of it like…

A register is a row of lockers opened by one bell: at the bell everyone swaps contents together, and a 'load' switch decides whether to take new items or keep the old.

Register with parallel load

  • A load line selects between holding the value and loading new data.
  • A 2-to-1 MUX in front of each flip-flop chooses old Q or new D.
  • An enable lets the register skip clocks without losing data.

Register transfer

  • Moving a word from one register to another on a clock edge.
  • The basis of RTL: every datapath operation is a register transfer.

Common control lines

LineEffect
Loadcapture parallel data D
Clearforce all bits to 0
Enableignore clock (hold)
Clockupdate on the edge

Black-box view

Data inLoadCLKn-bit Registerblack boxQ3Q2Q1Q0

Inputs on the left → outputs on the right · particles show signal direction

Watch bits load and move

▶ live simulator
1Q3
0Q2
0Q1
0Q0

Pick a mode, then press Clock ▲ to shift and trace each bit.

Real-world applications

CPU register filesPipeline registersData buffersAccumulators

The 5 Whys

  1. 1

    Why registers? Data is processed a whole word at a time.

  2. 2

    Why a shared clock? So all bits update together, never half-changed.

  3. 3

    Why parallel load? To capture a new word in a single clock.

  4. 4

    Why an enable? To hold a value across clocks without clearing it.

  5. 5

    Root cause: grouped, clocked storage is the unit of data movement in any datapath.

Cheat sheet

Working principle

  • Each flip-flop stores one bit; control lines add parallel load, clear, and enable.
  • A set of n flip-flops on a common clock that holds an n-bit word.

Formulas & Boolean expressions

  • Load = capture parallel data D
  • Clear = force all bits to 0
  • Enable = ignore clock (hold)
  • Clock = update on the edge

Key facts

  • A load line selects between holding the value and loading new data.
  • Moving a word from one register to another on a clock edge.

Why it exists

  • Root cause: grouped, clocked storage is the unit of data movement in any datapath.
PrevDesign Procedure
NextShift Registers