Skip to content

AMBA AXI · Module 7

FIXED Bursts

The AXI FIXED burst (AxBURST=00) — every beat targets the same address, why that's exactly what a peripheral FIFO or register needs, how it contrasts with INCR, and its constraints.

The first of AXI's three burst types is the simplest in its addressing and the most special-purpose: the FIXED burst (AxBURST = 2'b00), where every beat targets the same address. The address does not advance from beat to beat. That sounds useless for memory — and it is — but it's precisely what you want when the target is a single hardware location that absorbs or produces a stream of data: a peripheral FIFO or a repeatedly-accessed register. This chapter covers what FIXED does, the use case that justifies it, how it contrasts with INCR, and its constraints.

1. What a FIXED Burst Is

In a FIXED burst the same address is used for every beat of the burst. The manager issues one address (AxADDR) and AxBURST = 2'b00; the subordinate then accepts/produces AxLEN+1 beats, all to that one address. Nothing about the addressing changes between beats — beat 0, beat 1, … beat AxLEN all hit AxADDR.

Everything else behaves as usual: AxSIZE still sets the bytes per beat, the byte lanes used are those the address and size select (the same lanes each beat, since the address is constant), WSTRB is still per beat, and LAST still marks the final beat. Only the address progression is different — and "no progression" is the whole definition.

A FIXED burst: address A is reused for beat 0, beat 1, beat 2, and the final beat — the address never increments.Address AAxBURST=00 FIXEDBeat 0 → Asame addressBeat 1 → Asame addressBeat 2 → Asame addressBeat AxLEN → Asame address (LAST)12
Figure 1 — a FIXED burst (AxBURST=00). One address transaction names a single address A; every one of the AxLEN+1 beats reads or writes that same address A — no increment. Contrast this with INCR, where each beat advances. FIXED is for a single fixed-location target, not a memory range.

2. A FIXED Write on the Wire

Here a 4-beat FIXED write pushes four words into a FIFO at address 0x4000 — one address transaction, four data beats, all to the same location:

fixed-burst — 4-beat FIXED write to a FIFO at 0x4000

6 cycles
Address 0x4000 issued once with AWBURST FIXED, then four write-data beats D0 to D3 all target 0x4000, WLAST on the fourth.4 beats, all → 0x4000AWBURST=FIXED, addr 0x4000AWBURST=FIXED, addr 0x…WLAST — 4th push to same FIFOWLAST — 4th push to sa…aclkawaddr400040004000400040004000awburst00 FIXED00 FIXED00 FIXED00 FIXED00 FIXED00 FIXEDwvalidwdataXD0D1D2D3D3wlastt0t1t2t3t4t5
Figure 2 — fixed-burst: a 4-beat FIXED write (AxLEN=3, AxBURST=00) to a FIFO at 0x4000. The address is issued once with AWBURST=FIXED; the four W beats (D0–D3) all write 0x4000, with WLAST on the last. The data streams beat by beat exactly like any burst — only the address stays put.

3. The Use Case — FIFOs and Peripheral Ports

FIXED exists for targets that are a single location, not a range of memory. The canonical case is a peripheral FIFO: a hardware queue exposes one data port at one address; pushing N words means writing that one address N times, and draining N words means reading it N times. A FIXED burst expresses exactly that — "do AxLEN+1 accesses to this one port" — in a single transaction, so a DMA engine can stream to/from a peripheral's FIFO without issuing a separate address for every word.

Other fits: any memory-mapped register or device port where repeated access to the same address is the intent (e.g., draining a status FIFO, feeding a serializer's data register). The defining test is: does the data belong at one fixed location, or spread across addresses? One location → FIXED; a range → INCR.

A DMA engine issues a FIXED burst to a peripheral FIFO's single data port; every beat pushes a word into the FIFO at one address.DMA engineFIXED burst, N beatsFIFO data portone address (0x4000)FIFO queueN words pushed in order12
Figure 3 — the FIXED use case. A DMA engine streams a burst into a peripheral's single FIFO port: one address (the FIFO data register), many beats, each pushing one word into the queue. INCR would wrongly scatter the words across ascending addresses; FIXED keeps every beat aimed at the one port the FIFO presents.

4. FIXED vs INCR

The contrast with INCR (Chapter 7.3) is the clearest way to fix FIXED in mind:

FIXED (00)INCR (01)
Address per beatSame address every beatIncrements by 2^AxSIZE each beat
TargetOne fixed location (FIFO/register)A contiguous memory range
Max length16 beats256 beats (AXI4) / 16 (AXI3)
Typical usePeripheral FIFO/port streamingMemory, cache lines, DMA to RAM

Using the wrong one is a real bug: an INCR burst aimed at a FIFO scatters the words across 0x4000, 0x4004, 0x4008, … (hitting whatever those addresses decode to) instead of pushing them all into the one FIFO port; a FIXED burst aimed at memory rewrites the same word AxLEN+1 times, leaving only the last value and corrupting nothing-but-one location.

FIXED keeps address A for all beats; INCR advances the address by the transfer size each beat.FIXED b0Ab1Ab2Ab3AINCR b0Ab1A+sb2A+2sb3A+3s12
Figure 4 — FIXED vs INCR addressing. FIXED holds the address at A for every beat (FIFO/register). INCR advances A → A+2^AxSIZE → A+2·2^AxSIZE … (memory range). Choosing the wrong type either scatters FIFO writes across addresses (INCR on a port) or collapses a memory write onto one location (FIXED on memory).

5. Constraints

FIXED has a few hard rules:

  • Length ≤ 16 beats. FIXED is capped at 16 beats in both AXI3 and AXI4 (it does not get AXI4's 256-beat extension — that's INCR only).
  • AxSIZE and lanes are constant. Since the address doesn't move, every beat uses the same byte lanes (those the address/size select); a narrow FIXED burst hits the same lanes each beat.
  • WSTRB still per beat. Each write beat carries its own strobes, so successive pushes can write different byte patterns to the same port if needed.
  • The 4 KB boundary is trivially satisfied. Because the address never advances, a FIXED burst occupies a single address and cannot cross a 4 KB boundary (Chapter 7.6) — the rule still applies but is automatically met.

6. Common Misconceptions

7. Debugging Insight

8. Verification Insight

9. Interview Questions

10. Summary

The FIXED burst (AxBURST = 2'b00) is the same-address burst: one address transaction, AxLEN+1 beats, every beat to the one address — no increment. That makes it the right (and necessary) type for a single-location target — a peripheral FIFO or a repeatedly-accessed register — where a DMA streams many words into one hardware port. Everything else is normal: AxSIZE bytes per beat (same lanes each beat), per-beat WSTRB, LAST on the final beat. It's capped at 16 beats (no AXI4 256 extension), and the 4 KB rule is automatically satisfied since the address never moves.

The essential discipline is matching the burst type to the target's nature: single port/FIFO/register → FIXED; contiguous memory range → INCR. Get it backwards and data either scatters across addresses (INCR on a port) or collapses onto one location (FIXED on memory) — and in verification, model a FIXED-to-FIFO target as an ordered queue, not a flat memory cell, or you'll miss dropped/reordered beats. Next: INCR — the incrementing workhorse that handles essentially all memory traffic.

11. What Comes Next

You've got the first burst type; next, the one you'll see most:

  • 7.3 — INCR Bursts (coming next) — the incrementing burst, the workhorse for all memory access, and where the 256-beat length and 4 KB rule come into play.
  • 7.4 — WRAP Bursts (coming soon) — the wrapping burst for cache-line fills.

Previous: 7.1 — Burst Length, Size & Beats. Related: 6.2 — AxBURST for the burst-type selector. For the broader protocol catalog, see the AMBA family overview doc.