Burst Transfers

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

Burst Types

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.

  • 0x34, 0x38, 0x3C: Address increments normally.
  • WRAP: After 0x3C, the next increment would be 0x40. But since the 16-byte boundary (0x30-0x3F) is crossed, it wraps to 0x30.
  • 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.