Hi,
I was trying to understand the working of the 74HC595 Shift register, so I opened its datasheet.
It has two registers(one called shift and the other one storage). But I am confused.. why do you need an extra storage register? What's the purpose of the register? How these two registers are working together to shift the O/P?
Let me break this down step by step:
The 74HC595 shift register works in three key stages/phases:
-
Shift Register (SRCLK-controlled)
This is made up of 8 flip-flops connected in series, forming an 8-bit shift register. As each clock pulse is applied to SRCLK, the data on the SER (serial input) pin is shifted through these flip-flops one bit at a time. -
Storage Register (RCLK-controlled)
These are another set of 8 flip-flops, but unlike the shift register, they are not cascaded. Instead, each one takes input from its corresponding flip-flop in the shift register. When a rising edge is applied to RCLK, all 8 bits from the shift register are latched into the storage register simultaneously. -
Tri-state Output Buffers (OE-controlled)
Each output pin is connected to a tri-state buffer. These buffers control whether the output pins are actively driving the stored values or are in a high-impedance (disabled) state. This is controlled by the OE (Output Enable) pin.
How is data flowing?
-
After 8 SRCLK pulses, the serial data has fully shifted through the shift register and is now present at the inputs of the storage register.
-
A single RCLK pulse latches all 8 bits into the storage register.
-
If the output enable (OE) is active (typically low), the latched data is made available on the Q0–Q7 output pins.
Now, to answer your question, what is the need for a separate 'storage register'?
Without it, the outputs would directly reflect the shifting process — meaning the output pins would change with every SRCLK pulse as data moves through the shift register. This would result in unintended flickering or unstable outputs while new data is being loaded.
The storage register acts as a buffer, holding the previous stable output until you're ready to update it. Only when RCLK is triggered does the new data get transferred all at once to the output pins — ensuring clean, controlled updates.
@ankunegi Thanks for the explanation. But if there is already an output buffer inside the chip, can't we just use it to enable the output?
This is what I meant(If there is no storage register):
1. Shifting the data into the shift register first(8 bits- 8 clocks). The buffer is disabled now.
2. Once I am happy with the data, enable the buffer...
This way I have what I want at the ouput without ever needing an extra register and clock for it.
This is a very common yet important question. The 74HC595 is a widely used Serial-In Parallel-Out (SIPO) shift register. It features two separate registers — the Shift Register and the Storage Register — and this dual-register design is intentional:
It ensures stable output during the shifting process, preventing intermediate or flickering states.
How it works:
The Shift Register receives data serially through the DS (Data Input) pin. With every rising edge of the SHCP (Shift Clock), the input bit is shifted into the register, moving the existing bits to the right. After 8 bits are loaded, the data is stored inside the shift register — but it’s not yet output.
That’s where the Storage Register comes in. This second register controls the actual output on the Q0 to Q7 pins. When a rising edge is applied to the STCP (Storage Clock or Latch Clock), the 8-bit data from the shift register is latched into the storage register, which then updates the output all at once.
This mechanism allows for:
-
"Background preparation" — data is safely shifted in without affecting the outputs.
-
"Foreground update" — all output pins change simultaneously when the data is latched.
This structure is especially useful for:
-
Preventing glitches or flicker on output devices.
-
Achieving synchronized output across multiple cascaded 74HC595 chips.
-
Driving LEDs, 7-segment displays, relays, and more.
Example for clarity:
Suppose you want the 74HC595 to output 11001100. You feed in this bitstream via DS, one bit at a time, using SHCP to clock each bit into the shift register. During this process, Q0 to Q7 remain unchanged. Only when you pulse STCP will 11001100 be transferred to the output pins simultaneously — ensuring a clean, stable update.