Burst Transfers

Bursts allow the Master to transfer large blocks of data efficiently without renegotiating arbitration for every beat.

Burst Types

HBURST Type Behavior
000 SINGLE Single transfer.
001 INCR Incrementing, undefined length.
010/100/110 WRAP4/8/16 Wraps at boundary.
011/101/111 INCR4/8/16 Linear increment.

Wrapping Bursts (Critical)

Wrapping bursts are used for cache-line fills. The address wraps at the boundary defined by: Number_of_Beats * Size_of_Beat.

// Example: WRAP4, Size=4 bytes (32-bit)
// Boundary = 4 * 4 = 16 bytes.
// Start Address = 0x34 (Decimal 52)
// 0x30 is the 16-byte aligned base.

// Sequence:
// Beat 1: 0x34
// Beat 2: 0x38
// Beat 3: 0x3C  <-- Reached end of 16-byte block (0x30 to 0x3F)
// Beat 4: 0x30  <-- WRAPS back to start of block

The 1KB Boundary Rule

Rule: A burst must NOT cross a 1KB address boundary.

Why?

Slaves are typically mapped with 1KB separation (minimum). If a burst crosses 0x400 (1KB), it might drift from Slave A's memory space into Slave B's space. Since HSEL (Slave Select) doesn't change during a burst, the burst would continue writing to Slave A (at an invalid offset) or fail.

If a Master wants to cross 1KB, it must terminate the burst and start a new one.

Common Interview Questions

Q: Can an INCR burst be infinite?
No, because of the 1KB boundary rule. Even an "undefined length" INCR burst must stop before it crosses the 1KB boundary and restart.
Q: What is the address of the 2nd beat in a WRAP8 burst starting at 0x1C (Size 4)?
Size=4, Beats=8 -> Boundary = 32 bytes (0x20).
Base = 0x00 (0x00 to 0x1F is limits).
Beat 1: 0x1C.
Beat 2: 0x1C + 4 = 0x20.
0x20 is outside boundary. Wraps to 0x00.
Answer: 0x00.