Skip to content

AMBA AXI · Module 5

The Read Address (AR) Channel

Every AR signal and how a read is launched — ARADDR, the burst shape (ARLEN/ARSIZE/ARBURST), ARID and RID pairing, and the AR handshake. AR is AW's read-side twin.

Module 5 walks the read path, and it opens where a read begins — the AR (read address) channel. The good news: AR is the read-side twin of AW. It carries the same kind of payload (address, burst shape, ID, attributes) and launches a read with one handshake exactly as AW launches a write. So if you know AW (Chapter 4.1), you already know most of AR. This chapter details the AR signals, highlights the one structural difference (a read's answer returns as data with an ID on R, not as a separate response), and watches the AR handshake. Burst-address math is Module 7; here it's the AR channel and how it launches a read.

1. AR Launches the Read — AW's Twin

AR is the manager saying "I want to read — here's where and what shape." Like AW, it is purely a request: it names the target and describes the transfer, and one AR handshake commits the manager to one read transaction. And like AW, AR carries no data — the data comes back on the R channel.

The symmetry is near-total. Every AW signal has an AR counterpart with the same meaning:

  • ARADDRAWADDR, ARLENAWLEN, ARSIZEAWSIZE, ARBURSTAWBURST
  • ARIDAWID, and the attributes ARLOCK/ARCACHE/ARPROT/ARQOS/ARREGION/ARUSER ↔ the AW* set
  • ARVALID/ARREADYAWVALID/AWREADY

So everything you learned about AW's geometry and handshake applies to AR unchanged. The differences are on the return side: a write's answer is a one-beat B response, while a read's answer is the data itself, returned on R with a matching RID — there is no separate read "response channel" (4.3). We focus here on what's the same (because it's most of it) and flag what's different.

2. What AR Carries

AR's signals group into the same four roles as AW, moved together by the ARVALID/ARREADY handshake.

The AR channel groups its signals into address (ARADDR), shape (ARLEN, ARSIZE, ARBURST), identity (ARID, matching RID), and attributes (ARLOCK, ARCACHE, ARPROT, ARQOS, ARREGION, ARUSER), transferred by the ARVALID/ARREADY handshake.AddressARADDR — where the read startsShapeARLEN · ARSIZE · ARBURST — beats,width, patternIdentityARID — tags the read, matches RID onreturnAttributesARLOCK/CACHE/PROT/QOS/REGION/USER —hints12
Figure 1 — the AR channel's signals by role, mirroring AW. The address (ARADDR) says where to read; the shape (ARLEN/ARSIZE/ARBURST) says how many beats, how wide, and what address pattern; the identity (ARID) tags the read for outstanding/ordering and matches the RID on returned data; the attributes carry access hints. ARVALID/ARREADY transfer the bundle.

In code, AR is a read-request descriptor — identical in shape to AW's:

Azvya Education Pvt. Ltd.VLSI Mentor
Snippet
// Conceptual — the AR channel as a read-request descriptor (twin of aw_payload_t).
typedef struct packed {
  logic [ADDR_W-1:0] araddr;   // start address — where the read begins
  logic [7:0]        arlen;    // beats - 1  (AXI4: 0..255 → 1..256 beats)
  logic [2:0]        arsize;   // bytes per beat = 2**arsize
  logic [1:0]        arburst;  // FIXED / INCR / WRAP — how the address steps
  logic [ID_W-1:0]   arid;     // read id — matches RID on the returned data
  // + arlock, arcache, arprot, arqos, arregion, aruser (attributes)
} ar_payload_t;                // moved by one ARVALID/ARREADY handshake

3. The Address and the Shape

Exactly as on the write side, four signals describe what read is launched:

  • ARADDR — the start address (of the first beat for a burst).
  • ARLENbeats − 1 (so ARLEN=0 is one beat, ARLEN=7 is eight; up to 256-beat INCR in AXI4).
  • ARSIZEbytes per beat (2^ARSIZE), not exceeding the data-bus width.
  • ARBURSTFIXED / INCR / WRAP, how the address steps between beats.

These declare the geometry of the read, and they obligate the return: the subordinate must return exactly ARLEN+1 R beats of ARSIZE width, stepping per ARBURST, ending in RLAST. The AR shape is the contract the R channel fulfills — the read-side mirror of "AW declares the shape W delivers."

AW launches a write whose answer is a separate B response; AR launches a read whose answer is the data returned on R tagged with RID. AR and AW carry the same kind of payload.AW (write)address + shape + AWIDAnswer: B responseseparate one-beat BRESPAR (read)address + shape + ARIDAnswer: R datadata on R, tagged RID (no separateresponse)12
Figure 2 — AR and AW are twins; only the return side differs. Both carry address + shape + ID and launch a transaction with one handshake. A write's answer is a separate single B response; a read's answer is the data itself on R, tagged with RID. So AR has no 'B' — the R data is both the payload and the acknowledgement.

4. ARID — Read Ordering and RID Pairing

ARID is the read transaction's identifier, the twin of AWID — and the hook for outstanding, concurrent reads. Reads with the same ARID must return in order; reads with different ARIDs may return out of order. Each returned R beat carries an RID matching the ARID of the read it belongs to, so a manager with several reads in flight can sort the returning data back to the right transaction.

There's a read-specific nuance worth previewing: because read data is tagged per beat with RID, AXI3 even allowed read-data interleaving — beats from different-ID reads mixed on R — which AXI4 removed (the read analogue of the write-side WID story). The depth of that (read interleaving, ordering across IDs) is Modules 5.5/8; for launching a read, the point is that ARID scopes ordering and pairs with RID.

5. The AR Handshake

AR uses the universal handshake: the manager drives ARVALID with the AR bundle; the subordinate raises ARREADY; on the edge where both are high, the address is accepted and the read is launched.

AR handshake — launching an 8-beat read

7 cycles
The manager asserts ARVALID with ARADDR=0x40, ARLEN=7, ARSIZE=2, ARBURST=INCR; ARREADY is low for a cycle then rises; the address transfers when ARVALID and ARREADY are both high, launching the read.AR held stable while ARREADY lowARVALID + address/shape drivenARVALID + address/shap…ARVALID && ARREADY → read launchedARVALID && ARREADY → r…aclkarvalidarreadyaraddrX0x400x400x40XXXarlenX777XXXarburstXINCRINCRINCRXXXt0t1t2t3t4t5t6
Figure 3 — the AR handshake. The manager drives ARVALID with the address and burst description (ARADDR=0x40, an 8-beat INCR burst of 4-byte beats); ARREADY is low for a cycle, so the manager holds the AR payload stable; the address is accepted at the edge where ARVALID and ARREADY are both high, launching the read. One handshake launches the whole read.

All the handshake rules apply unchanged: ARVALID must not wait for ARREADY (cardinal rule), the AR payload stays stable while waiting (stability), and ARREADY may be asserted before or after ARVALID. Once the AR handshake completes, the manager's address phase is done; the data returns on R.

6. AR in the Read Lifecycle

AR is the opener of the two-channel read (Chapter 2.2): the AR handshake launches the transaction, and the R channel then returns the beats whose count and shape AR declared.

The manager sends AR (address and shape) to launch the read; the subordinate returns ARLEN+1 R data beats tagged with RID matching ARID, with RLAST on the last beat.AR opens the read; R returns the dataAR opens the read; R returns the dataManagerSubordinateAR — address + shape (ARLEN, ARSIZE, ARBURST, ARID)AR — address + shape(ARLEN, ARSIZE,…R — ARLEN+1 data beats, RID = ARID, RLAST on last (next chapter)R — ARLEN+1 databeats, RID = ARID,…
Figure 4 — AR as the opener. The AR handshake launches the read and declares its shape; the R channel then returns exactly ARLEN+1 beats of ARSIZE width stepping per ARBURST, each tagged RID (matching ARID), with RLAST on the last and a per-beat RRESP. AR commits the geometry; R carries it out — there is no third channel.

7. Common Misconceptions

8. Debugging Insight

9. Verification Insight

10. Interview Questions

11. Summary

The AR channel launches a read, and it is the read-side twin of AW: one ARVALID/ARREADY handshake commits the manager to one read and carries everything about it except the data — ARADDR (start), the shape (ARLEN beats−1, ARSIZE bytes/beat, ARBURST stepping), ARID (ordering + RID pairing), and the attribute set. Every AW signal has an AR counterpart with the same meaning, so knowing AW gives you AR for free. The one structural difference is the return: a read has no separate response channel — its answer is the data on R, tagged with RID (with RRESP per beat), versus a write's single B response.

Because AR fully declares the read's geometry, it's the anchor for debugging and verification: capture the AR handshake and you know to expect exactly ARLEN+1 R beats of ARSIZE width, each RID = ARID, ending in RLAST — and most read bugs are the R channel disagreeing with what AR declared. The handshake rules from Module 3 apply unchanged. Next, the data AR's shape described actually returns: the R channel, with RDATA, RRESP, RID, and RLAST.

12. What Comes Next

AR launched the read; now the data returns:

Previous: 4.6 — Write Transaction Waveforms. For the broader protocol catalog, see the AMBA family overview doc.