Tutorials

Protocols

Learn More

Bursts allow a Manager to perform multiple related transfers efficiently. A burst can be a single transfer, a fixed-length sequence of 4, 8, or 16 beats, or an undefined-length incrementing sequence. HBURST[2:0] describes which form is being used and how the address changes from beat to beat.

AHB supports two address styles:

Burst styleAddress behavior
IncrementingEach beat address increments by the transfer size indicated by HSIZE.
WrappingEach beat address increments by the transfer size, but wraps back to the start of an aligned wrap region.

The first valid beat of a burst is NONSEQ. Later valid beats are SEQ, except when the Manager inserts BUSY cycles between beats.

Burst encoding

HBURST[2:0]TypeDescription
000SINGLESingle transfer burst
001INCRIncrementing burst of undefined length
010WRAP44-beat wrapping burst
011INCR44-beat incrementing burst
100WRAP88-beat wrapping burst
101INCR88-beat incrementing burst
110WRAP1616-beat wrapping burst
111INCR1616-beat incrementing burst

The burst size is the number of beats, not the number of bytes. Total data moved by a fixed-length burst is:

number_of_beats * bytes_per_beat_from_HSIZE

For example, an INCR4 burst with HSIZE=010 is four word transfers, so it moves 4 * 4 = 16 bytes. An INCR8 burst with HSIZE=001 is eight halfword transfers, so it moves 8 * 2 = 16 bytes.

Managers can perform a single transfer in either of these ways:

MethodMeaning
HBURST=SINGLEExplicit single-transfer burst.
HBURST=INCR with one data beatUndefined-length burst that happens to contain only one beat.

Address generation

For an incrementing burst, each beat address increases by the transfer size. For a 32-bit word INCR4 starting at 0x38, the addresses are:

BeatAddress
00x38
10x3C
20x40
30x44

For a wrapping burst, the wrap boundary is:

number_of_beats * bytes_per_beat_from_HSIZE

For a WRAP4 word burst, the wrap region is 4 * 4 = 16 bytes. If the sequence reaches the end of that 16-byte region, the next beat wraps back to the start of the same region. For example, the specification’s WRAP4 word example uses:

BeatAddress
00x38
10x3C
20x30
30x34

1KB boundary rule

Managers must not start an incrementing burst that crosses a 1KB address boundary. In practice, burst generation should keep the entire burst inside one 1KB decode region. This keeps address decoding simple because a burst cannot move from one Subordinate address region into another.

All transfers in a burst must also be aligned to the address boundary equal to the transfer size. 

For example, word transfers require HADDR[1:0]=00, and 

halfword transfers require HADDR[0]=0.

When building a Manager, include checks that prevent illegal boundary-crossing bursts. When building an interconnect or Subordinate, include verification coverage for boundary-near bursts.

BUSY and burst termination

After a burst has started, the Manager can use BUSY transfers if it needs more time before issuing the next real beat. BUSY does not complete a data beat; it only delays burst progress.

CaseRule
Undefined-length INCR burstThe Manager can insert BUSY transfers and then terminate the burst by moving to IDLE or starting a new NONSEQ transfer.
Fixed-length INCR4INCR8INCR16The burst must not end with BUSY; it must terminate with a SEQ transfer.
Fixed-length WRAP4WRAP8WRAP16The burst must not end with BUSY; it must terminate with a SEQ transfer.
SINGLE burstA Manager must not perform BUSY immediately after a SINGLE; the next transfer must be IDLE or NONSEQ.

Only undefined-length INCR bursts can effectively use BUSY as the last cycle before terminating the burst.

Early burst termination

Bursts can end early because of an ERROR response or because a multi-layer interconnect terminates access from one Manager so another Manager can use the Subordinate.

Termination sourceRequired behavior
Subordinate ERROR responseThe Manager can cancel the remaining transfers or continue the remaining transfers.
Manager cancels after ERRORThe Manager must drive HTRANS=IDLE during the two-cycle ERROR response.
Incomplete burst after ERRORThe Manager does not have to rebuild or complete the remaining beats later.
Multi-layer interconnect terminationThe interconnect can terminate a burst so another Manager can access the Subordinate. The Subordinate must handle the incomplete burst and respond correctly to the next Manager.

The important verification idea is that a Subordinate must respond correctly to the transfer type it sees. It must not assume every fixed-length burst will always complete all beats.

Burst examples

The examples below match the AMBA AHB specification waveform set. You can replace these image files with the corresponding specification diagrams while keeping the tutorial text unchanged.

ExampleWhat to notice
WRAP4 word writeFour beats wrap within a 16-byte region. In the specification example, 0x3C is followed by 0x30.
INCR4 word readFour beats increment normally. In the specification example, 0x3C is followed by 0x40.
WRAP8 word readEight beats wrap within a 32-byte region. In the specification example, 0x3C is followed by 0x20.
INCR8 halfword writeEight beats increment by two bytes because HSIZE is halfword.
Undefined-length INCR burstsOne burst can end after two halfword writes, and a later burst can start as a separate word read sequence.

4 beat wrapping burst

4-beat-wrapping-burst

4 beat incrementing burst

4-beat-incrementing-burst

8 beat wrapping burst

8-beat-wrapping-burst

8 beat incrementing burst

8-beat-incrementing-burst

Undefined length bursts

undefined_length_bursts
  • The first burst is a write consisting of two halfword transfers starting at address 0x20. These transfer addresses increment by two.
  • The second burst is a read consisting of three word transfers starting at address 0x5C. These transfer addresses increment by four.