AMBA AXI · Module 2
The Five AXI Channels
Meet the five AXI channels — AW, W, B, AR, R — what each carries, which way it flows, and how they split into the write path and the read path.
Module 1 built the model: AXI is independent channels, one handshake, transactions. Module 2 makes it concrete, and it starts here by naming the channels. AXI has exactly five: three that carry a write — AW, W, B — and two that carry a read — AR, R. This is the first chapter where we say signal names out loud, because you now have the model to hang them on. We'll introduce each channel, what it carries, and which direction it flows; the handshake mechanics that move a beat on each channel are the next module, and the exhaustive signal-by-signal tables are Module 6. Here, the goal is to know the five channels cold — their names, payloads, and directions — and to see them split cleanly into a read path and a write path.
1. From "Independent Channels" to the Actual Five
In Module 1 we deliberately said "several independent channels" without counting them. The count is five, and the reason there are exactly five is the cleanest possible consequence of two facts:
- A transfer is either a read or a write — two directions of data.
- Each direction needs to carry an address (where), the data (what), and — for writes — a response (did it work).
Reads fold the response into the data return, so a read needs two channels and a write needs three. Two plus three is five. That is the whole architecture in one sentence, and everything below is detail on it.
2. Two Paths — Read and Write
Before the individual channels, fix the top-level split, because it is how engineers actually talk: AXI has a write path and a read path, and they are completely independent of each other. A read and a write can be in flight at the same time with no ordering between them (an idea Module 9 makes precise). So the five channels group as:
- Write path: AW (write address) → W (write data) → B (write response).
- Read path: AR (read address) → R (read data, which also carries the response).
Keeping the two paths separate in your head is the first habit: when you look at a waveform or a bug, you are almost always inside one path, and naming which one immediately halves the signals you care about.
3. The Write Path — AW, W, B
A write is three channels, because a write has to say where, deliver what, and hear back whether it worked — and AXI gives each its own independent path.
- AW — Write Address (manager → subordinate). Carries the write address and the transaction's attributes (how long the burst is, beat size, burst type, transaction ID, protection/cache hints). It launches a write but carries no data.
- W — Write Data (manager → subordinate). Carries the write data itself, the byte strobes (
WSTRB, which bytes in each beat are valid), andWLASTmarking the final beat of the burst. - B — Write Response (subordinate → manager). Carries the write response (
BRESP: OKAY / EXOKAY / SLVERR / DECERR) and the ID, telling the manager the write completed and whether it succeeded. A write is not done until B is returned and accepted.
The key structural point: AW and W are separate channels, so the address and the data are decoupled — the manager can send data before, with, or after the address. And B exists at all because a write needs an explicit acknowledgement; a read doesn't, because the returning data is the acknowledgement.
4. The Read Path — AR, R
A read is two channels, because a read asks where and gets back what — and the "did it work" rides along with the data instead of needing its own channel.
- AR — Read Address (manager → subordinate). Carries the read address and the same family of attributes as AW (length, size, burst, ID, hints). It launches a read.
- R — Read Data (subordinate → manager). Carries the read data, a per-beat response (
RRESP), andRLASTmarking the final beat. The data is the acknowledgement: when R arrives, the read has happened, andRRESPsays whether each beat was clean.
So the read path is the write path minus the W and B asymmetry: one channel out (the address), one channel back (the data, carrying its own response). That is why a read needs two channels and a write needs three.
5. What Each Channel Carries — At a Glance
The five channels, their direction, and the payload each carries. This is the reference to memorize; the precise bit-level fields are Module 6.
| Channel | Name | Direction | Carries |
|---|---|---|---|
| AW | Write Address | manager → subordinate | write address + attributes (length, size, burst, ID, hints) |
| W | Write Data | manager → subordinate | write data, byte strobes (WSTRB), WLAST |
| B | Write Response | subordinate → manager | write response (BRESP), ID |
| AR | Read Address | manager → subordinate | read address + attributes (length, size, burst, ID, hints) |
| R | Read Data | subordinate → manager | read data, per-beat response (RRESP), RLAST |
Notice the directions: AW, W, AR are manager → subordinate (the manager is driving address and write-data out); B and R are subordinate → manager (results coming back). Three out, two back.
Grounded as signal groups — payload only, with the handshake pair on each channel deferred to Module 3:
// Conceptual — the five AXI channels as signal groups (payload only).
// Each channel ALSO has a VALID/READY pair (Module 3); widths illustrative.
interface axi_if;
// ── Write path ───────────────────────────────────────────────
logic [31:0] awaddr; logic [7:0] awlen; // AW: where + burst length
logic [31:0] wdata; logic [3:0] wstrb; logic wlast; // W: data + byte enables
logic [1:0] bresp; // B: write response code
// ── Read path ────────────────────────────────────────────────
logic [31:0] araddr; logic [7:0] arlen; // AR: where + burst length
logic [31:0] rdata; logic [1:0] rresp; logic rlast; // R: data + per-beat resp
endinterfaceThat one interface is the whole chapter in code: five channels, the write path on top, the read path below, each carrying address, data, or response.
6. Why Five — The Design Rationale
It is worth pausing on why AXI spends five channels when a naive bus uses one shared set of wires. Each split buys a specific freedom:
- Splitting read from write lets a read and a write proceed at once with no contention — independent paths, independent progress.
- Splitting address from data (AW from W, AR from R) lets the manager pipeline: issue addresses ahead of data, keep many requests outstanding, and hide latency. A coupled address+data bus cannot do this.
- Giving the write its own response channel (B) lets the manager fire off writes and collect their acknowledgements later, independently — rather than stalling on each write until it is confirmed.
Five channels is not complexity for its own sake; it is the minimum number of independent paths needed to get concurrent reads and writes, address/data pipelining, and decoupled write completion — the exact capabilities Module 1 promised. Every channel you add is a thing that can progress on its own.
7. Each Channel Is the Same Handshake
One reassurance before the detail modules: although there are five channels, there is still only one handshake to learn. Every channel — AW, W, B, AR, R — moves its payload with the identical VALID/READY offer-and-accept contract from the mental-model chapter; only the payload differs. So "five channels" is five payloads sharing one transfer mechanism, not five protocols. The mechanics of that handshake — when a beat transfers, the rule that prevents deadlock, back-pressure — are the entire next module. Here, just hold: five channels, five payloads, one handshake.
8. Common Misconceptions
9. Debugging Insight
10. Verification Insight
11. Interview Questions
12. Summary
AXI has five channels, and you should know them cold. The write path is three: AW (write address + attributes), W (write data, byte strobes, WLAST), and B (write response, BRESP). The read path is two: AR (read address + attributes) and R (read data, per-beat RRESP, RLAST). AW, W, and AR flow manager→subordinate; B and R flow back. A write needs a separate response channel (B) because it must be acknowledged; a read needs only two because its returning data is the acknowledgement.
Five is the minimum number of independent paths that buys concurrent read/write, address/data pipelining, and decoupled write completion — so the channel count is a direct image of the capabilities, not arbitrary complexity. And critically, all five share the one VALID/READY handshake: five payloads, one transfer mechanism. Hold the channel map — names, payloads, directions, and the read/write split — and the rest of Module 2, and the handshake in Module 3, drop onto it cleanly.
13. What Comes Next
Now that you know all five channels, the next chapters walk each path end-to-end:
- 2.2 — The Read Path (coming next) — a read followed all the way across AR and R, beat by beat.
- 2.3 — The Write Path (coming soon) — a write across AW, W, and B, and why B closes the transaction.
Previous: 1.6 — Transaction-Level Thinking. For the broader protocol catalog, see the AMBA family overview doc.