Arbitration & SPLIT Transfers

How AHB (h2) handles multiple masters via an Arbiter, and how SPLIT responses improve bus efficiency for slow slaves.

AHB Arbitration (HBUSREQ & HGRANT)

In multi-master AHB systems, an Arbiter is required to decide which master gets to drive the address bus.

  • HBUSREQx: Master 'x' asserts this to request the bus.
  • HGRANTx: Arbiter asserts this to grant the bus to Master 'x'.
  • HMASTER: Arbiter indicates the ID of the current owner to the slaves and decoder.
  • HLOCKx: Indicates the master requires an atomic sequence (cannot be interrupted).

The arbitration protocol ensures no two masters drive the bus simultaneously. Grants can be changed at the end of every burst (or even single transfer if not locked).

SPLIT vs RETRY Responses

When a slave cannot provide data immediately, it has two advanced response options (besides inserting wait states).

HRESP = RETRY

The slave tells the Master: "I'm busy, stop trying and request the bus again later." The Arbiter will likely give the bus to a lower priority master, but the original master keeps re-requesting.

HRESP = SPLIT

The slave tells the Arbiter: "I'm busy. Mask this master request so it doesn't clutter the arbitration."

When the slave is finally ready, it asserts HSPLITx (signals the arbiter to un-mask the master). The Arbiter then restores the master's priority.

Advantage: SPLIT is more efficient than RETRY because it prevents the bus from being clogged by a master constantly re-polling a slow slave.

Note on AHB5 / AHB-Lite

Modern AHB-Lite (used in Cortex-M systems) supports only a Single Master. Therefore, it has no Arbitration signals (HBUSREQ, HGRANT) and no SPLIT/RETRY responses (only OKAY and ERROR). The details above apply to the full multi-master AMBA 2.0 AHB spec.