| 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. |
Burst Transfers
Bursts allow the Master to transfer large blocks of data efficiently without renegotiating arbitration for every beat.
Burst Types
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
Base = 0x00 (0x00 to 0x1F is limits).
Beat 1: 0x1C.
Beat 2: 0x1C + 4 = 0x20.
0x20 is outside boundary. Wraps to 0x00.
Answer: 0x00.