Skip to content
DenseChip
Learn
PracticeCode labInterview

DenseChip

Navigate

Menu

LearnPracticeCode labInterview

Tools

All toolsSV editorCode repoResume
DenseChip

Practice, courses, and chip-design tools in one focused workspace.

LearnPracticeCode labInterviewToolsLearning paths

© 2026 DenseChip

AboutContactPrivacyTerms
Skip to lesson

Course contents

  • How to Use This Course
  • Reading Paths
  • Concept Map
  • How to Read the Diagrams
  • Part 0: What Is a Protocol?10
  • Part 1: Timing and Clocking11
  • Part 2: Encoding and Framing12
  • Part 3: Handshakes13
    • Valid-Only Streams
    • Wait States and Stretching
    • The Valid/Ready Handshake
    • The Valid/Ready Rules
    • Request/Acknowledge: Two-Phase and Four-Phase
    • Push and Pull
    • Global Stall or Elastic Pipeline
    • Register Slices
    • Skid Buffers
    • Bubbles and Half Throughput
    • Latency-Insensitive Design
    • Protocols Compared: Handshakes
    • Drills: Handshakes
  • Part 4: Flow Control17
  • Part 5: Transactions19
  • Part 6: Concurrency and Performance17
  • Part 7: Ordering13
  • Part 8: Sharing and Arbitration12
  • Part 9: Deadlock and Liveness13
  • Part 10: Reliability and Recovery20
  • Part 11: Bring-Up and Link Management10
  • Part 12: Power8
  • Part 13: Shared State and Coherence9
  • Part 14: Security and Isolation7
  • Part 15: Specifying and Verifying11
  • Part 16: Protocols Dissected17
  • Part 17: Capstones5
  • Part 18: Interview Preparation6
Loading lesson

‹Part 3: Handshakes
  1. Topics
  2. First Principles of Hardware Protocols
  3. Part 3: Handshakes
  4. Protocols Compared: Handshakes

Part 3 · Handshakes · All levels

Protocols Compared: Handshakes

How nine protocols let a receiver push back: none, wait states, clock stretching, valid/ready, request/acknowledge, credits or dropping.

On this page

    Every protocol must decide what happens when the receiver is not ready. Read across for one protocol; read down to see how widely the answers differ.

    Back-pressure, side by side

    Protocol

    How the receiver pushes back

    Granularity

    Transfers in flight

    UART (basic)

    It cannot: the receiver must take every character

    None

    One character at a time on the line

    SPI

    It cannot: the master drives the clock and decides when every bit moves

    None

    One transfer

    I2C

    Clock stretching (a slave holds SCL low); a receiver may also not acknowledge a byte

    Per bit (stretching), per byte (acknowledge)

    One transfer

    APB

    Wait states: the access phase lasts until PREADY is high

    Per transfer

    One

    AXI

    VALID/READY on each of its channels

    Per transfer on each channel

    Many (Part 6)

    AXI-Stream

    TVALID/TREADY

    Per transfer

    A stream

    CDC handshakes

    Request/acknowledge: the sender waits for ack

    Per word

    One word

    PCI Express

    Credits: the sender may only send what the receiver advertised (Part 4)

    Per packet, per credit type

    Many

    Ethernet

    Lossy by default: frames may be dropped; PAUSE and priority flow control can stop a sender

    Per link or per priority

    Many

    What the table shows

    • Simple buses push back on one transfer at a time (wait states, stretching): easy, but the initiator is blocked.

    • On-chip streams use valid/ready: per-cycle agreement, any number of transfers in sequence, latency-insensitive.

    • Long links use credits, because a per-cycle ready would arrive many cycles late: the skid-buffer rule (spare buffering = how late the stop arrives) scaled up to a whole round trip.

    • Some protocols have no back-pressure at all and push the problem to buffering or to the application (UART, SPI, lossy Ethernet).

    Where each idea is explained

    • 3.1 Valid-Only Streams

    • 3.2 Wait States and Stretching

    • 3.3 The Valid/Ready Handshake

    • 3.4 The Valid/Ready Rules

    • 3.5 Request/Acknowledge: Two-Phase and Four-Phase

    • 3.9 Skid Buffers

    Tip

    For a protocol you know that is not here, ask: how late does the sender learn that the receiver is full, and how many words can it send in that time? The answer tells you how much buffering the receiver needs.

    Keep going

    Next: Drills: Handshakes. Interview questions, a whiteboard exercise and a ten-question checkpoint for Part 3.

    Related topics

    • Part 3 overview: Handshakes

    • Course hub

    Previous

    49 / 234

    Next: Drills: Handshakes

    Up next

    Up nextDrills: Handshakes

    Sign in to save progress

    Practice this lessonReport an error

    See also

    • Valid-Only Streams
    • Wait States and Stretching
    • The Valid/Ready Handshake