EmbeddedRelated.com

AXI

Category: Buses | Also known as: advanced extensible interface, AXI4

AXI (Advanced eXtensible Interface) is a high-performance, point-to-point on-chip bus protocol defined by ARM as part of the AMBA specification family. It separates address, data, and response phases into independent channels, allowing out-of-order transactions and high-throughput pipelining between masters (such as a CPU or DMA controller) and slaves (such as memory controllers or peripherals).

In practice

AXI appears most often in application-class SoCs and FPGAs -- particularly Xilinx/AMD (Zynq, Versal) and Intel/Altera (Cyclone V, Arria) parts -- where the CPU subsystem connects to peripherals and memory through an interconnect fabric. On Xilinx Zynq devices, the ARM Cortex-A9 hard cores expose AXI master ports that connect to FPGA logic via AXI Interconnect IP blocks, making AXI the standard interface for custom accelerators. In simpler Cortex-M-based SoCs such as STM32H7 and LPC55xx parts, AXI is used internally for the high-bandwidth path to flash and SRAM, while peripheral buses use the lighter-weight APB or AHB protocols.

AXI4 defines three variants with different trade-offs. AXI4 (full) supports burst lengths up to 256 beats and is used for high-bandwidth memory-mapped transactions. AXI4-Lite strips out bursts and is intended for low-throughput control-register access; it is generally the most common variant when writing custom FPGA IP because it has a minimal signal count and is easy to implement correctly. AXI4-Stream removes the address channel entirely and is used for unidirectional data flows such as audio or video pipelines.

A common pitfall when integrating AXI in an FPGA design is mishandling the handshake: both VALID and READY must be asserted simultaneously to complete a transfer, and a master must never make VALID conditional on READY (doing so can create a deadlock if the slave waits for VALID before asserting READY). Read and write channels are also fully independent, so a master can issue read and write transactions simultaneously; failing to account for the returned read data before issuing further transactions can overflow the slave's RDATA FIFO.

AXI's five-channel structure (AW, W, B, AR, R) allows out-of-order transaction completion using transaction IDs (the ARID/AWID/RID/BID signals). In practice, many soft IP cores and simple bus fabrics serialize transactions internally even though the protocol permits reordering; out-of-order completion is supported by some interconnects and masters but is far from universal. Developers profiling bandwidth bottlenecks in Zynq or similar SoCs should check whether the interconnect IP is configured with sufficient outstanding-transaction depth, as the default settings are often conservative.

Frequently asked

What is the difference between AXI4, AXI4-Lite, and AXI4-Stream?
AXI4 (full) supports burst transactions up to 256 beats and is used for high-throughput memory-mapped access. AXI4-Lite is a subset that removes bursts and is intended for low-bandwidth control registers; it has fewer signals and is much simpler to implement. AXI4-Stream removes the address channel entirely and is used for directed data flows -- such as a DMA feeding a DSP pipeline -- where a destination address is not needed.
Is AXI only relevant if I am working with FPGAs?
No. AXI is also used as the internal bus fabric inside many application-processor SoCs. On STM32H7 parts, for example, an AXI matrix connects the Cortex-M7 core to Flash and SRAM at high bandwidth, while lower-speed peripherals sit behind AHB/APB bridges. You may never write AXI RTL, but understanding the bus topology explains why certain memory regions have higher latency or bandwidth limits than others.
Why does AXI have separate read and write channels rather than a shared data bus?
Separating the channels allows simultaneous read and write transactions without arbitration stalls. A master can issue a write on the AW/W channels at the same time it is receiving read data on the R channel. This increases achievable throughput in pipelined designs at the cost of a higher signal count compared to simpler buses like APB.
What is a common AXI4-Lite implementation mistake in FPGA designs?
Making VALID conditional on READY. The AXI specification forbids a master from waiting to assert AWVALID or WVALID until it sees AWREADY or WREADY from the slave. If a slave also waits for VALID before asserting READY, the result is a permanent deadlock. Always drive VALID based on your own internal state, independently of what the slave is signaling.
How does AXI relate to AMBA, AHB, and APB?
AMBA (Advanced Microcontroller Bus Architecture) is ARM's umbrella specification covering several bus protocols. APB (Advanced Peripheral Bus) is a simple, low-speed, non-pipelined bus used for slow control registers. AHB (Advanced High-performance Bus) is a faster pipelined bus widely used in Cortex-M SoCs. AXI is the highest-performance member of the family within the classic AMBA comparison set, with multiple independent channels, burst support, and out-of-order transaction capability. In a typical SoC, AXI connects the CPU and DMA to memory, while an AXI-to-APB or AXI-to-AHB bridge provides access to lower-speed peripherals.

Differentiators vs similar concepts

AXI is often confused with AHB (Advanced High-performance Bus) and APB (Advanced Peripheral Bus), the other two major AMBA bus protocols. APB is a simple, non-pipelined bus with a single address-then-data cycle; it is used for slow peripherals like UARTs and timers. AHB is faster and pipelined but uses a shared address/data structure without AXI-style independent read/write channel pairs; it is the dominant bus in Cortex-M0/M0+/M3/M4 SoCs (for example, the STM32F4 AHB1/AHB2 fabric). AXI adds fully independent read and write channel pairs, burst lengths up to 256 beats, out-of-order transaction IDs, and separate write-response signaling, making it substantially more complex but capable of much higher sustained throughput. AXI4-Lite is often mistaken for a direct AHB equivalent; the key difference is that AXI4-Lite still uses the five-channel handshake structure (just with burst length fixed to 1), whereas AHB uses a simpler address-phase / data-phase model.