FPGA

AXI interconnect in FPGA

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

    In short: An AXI interconnect in an FPGA is the switched fabric that routes read/write transactions between one or more AXI masters and many memory-mapped slaves, using address decoding and a crossbar so independent masters can reach different slaves at the same time without stalling each other.

    If you have ever dropped a Zynq processing system, a DMA engine, and a handful of BRAM controllers into a Vivado block design and connected them with that friendly green AXI Interconnect IP, you have used one of the most important pieces of on-chip plumbing in modern FPGA design. Understanding what actually happens inside that block is the difference between a design that meets timing at 250 MHz and one that silently drops throughput to a crawl.

    What AXI Is and Why FPGAs Live on It

    AXI (Advanced eXtensible Interface), part of ARM's AMBA specification, is a point-to-point, memory-mapped protocol. A single AXI4 connection is not one bus but five independent channels: write address (AW), write data (W), write response (B), read address (AR), and read data (R). Each channel uses a simple VALID/READY handshake. Because the channels are decoupled, a master can issue a read address while a previous write is still draining, which is where AXI gets its pipelined throughput.

    In an FPGA this matters because every channel is just a bundle of wires and registers synthesized into fabric. There is no shared tri-state backplane as in old microprocessor buses, so "the bus" is really a mesh of dedicated paths. The interconnect IP is what turns many such paths into a coherent address space.

    AXI crossbar: 2 masters, 3 slaves CPU (M0) DMA (M1) Crossbar + Addr Decode arbiter DDR (S0) BRAM (S1) GPIO (S2) M0 to DDR and M1 to BRAM run in parallel (different slave ports). CourseTron · coursetron.com
    Two masters reach three slaves through a crossbar. M0→DDR and M1→BRAM can proceed concurrently because they target different slave ports.

    Address Decoding: The Interconnect's First Job

    When a master drives an address onto AW or AR, the interconnect must decide which slave owns that address. This is address decoding. In Vivado's Address Editor you assign each slave a base address and a range — say DDR at 0x0000_0000 (size 512 MB), a BRAM controller at 0xC000_0000 (8 KB), and an AXI GPIO at 0x4120_0000 (64 KB). The tool synthesizes comparators that examine the upper address bits and assert a one-hot select to the matching slave port.

    Two rules bite beginners constantly. First, ranges must be a power of two and naturally aligned, because the decoder only compares a prefix of the bits. A 48 KB window is illegal; round up to 64 KB. Second, overlapping ranges are a design error — the decoder's behaviour becomes undefined, and Vivado will flag it, but only if you validate the design.

    A transaction to an address that no slave claims is routed to the interconnect's built-in DECERR responder, which returns a SLVERR/DECERR on the B or R channel. A master that ignores BRESP/RRESP will hang forever waiting for data that is never coming — a classic cause of "my design just freezes."

    Address Editor example Slave Base address Range DDR0x0000_0000512 MB AXI GPIO0x4120_000064 KB BRAM controller0xC000_00008 KB Ranges are power-of-two and naturally aligned; overlaps are errors. CourseTron · coursetron.com
    Example address map from the text: each slave gets an aligned base address and power-of-two range.

    The Crossbar and Arbitration

    Once decoding picks a target, the crossbar physically connects the chosen master channel to the chosen slave channel. A full N×M crossbar lets any of N masters talk to any of M slaves. Crucially, if two masters target different slaves, both transactions run in parallel — this is the concurrency that makes AXI fabrics fast. Conflict only arises when two masters want the same slave; then an arbiter (typically round-robin, or QoS-weighted in AXI4) grants access one at a time.

    FPGA crossbars are not free. Each extra master or slave port adds multiplexers, registers, and routing. On a Xilinx 7-series or UltraScale device, a wide crossbar with several 256-bit ports can easily consume thousands of LUTs and, more painfully, become the critical path. The choice between block RAM and distributed RAM for internal buffering directly affects whether these FIFOs fit and how deep they can be.

    TopologyConcurrencyResource costTypical use
    Shared-Access (SASD)One xfer at a timeLowestLow-speed config/control
    Shared-Address, Multi-DataParallel dataMediumBalanced SoC fabric
    Full CrossbarN×M parallelHighestHigh-bandwidth DMA/DDR

    Watch the Signal Move: A Write Handshake

    AXI W channel: one data beat WVALID & WREADY = data beat Master Slave Handshake completes only when both VALID and READY are high. Master drives VALID; slave drives READY. CourseTron · coursetron.com
    A single write data beat traverses the W channel. The slave absorbs it only on the cycle where WVALID and WREADY coincide.

    AXI4 vs AXI4-Lite vs AXI-Stream

    Not every port needs the full protocol. AXI4-Lite drops bursts (one beat per transaction, no AWLEN) and is ideal for control/status registers — it keeps decode logic tiny. AXI4 (full) supports bursts up to 256 beats, giving high throughput to DDR. AXI4-Stream has no addresses at all; it is a pure dataflow channel for video, ADC samples, or DSP pipelines, and does not pass through a memory-mapped interconnect. A common mistake is connecting a Lite master to a slave expecting bursts; the SmartConnect IP will insert a protocol converter, but it costs latency.

    On Xilinx devices, the modern AXI SmartConnect supersedes the legacy AXI Interconnect: it auto-inserts width converters, clock-domain crossings, and register slices, and it is optimized for the specific masters/slaves it sees, often saving LUTs versus the generic block.

    Building It in a Block Design

    In practice you rarely hand-wire AXI. In Vivado IP Integrator you instantiate the interconnect, run Run Connection Automation, and then open the Address Editor to assign ranges. The tool infers data widths, clock domains, and reset polarity from the connected IP. Always run Validate Design before synthesis — it catches overlapping addresses, unconnected clocks, and width mismatches that would otherwise cost you a half-day on the bench. For teams building custom accelerators, firms such as Avecas VLSI design services wrap these fabrics around proven DMA and DDR controllers so the interconnect topology is right the first time.

    If your throughput is still disappointing, profile the arbiter. Give your DMA engine a higher AXI QoS value than the CPU, add outstanding-transaction depth, and insert register slices to break long combinational paths across the die. These three knobs recover most lost bandwidth. For a deeper look at buffering the data that flows through the fabric, see our note on AXI DMA and scatter-gather descriptors.

    Want to design AXI fabrics that actually meet timing? CourseTron's FPGA SoC track walks you through Zynq block design, DMA, and DDR bring-up on real hardware. Explore the CourseTron course catalog →

    Frequently Asked Questions

    Can two AXI masters write to the same slave simultaneously?

    No. The crossbar connects one master to a given slave port at a time; the arbiter serializes contending masters. They can proceed in parallel only when targeting different slaves.

    Why does my AXI design hang with no error?

    Most often the master issued a transaction to an unmapped address and the interconnect returned a DECERR, but the master logic never checks BRESP/RRESP. Always inspect the response channels, or add an ILA to watch them.

    Should I use AXI Interconnect or AXI SmartConnect?

    Prefer SmartConnect on UltraScale and 7-series designs. It self-configures converters and register slices and generally uses fewer resources. Use the legacy Interconnect only when you need its specific shared-bus modes.

    Does AXI-Stream go through the interconnect?

    No. AXI-Stream is non-memory-mapped dataflow. You connect it point-to-point or through an AXI4-Stream Interconnect/Switch, not the memory-mapped crossbar that decodes addresses.

    Advertisement