Why APB Still Matters in an AXI World
If AXI is so powerful, why do modern SoCs still contain APB? A working RTL architect's case for the low-power peripheral bus, the AXI-to-APB bridge, and matching each block to the traffic it carries.
Modern SoCs may contain hundreds of AXI interfaces, yet almost every one of them still contains an APB subsystem. Open the block diagram of any application processor, microcontroller, or FPGA SoC and you will find the same pattern: a wide, fast fabric carrying the heavy traffic, and off to one side a small, quiet bus wired to the timers, the UART, and the GPIO. That small bus is APB — the Advanced Peripheral Bus — and its survival in an age of ever-faster interconnect is not nostalgia. It is a deliberate engineering choice made by people who have taped out chips.
The "APB is obsolete" reflex
Every few years the industry falls in love with a faster bus, and APB gets written off as the boring one. The reasoning sounds sensible: AXI moves data in bursts, keeps many transactions outstanding, and sustains gigabytes per second, while APB plods through one two-phase transfer at a time with no pipelining and no bursts. If AXI is strictly more capable, why keep the weaker bus around at all?
The flaw in that reasoning is the word capable. AXI is more capable in exactly one dimension — throughput — and that capability is not free. It is paid for in gates, in wires, in switching power, and in verification effort. The question a good architect asks is never "which bus is more powerful?" It is "which bus is sufficient for this block?" For the overwhelming majority of blocks on a chip, the honest answer is: something far simpler than AXI.
Why APB still exists
APB's whole design philosophy is that most peripherals do not need bandwidth — they need cheap, predictable register access. Everything that makes it look primitive next to AXI is actually the feature:
- Tiny area. An APB slave is a handful of flops, a small address decoder, and a read mux — a few hundred gates. Multiply the saving over the dozens of peripheral blocks on a chip and it becomes real silicon.
- Low switching activity, low dynamic power. APB carries a few dozen signals and only toggles when a register is actually accessed — a few times per millisecond. A low-power peripheral bus that sits idle most of the time burns almost nothing, which matters enormously on battery-powered parts.
- Easy verification. A protocol with almost no corner cases is a protocol your verification team is not losing weeks to. There are no bursts to interleave, no outstanding transactions to reorder, no ordering rules to prove.
- Deterministic behavior. Every transfer is the same two phases with a simple ready handshake. That predictability makes timing closure relaxed and debug straightforward — there is no pipeline to reason about.
Those properties are exactly what you want for register access: writing a baud-rate divisor, setting a GPIO direction, arming a timer. None of it needs bandwidth; all of it needs to be small, cheap, and obviously correct.
Where APB appears in a real SoC
APB is the home of the control plane — the long tail of blocks that are configured occasionally and never stream data. In practice that means the UART, GPIO, timers, the watchdog, the interrupt controller, PWM outputs, and the control registers of I²C and SPI controllers. A single bridge fans one port of the fast fabric down to all of them.
The AXI-to-APB bridge
Because the fast fabric and the peripheral bus speak different protocols, a bridge joins them. An AXI-to-APB bridge is an AXI slave on one face and an APB master on the other: it accepts a transaction from the fabric, drives the corresponding two-phase APB access to the addressed peripheral, and returns the response — mapping an APB error back into an AXI error along the way. Bridges exist so that the expensive interface is built once, at the boundary, instead of dozens of times inside every peripheral. The CPU still reaches every register; it simply does so through one small translator rather than by giving each timer its own AXI port.
Different optimization goals, not competitors
This is the mental shift that separates people who memorized signal names from people who design systems: AXI and APB are not competing for the same job. AXI is optimized for throughput; APB is optimized for simplicity. They are answers to different questions.
The misconception: "why not put everything on AXI?"
If AXI reaches everything anyway, why not connect each peripheral directly to it and drop the bridge? Because you would pay AXI's full cost on every block that gains nothing from it. Each peripheral would carry five channels, ID tracking, and outstanding-transaction logic to service traffic that arrives a few times per millisecond. You would multiply gate area, inflate dynamic power, and — most painfully — expand the verification surface of every block from APB's handful of cases to AXI's interleaving, ordering, and back-pressure corner cases. The chip would be larger, hotter, harder to close timing on, and slower to verify, for no functional gain.
Simplicity also shows up directly in the RTL. A complete APB register slave is small enough to read at a glance:
// Minimal APB register slave: one 32-bit control register.
// No pipeline, no bursts, no FSM to reason about.
module apb_ctrl_reg (
input logic pclk, presetn,
input logic psel, penable, pwrite,
input logic [31:0] pwdata,
output logic [31:0] prdata,
output logic pready
);
logic [31:0] ctrl_q;
assign pready = 1'b1; // always ready — zero wait states
always_ff @(posedge pclk or negedge presetn)
if (!presetn) ctrl_q <= 32'h0;
else if (psel && penable && pwrite) ctrl_q <= pwdata; // write on access phase
assign prdata = ctrl_q; // combinational read
endmoduleThere is no state machine to draw, no ordering to prove, no outstanding queue to size. That is the entire point: the block is small, its behavior is obvious, and a reviewer can convince themselves it is correct in seconds. Do that across fifty peripherals and the savings in area, power, and verification time are enormous.
The takeaway
APB is the right choice whenever a block is accessed occasionally, moves no bulk data, and values a small footprint and easy verification over bandwidth — which describes nearly every peripheral on a chip. AXI earns its complexity on CPUs, DMA engines, GPUs, and memory controllers, where throughput and latency-hiding are worth the cost. A real SoC uses both, joined by a bridge, each matched to the traffic it carries.
APB is not the bus you brag about. It is the bus that quietly makes the rest of the chip buildable — and in a world full of AXI, that is exactly why it still matters. For the full picture of how the three AMBA buses divide the work, read AXI vs AHB vs APB — the complete AMBA bus comparison.