Digital Electronics

PIPO Shift Register

By CourseTron Team ·  4 min read ·  Updated Oct 2026 💬 𝕏 in f
Table of Contents
    ? Print / Save as PDF

    In short: A PIPO (parallel-in, parallel-out) shift register is really an N-bit edge-triggered storage register: every flip-flop captures its own data bit on the same clock edge, and every stored bit is visible on its Q pin at all times, so you can load a new word and read the old one in the same cycle.

    What PIPO really means

    In a SISO register, bits crawl through the chain one flip-flop per clock. A PIPO register does no crawling at all. Each D flip-flop has its own external data pin, all flip-flops share one clock, and every Q is brought out as a pin. Nothing is passed from one stage to the next. That is why many textbooks call it a "register" rather than a "shift register": the shift capability is simply unused. If you have not met the serial variants yet, read our SISO shift register article first, then come back to see how much simpler the parallel case is.

    A 4-bit PIPO built from 74HC174-style D flip-flops stores a nibble such as 1011. Present 1011 on D3..D0, apply one rising clock edge, and Q3..Q0 become 1011. The data stays until the next edge, regardless of what D does in between.

    4-bit PIPO register: one clock, four independent bits DFF3DFF2DFF1DFF0 D3D2D1D0 Q3Q2Q1Q0 CLK (shared) Parallel data in: one pin per bit Parallel data out: always visible CourseTron · coursetron.com
    Each flip-flop has a private D input and a visible Q output. Only the clock is shared (distributed to all four clock pins).

    Why simultaneous load and read works

    An edge-triggered flip-flop samples D only in a tiny window around the clock edge (setup time before, hold time after). Its output Q changes a clock-to-Q delay later, typically 0.3 to 0.8 ns in a 74HC part at 5 V, or tens of picoseconds in a modern 7 nm standard cell. Before that edge, Q still holds the old word. So downstream logic reading Q sees the old value for the whole cycle, while the upstream logic presents the new word on D for the next edge.

    Key fact: "Simultaneous" does not mean the same instant. At the edge, the old value is read and the new value is captured. Right after the edge, Q shows the new value. This is exactly what makes pipelines work.

    Timing in practice

    Three numbers decide whether a PIPO register behaves: setup time (tsu), hold time (th) and clock-to-Q (tcq). For a path from register A to register B through combinational logic, the maximum clock frequency obeys T > tcq + tlogic + tsu + skew. Suppose tcq = 0.4 ns, logic = 3.2 ns, tsu = 0.2 ns and skew = 0.1 ns. Then T must exceed 3.9 ns, so about 256 MHz.

    Hold is the opposite problem. If tcq + tlogic,min is smaller than th + skew, the new word races through and corrupts the capture of the old one. Back-to-back PIPO registers with no logic between them are the classic hold-violation case, and the fix is added delay buffers during clock-tree synthesis or ECO, not a slower clock.

    Timing: load 1011, then 0110 CLKD[3:0]Q[3:0] 10110110 old10110110 edge 1edge 2: Q still shows 1011 until t_cq CourseTron · coursetron.com
    Q lags each rising edge by tcq. During the cycle after edge 2, the output still carries 1011 for a moment while 0110 is captured.

    Animation: one edge, four bits

    Parallel load: all four bits move together Q3Q2Q1Q0 1 0 1 1 Clock edge sweeps across: every bit is captured at the same moment Data 1011 CourseTron · coursetron.com
    Bits drop into their flip-flops together; there is no stage-to-stage movement, unlike a serial shift.

    Adding a load enable

    A bare PIPO reloads every cycle. Real designs need to hold data, so they add a load enable. There are two ways. First, a feedback mux in front of each D (D = load ? din : Q), which costs one 2:1 mux per bit and keeps the clock ungated. Second, clock gating with an integrated clock-gating cell (ICG), which saves dynamic power on wide registers. Parts like the 74HC377 build the enable in silicon; the 74HC273 adds only an asynchronous clear; the 74HC374 adds tri-state outputs for bus sharing.

    module pipo #(parameter N = 8)(
      input  wire         clk, rst_n, load,
      input  wire [N-1:0] din,
      output reg  [N-1:0] q
    );
      always @(posedge clk or negedge rst_n)
        if (!rst_n)      q <= {N{1'b0}};
        else if (load)   q <= din;   // old q still readable this cycle
    endmodule

    Synopsys Design Compiler and Cadence Genus both infer an enable flop (or mux plus flop) from this template, and they can insert clock gating automatically when the register is wide enough. Verify it in Siemens Questa or VCS, then check setup and hold in PrimeTime or Tempus.

    Key fact: Always use non-blocking assignments (<=) for registers. Blocking assignments make the simulated old value disappear and break the read-before-write behaviour that real hardware has.

    PIPO versus the other shift register types

    TypeLoadReadTypical use
    SISO1 bit/clock1 bit/clockDelay lines
    SIPO1 bit/clockAll bits at onceUART receive, deserialiser
    PISOAll bits at once1 bit/clockUART transmit, SPI out
    PIPOAll bits at onceAll bits at oncePipeline stage, CPU register, latch for ADC data

    PIPO is the fastest in latency (one cycle) but needs the most pins: 2N data pins for N bits. That is why serial interfaces exist at all. For a deeper tour of the siblings, see the SIPO shift register.

    Common interview traps

    • Q: "How many clocks to load 8 bits into a PIPO?" One. A SISO needs eight.
    • Reset: an asynchronous clear is fast but its release must be synchronised to avoid metastability (reset recovery and removal checks).
    • Clock-domain crossing: a multi-bit PIPO is never a safe crossing by itself, because bits can be captured on different edges. Use a handshake, gray coding or an async FIFO.
    • Power: a 64-bit register toggling each cycle burns real dynamic power; gate its clock when idle.

    Teams building such blocks into production silicon, from a simple pipeline stage to a full datapath, often work with partners like Avecas VLSI design services, while engineers aiming for these roles can train at ChipXpert.

    Want to build, simulate and time registers like this in real EDA flows? Explore the hands-on digital design tracks in our CourseTron courses.

    FAQ

    Is a PIPO shift register just a register?

    Yes. With no serial path in use, a PIPO register is an N-bit parallel storage register, and the "shift" name is only inherited from the family it belongs to.

    Can I read and write a PIPO register in the same clock cycle?

    Yes. Q presents the old value until the edge plus clock-to-Q delay, while D is captured at the edge, so consumers see the old word and the new one is stored.

    Which ICs implement a PIPO register?

    The 74HC273 (octal D with clear), 74HC377 (octal D with enable), 74HC374 (octal with tri-state) and 74HC174 (hex D) are common choices.

    Why does my PIPO fail hold timing?

    When register-to-register paths are very short, the new data arrives before the hold window closes. Fix it by inserting delay cells or adjusting clock skew, not by lowering frequency.

    Advertisement