top of page

Student Group

Public·13 members


Click Here >>>


How to Implement a Shift Register Parallel In Serial Out in VHDL

A shift register is a digital circuit that can store and manipulate binary data. A shift register parallel in serial out (PISO) is a type of shift register that can load multiple bits of data in parallel and then shift them out one by one in serial. This can be useful for applications such as serial communication, data conversion, and digital signal processing.

In this article, we will show how to implement a PISO shift register in VHDL, using a generic parameter to specify the number of bits. We will also provide some examples of VHDL code for different types of PISO shift registers, based on the web search results[^1^] [^2^] [^3^].

Basic Structure of a PISO Shift Register

A PISO shift register consists of three main components: a parallel input port, a serial output port, and a set of flip-flops connected in a chain. The parallel input port allows the shift register to load multiple bits of data at once, while the serial output port allows the shift register to output one bit of data at a time. The flip-flops store the data and shift it to the right on every clock cycle.

The following diagram shows the basic structure of a PISO shift register with n bits:

+---+ +---+ +---+ +---+

Dn D Q D Q D Q D Q Sn


+---+ +---+ +---+ +---+

Dn-1 D Q D Q D Q


+---+ +---+ +---+

... ... ...

+---+ +---+ +---+

D1 D Q D Q


+---+ +---+

D0 D



In this diagram, Dn to D0 are the parallel input bits, Sn is the serial output bit, and each D and Q represent the input and output of a flip-flop, respectively. The symbol >o represents an edge-triggered flip-flop, which can be either D-type or JK-type. The clock signal is not shown for simplicity, but it is assumed to be connected to all flip-flops.

The operation of a PISO shift register can be summarized as follows:

When a load signal is high, the parallel input bits are transferred to the flip-flops simultaneously.

When the load signal is low, the flip-flops shift their contents to the right on every rising edge of the clock signal.

The serial output bit is always equal to the rightmost bit of the shift register.

VHDL Code for a PISO Shift Register

To implement a PISO shift register in VHDL, we need to define an entity with three input ports (clock, load, and parallel input) and one output port (serial output). We also need to declare a generic parameter n that specifies the number of bits in the shift register. The entity declaration can look something like this:

library ieee;

use ieee.std_logic_1164.all;

entity piso is

generic (

n : integer := 4 -- number of bits


port (

clk : in std_logic; -- clock signal

load : in std_logic; -- load signal

din : in std_logic_vector (n-1 downto 0); -- parallel input

dout : out std_logic -- serial output


end piso;

The architecture of the piso entity can be defined using a behavioral style, where we use a process to describe the logic of the 061ffe29dd


Welcome to the group! You can connect with other members, ge...
bottom of page