Shift Registers

Earlier, I made a post on how a shift register is operated in practice. But what exactly can a shift register be used for and how does it work? As always, the answer will depend on what you are trying to do (yes, we do have to play by reality’s rules).


The main idea behind shift registers is that data signals, either high or low, can be shifted through ports inside the integrated circuit. This, in a sense, can be thought of as a projector reel where there is information on each section of the reel, but only part of the reel is able to be displayed through the projector at one particular time.

Movie Reel Projector.

With this in mind, we can look at the three main types of shift registers that are commonly used: a serial-in serial-out (SISO) shift register, a serial-in parallel-out (SIPO) shift register, and a parallel-in serial-out (PISO) shift register.


The SISO shift register is able to store (or in the reel projector analogy, cover up) information based on how big of a shift register it is. For example if it was an 8-bit register, it could store 8 bits of information. This means that when you input data into the SISO, you will have to wait for 8 data shifts (also known as clock pulses), before the first piece of information is output/displayed on the projector. Because this is a serial-out shift register, only one piece of information is displayed at a time, and once the second piece of information is shifted to the output position, the first piece of information is lost. The SISO shift registers can be used in calculators to store multiple binary numbers before shifting them out so they can be added together.

A practical use for a SISO shift register
A practical use for a SISO shift register

The SIPO shift register, the kind I used in my Instructable, takes a serial, one-at-a-time stream of data and then displays the information along multiple outputs. There are two ways that these types of shift registers can be operated. One way is to display the inputs on the outputs as they come in, creating a type of reel projector that shows 8 pictures, or pieces of information, at the same time (if it is an 8 bit shift register). The other, and in my opinion, more useful option is to not display any of the input information until all of the flip-flops in the shift register are filled  and then display the inputs on their respective output simultaneously. A SIPO shift register is useful when you want to control/give input to multiple components but do not want to individually dedicated wires from your microcontroller to each of your components.

Use for a serial-in parallel-out shift register
Use for a serial-in parallel-out shift register

Finally, the PISO shift register takes multiple inputs simultaneously and outputs them serially. While this does not follow the reel projector analogy very well, once all of the inputs have been loaded into the shift register, the PISO can then be thought of as a serial-in serial out shift register, except you do not have to wait for the input to reach the lone output port. This is useful for taking multiple readings simultaneously (e.g., multiple button readings) and then feeding the information on one line to a microcontroller.

PISO and SIPO shift registers in combination.
PISO and SIPO shift registers in combination.

About James Colvin

The biggest thing that I enjoy is learning new things. Especially things involving some type of technology; computer components, fun gadgets, games, coding techniques, etc. I love spending time with my wife and our two sons and hanging out with our friends. During my normal work day, I manage the Digilent Forum and the North American Support team.

View all posts by James Colvin →

2 Comments on “Shift Registers”

  1. Hey man, thanks for the article. But i feel like you didn’t say much about PISO and SIPO shift registers in combination. Please give a little more detail on that.


Leave a Reply

Your email address will not be published. Required fields are marked *