I have been learning a bit about electronics. In particular I have been playing with the shift register 74HC595. Here I understand how bits are moved into the register serially, that is one bit at the time. The output can then be read on the output pins (parallel).

My question is: Are there parallel to serial types of shift registers? I guess it wouldn't be called a shift register, but it would be something that takes, say, 8 bit in (in parallel) and then outputs the 8 bits in series.

  • 1
    \$\begingroup\$ ti.com/product/SN74ALS166 \$\endgroup\$ May 17, 2016 at 15:56
  • 1
    \$\begingroup\$ Yes. The names are PISO (ParallelIn, SerialOut), SIPO (SerialIn, ParallelOut), and so on \$\endgroup\$
    – Eugene Sh.
    May 17, 2016 at 15:56
  • \$\begingroup\$ @EugeneSh.: Ah.. would you write an answer with an example of such a PISO? \$\endgroup\$
    – John Doe
    May 17, 2016 at 15:57
  • \$\begingroup\$ Also known as a "Parallel Load Shift Register" \$\endgroup\$ May 17, 2016 at 16:08

2 Answers 2


Yes. A popular parallel-in, shift-out chip is the CD4021.

DataSheet: http://www.ti.com/lit/ds/symlink/cd4021b.pdf

Tutorial: https://www.arduino.cc/en/Tutorial/ShiftIn


A shift register is simply a chain of registers in which the input of one is connected to the output of the previous one to allow data to be serially shifted from one to the next.

If you imagine then that you have 8 registers in a chain, an 8 bit shift register, then if you look at it end on, you see just 1 signal (serial). However if you look at it side on, you see 8 signals (parallel). This is one of the practical applications of shift registers - to convert data between serial and parallel data streams.

Now going from serial to parallel is straight forward. You simply clock data in through the serial input, and then once the correct number of bits have been clocked in you read the data from the parallel bus.

Going from parallel to serial is a tiny bit more complex, but not all that much so. What you need is a so called "parallel load" circuit. Simply this is just a case of inserting a 2:1 multiplexer between each register. The output of the mux goes to the input of a register in your chain. One input of the mux goes to the output of the previous register in the chain. That leaves you with the second input of the mux which is your load data bus.

When you want to load data, you select all of the load data lines and the data will be clocked in to all registers simultaneously (parallel load). When you want to shift data out, you select the previous register using the mux and you now have a shift register again which can then shift the data out serially.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.