Parallel In Parallel Out (PIPO) Shift Register (original) (raw)

Last Updated : 24 Apr, 2026

A shift register is an important part of these circuits, which enables sequential data shifting in and out. A PIPO shift register is a collection of flip-flops arranged in a series, with each flip-flop capable of storing one bit of data.

Working of PIPO Shift Register

Let's discuss an example of a 4-bit shift register to understand the operations of a PIPO shift register. It consists of four flip-flops, labelled D0, D1, D2, and D3. Each flip-flop can store one bit of data. The data can be loaded into the flip-flops simultaneously through the parallel input, known as the Data input. Once the data is loaded, it can be read out simultaneously from each flip-flop through the parallel outputs.

Circuit Diagram

ownership_permission_groups

In a PIPO shift register, all flip-flops load and output data simultaneously. There is no shifting of data between flip-flops. This can be accomplished by providing a clock signal that triggers the shifting operation. When the clock signal is activated, the data in each flip-flop is transferred to the adjacent flip-flop, allowing new data to be loaded into the first flip-flop.

**Note: It is important to remember that depending on the shift register's design and specifications, shifting can occur either leftward or rightward.

**Example: Let us Consider,We have a PIPO shift register with four flip-flops (D0, D1, D2, and D3) and parallel inputs (Data). Initially, all flip-flops are cleared and contain the value '0'. We want to load the binary value '**1101' into the shift register using parallel input and then shift the data to the right by two positions.

**Solution:

**Step 1: Parallel Input To load the value '1101' into the shift register, we apply the parallel input as follows:

Data: 1 1 0 1

**Step 2: Clock Cycle (Shift Right) Now, we activate the clock signal to shift the data to the right by two positions. Each clock cycle moves the data in one position to the right. In this case, we perform two clock cycles.

Clock Cycle 1:

Data: 0 1 1 0

Clock Cycle 2:

Data: 0 0 1 1

After two clock cycles, the binary value '1101' has been shifted two positions to the right.

**Step 3: Parallel Output Finally, we can read out the data from the shift register using parallel output. The values stored in the flip-flops after the shifting operation are:

Data: 0 0 1 1

The parallel output provides the binary value '0011', which was obtained after shifting '1101' to the right by two positions. In this above example, we demonstrated the operation of a 4-bit PIPO shift register. we loaded the binary value '1101' in parallel, shifted it to the right by two positions, and obtained the result '0011' through parallel output.

PIPO Shift Register Verilog Code

module PIPO_Shift_Register (

input wire clk, // Clock input

input wire load, // Load signal

input wire [3:0] data_in, // 4-bit input data

output reg [3:0] data_out // 4-bit output data

);

always @(posedge clk) begin

if (load) begin

// Load data into the shift register

data_out <= data_in;

end

end

endmodule

OUTPUT:

**Module Declaration: Module PIPO_Shift_Register has inputs as clock clk, load signal load and 4-bit input data data_in with output as the 4-bit data register data_out.

**Always Block: Always @(posedge clk) is a process that occurs on every rising edge of the clock.

The loading of data presented as the 4-bit input into an output register when the load signal is high.

Advantages

Disadvantages

Applications