APB Series — APB-01: Introduction to AMBA APB Protocol — VLSI Trainers
APB Series · APB-01

Introduction to AMBA APB

What the Advanced Peripheral Bus is, why it exists in every SoC, how it fits into the AMBA bus hierarchy, the evolution from APB2 through APB5, and the Requester–Completer model that defines every transfer.

📋 What is APB?

The Advanced Peripheral Bus (APB) is the simplest member of the ARM AMBA (Advanced Microcontroller Bus Architecture) family. It is a low-bandwidth, low-cost interface designed specifically for accessing the programmable control registers of peripheral devices — things like UARTs, timers, GPIO controllers, interrupt controllers, and SPI/I2C controllers.

APB is not designed for high-throughput data movement. It has no support for bursts, no pipelining, no out-of-order transactions, and no concurrent read/write capability. Every transfer takes at minimum two clock cycles. This simplicity is intentional — it makes peripherals cheap to implement, easy to verify, and power-efficient.

Every APB transfer is initiated by an APB bridge (the Requester) and answered by a peripheral (the Completer). The bridge sits between the high-performance system bus (AXI or AHB) and the collection of slow peripherals, translating fast complex transactions into simple APB register accesses.

APB is optimised for peripheral control registers, not data movement. If you need to transfer a block of data to or from a peripheral, use DMA — the DMA controller moves the data over AXI/AHB at full bandwidth, and the peripheral is configured for the transfer over APB.

📋 Why APB — Design Philosophy

In any SoC, the system bus (AXI or AHB) is wide, fast, and expensive to implement. Connecting every small peripheral directly to AXI would mean each peripheral needs a full AXI subordinate interface — complex handshaking, burst support, multiple outstanding transactions, and wide data buses. This is overkill for a UART that just needs a few 32-bit registers written once during initialisation.

APB solves this through the principle of appropriate interface complexity:

APB Design Philosophy — Simplicity at Every Level Minimal Power Signals stable between transfers No wasted toggle activity Clock gating compatible No continuous handshake Low Complexity Two-phase: Setup + Access No bursts or pipelining No out-of-order transfers Single outstanding request Small Gate Count Hundreds of gates for bus IF vs thousands for AXI Easy to implement in RTL Fast timing closure Use Case Control regs Status reads UART / GPIO Timers / SPI IRQ controllers
Figure 1 — APB design philosophy. The three pillars (minimal power, low complexity, small gate count) make APB the ideal choice for peripheral control register interfaces. The protocol achieves these goals by sacrificing features that peripherals do not need — bursts, pipelining, and concurrency.

📋 APB in the AMBA Hierarchy

AMBA defines a family of bus protocols for different bandwidth and complexity requirements. APB sits at the bottom of this hierarchy — the lowest bandwidth, lowest complexity interface — serving as the final hop from the high-performance interconnect to individual peripheral registers.

AMBA Bus Hierarchy — APB at the Peripheral Edge CPU Cluster AXI System Interconnect — High Bandwidth · Pipelined · Burst AHB — Medium Bandwidth APB Bridge (Requester) UART Timer GPIO
Figure 2 — AMBA bus hierarchy. The CPU cluster connects to the high-bandwidth AXI system interconnect. An APB bridge sits on the AXI bus and translates AXI transactions into simple APB register accesses for attached peripherals. The bridge decodes the address to select the correct peripheral and drives the APB signals.
ProtocolBandwidthFeaturesTypical use
AXI5Very highPipelined, bursts, out-of-order, multiple outstanding, separate read/write channelsCPU–DDR, GPU–memory, DMA engines
AHB5HighBurst capable, pipelined address, single outstanding per managerCPU instruction fetch, on-chip SRAM, DMA intermediate
APB5LowSimple two-phase, no pipeline, no burst, single cycle address/dataPeripheral control registers — UART, GPIO, timers, SPI, IRQ

📋 The APB Bridge

The APB bridge (also called the Requester) is the central component of every APB system. It translates transactions from the system bus (AXI or AHB) into APB transfers targeting the correct peripheral. Every APB transfer must be initiated by the bridge — peripherals never initiate transactions.

The bridge performs several functions:

One bridge, many peripherals. A single APB bridge typically serves 8–32 peripherals simultaneously. It asserts exactly one PSELx at a time, so all peripheral bus interfaces share the same PADDR, PWDATA, PRDATA, PWRITE, PENABLE, and PREADY signals. Each peripheral only needs to decode its own address range internally and respond to its own PSELx.

📋 Requester and Completer Model

The APB5 specification standardised the terminology used to describe the two sides of every APB transfer. Earlier versions of the specification used the terms “master” and “slave” — these are deprecated in APB4/APB5 and replaced with:

Requester and Completer — The Two Sides of Every APB Transfer Requester (APB Bridge / Master) Initiates all APB transfers Drives: PADDR, PWRITE, PWDATA, PSELx, PENABLE, PPROT, PSTRB Reads: PRDATA, PREADY, PSLVERR from Completer Completer (APB Peripheral / Slave) Responds to transfers selected by its PSELx Drives: PRDATA (read), PREADY, PSLVERR Reads: PADDR, PWRITE, PWDATA, PENABLE, PPROT, PSTRB
Figure 3 — Requester and Completer. The APB bridge is always the Requester — it initiates every transfer. The peripheral is always the Completer — it responds to transfers addressed to it. The Completer uses PREADY to extend the transfer when it needs more time, and PSLVERR to signal an error.

📋 APB Versions — APB2 to APB5

The APB specification has evolved through five issues, each adding features for more complex SoC requirements. All versions are backward-compatible — an APB5 Requester can drive an APB2 Completer, though the new signals have no effect on the older peripheral.

VersionSpec IssueNew SignalsKey Addition
APB2Issue A/B (2003–2004)PCLK, PRESETn, PADDR, PSEL, PENABLE, PWRITE, PWDATA, PRDATAOriginal APB — fixed two-cycle transfers, no wait states, no error reporting
APB3Issue B (2004)PREADY, PSLVERRWait states via PREADY, error response via PSLVERR. Enables variable-latency peripherals.
APB4Issue C (2010)PPROT[2:0], PSTRBTransaction protection (secure/non-secure/privileged), sparse write strobe for byte-lane enables
APB5Issue D (2021)PWAKEUP, PAUSER, PWUSER, PRUSER, PBUSER, parity check signalsWake-up signalling for clock gating, user-defined sideband signals, interface parity protection for safety-critical applications
APB5 + RMEIssue E (2023)PNSERealm Management Extension — adds Root and Realm physical address spaces alongside Secure and Non-secure
Version detection is by signal presence, not a version register. There is no APB version register in any peripheral. You determine which APB version a peripheral implements by which signals it exposes on its port list. If PREADY is missing, it’s APB2. If PPROT is present, it’s at least APB4. If PWAKEUP is present, it’s APB5.

📋 Key Protocol Properties

The APB protocol has several fundamental properties that apply to every version:

Synchronous

All APB signals are sampled at the rising edge of PCLK. There are no asynchronous signals in the APB protocol (PWAKEUP must be glitch-free and synchronous to PCLK even though it is consumed in a different clock domain). This makes APB simple to implement and verify in synchronous digital design flows.

Non-pipelined

APB does not support pipelining. The address and control signals for the next transfer cannot be issued until the current transfer completes (PREADY asserted). This means APB cannot hide latency by overlapping address phases — every transfer adds its full latency to the total access time.

Minimum two cycles per transfer

Every APB transfer takes at least two clock cycles: one Setup cycle (PSEL=1, PENABLE=0) followed by at least one Access cycle (PSEL=1, PENABLE=1). If PREADY is deasserted during the Access phase, additional cycles are added. There is no minimum or maximum on the number of additional wait state cycles.

Single outstanding transfer

Only one APB transfer can be in progress at any time. The bridge must complete (or abandon) the current transfer before initiating a new one. This eliminates the need for transaction IDs or out-of-order completion logic in peripherals.

No concurrent read/write

The read data bus (PRDATA) and write data bus (PWDATA) are separate, but they cannot be used simultaneously because there is only one address bus and one direction signal (PWRITE). A read and a write cannot occur in the same clock cycle to the same or different peripherals.

These constraints make APB peripherals easy to implement. Because the protocol is non-pipelined and has a single outstanding transfer, a peripheral’s register file logic is simple: when PSELx and PENABLE and PREADY are all high, latch PWDATA into the addressed register (write) or drive PRDATA from the addressed register (read). No FIFOs, no transaction tracking, no ordering logic.

📋 Quick Reference

ItemValue / Rule
Full nameAdvanced Peripheral Bus — part of AMBA (Advanced Microcontroller Bus Architecture)
Designed forPeripheral control register access — UART, GPIO, timers, SPI/I2C, interrupt controllers
Minimum cycles per transfer2 (one Setup + one Access). More with PREADY wait states.
PipeliningNone — strictly non-pipelined
Burst supportNone
Outstanding transactions1 — no overlapping transfers allowed
Concurrent read/writeNot possible — single shared address/direction bus
ClockPCLK — all signals sampled on rising edge
ResetPRESETn — active-LOW, synchronous to PCLK
RequesterAPB bridge — initiates all transfers. Previously called “master”.
CompleterAPB peripheral — responds to transfers. Previously called “slave”.
APB2Basic: PCLK, PRESETn, PADDR, PSELx, PENABLE, PWRITE, PWDATA, PRDATA. Fixed 2-cycle transfers, no error reporting.
APB3 addsPREADY (wait states), PSLVERR (error response)
APB4 addsPPROT[2:0] (protection), PSTRB (write strobes)
APB5 addsPWAKEUP (clock gating), PAUSER/PWUSER/PRUSER/PBUSER (user signals), parity check signals
APB5 + RME addsPNSE (Realm Management Extension — Root/Realm address spaces)
Version detectionNo version register — inferred from which signals are present on the peripheral port
Spec documentARM IHI 0024E — AMBA APB Protocol Specification
Scroll to Top