Worked examples — AXI - AMBA on-chip protocols
6.3.7 · D3· Hardware › Interconnects, Buses & SoC › AXI - AMBA on-chip protocols
Yeh AXI/AMBA On-Chip Protocols ka practice arena hai. Parent note ne ideas build kiye the: paanch channels, VALID/READY handshake, bursts, aur transaction IDs. Yahan hum arithmetic karte hain — har burst type, har timing edge case, har degenerate input — taaki exam ya waveform mein koi bhi scenario surprise na kare.
Agar koi symbol neeche unfamiliar lage, toh woh parent mein define kiya gaya tha. Doubt ho toh the AXI topic note revisit karo, ya neighbouring bus architectures note dekho.
Pehle, vocabulary (taaki yeh page akela khada rahe)
Bhale hi parent ne yeh sab banaya, lekin chaliye har symbol ko re-introduce karte hain jo hum use karte hain, taaki tumhe kabhi yeh page chhodna na pade.
Scenario matrix
Kisi bhi example se pehle, chaliye un cases ko enumerate karte hain jo ek AXI question tumpar throw kar sakta hai. Isse socho jaise trigonometry karne se pehle har quadrant list karna — humein zero blind spots chahiye.
Real question space combinations hai: teen burst types (INCR/WRAP/FIXED) × do handshake-stall sides (slave-slow / master-slow) × do ID relationships (same-ID / different-ID). Hum deliberately 12 combinations mein se har ek ko cover karte hain — kuch examples ek se zyada cells carry karte hain taaki table readable rahe.
| Cell | Case class | Kya tricky banata hai | Example(s) jo ise hit karte hain |
|---|---|---|---|
| A | Handshake — slave slower | VALID ko READY tak hold karna padta hai | Ex 1 |
| B | Handshake — master slower | READY wait karta hai, koi data lost nahi | Ex 2 |
| C | Burst INCR efficiency | address amortization | Ex 3 |
| D | Burst WRAP wrap-around | address ek boundary par fold karta hai | Ex 4 |
| E | Burst FIXED (degenerate) | address kabhi nahi hilta ( beats, 1 address) | Ex 5 |
| F | Out-of-order by ID | alag IDs reorder karte hain, same ID serialize karta hai | Ex 6 |
| G | Zero / limiting input | 1-beat "burst", limit | Ex 7 |
| H | Real-world word problem | mixed read+write, channel overlap | Ex 8 |
| I | Exam twist | narrow transfer + unaligned start | Ex 9 |
Poora grid bharna. Upar ke naun examples distinct phenomena cover karte hain; remaining combinations wahi phenomena ek saath stack hue hain. Example 10 grid ko explicitly close karta hai ek stalled handshake jo har burst type ke andar ho raha hai, dono same-ID aur different-ID streams ke saath — woh cells jo ek single-topic example apne dum par nahi reach karta.
| Burst type | slave-slow, diff-ID | slave-slow, same-ID | master-slow, diff-ID | master-slow, same-ID |
|---|---|---|---|---|
| INCR | Ex 3 + Ex 1 pattern | Ex 10 (a) | Ex 3 + Ex 2 pattern | Ex 10 (b) |
| WRAP | Ex 4 + Ex 1 pattern | Ex 10 (c) | Ex 4 + Ex 2 pattern | Ex 10 (c) |
| FIXED | Ex 5 + Ex 1 pattern | Ex 10 (d) | Ex 5 + Ex 2 pattern | Ex 10 (d) |
Cell A — Slave master se slower
Forecast: aage padhne se pehle transfer cycle guess karo. (Hint: handshake rule ko dono signals chahiye.)
Neeche ki figure ek timing diagram hai: time left-to-right clock cycles mein chalta hai, aur har horizontal line ek signal hai — high = logic 1, low = logic 0. Magenta VALID line pehle high jaati hai aur rehti hai; violet READY line late hai; orange dashed line wahan mark karti hai jahan dono coincide karte hain.

- Handshake rule likho. Transfer tab hota hai jab ek rising clock edge par. Figure mein, yeh exactly wahan hai jahan magenta aur violet lines dono high hain.
- Yeh step kyun? Yeh wahi moment hai jab transfer define hota hai. Coincidence nahi, transfer nahi.
- Cycle by cycle scan karo. Cycle 0–2: VALID=1 lekin READY=0 → koi transfer nahi. Cycle 3: VALID=1, READY=1 → transfer (orange dashed marker).
- Yeh step kyun? Hum literally dono lines ko har cycle AND kar rahe hain — seedha figure se padho.
- Hold rule apply karo. VALID cycles 0–2 ke dauran nahi gir sakta tha (magenta line flat-high rehti hai), isliye address cycle 3 par wires par hai.
- Yeh step kyun? AXI spec VALID ko transfer complete hone se pehle drop karne se mana karta hai — yahi hai jo data loss rokta hai.
Answer: cycle 3 par transfer, kuch lost nahi.
Verify: stall cycles gino: transfer cycle . ✓ Units clock cycles hain, consistent.
Cell B — Master slave se slower
Forecast: kya READY ka jaldi hona slave ko undefined data accept karaata hai?
Pehle jaisa hi timing-diagram convention, lekin ab roles swap hain: violet READY pehle hai aur held hai, magenta VALID late hai. Orange dashed line phir se coincidence mark karti hai.

- Same rule, roles swap. Transfer ko dono = 1 chahiye. Figure mein, READY cycle 0 se already high hai, toh hum magenta VALID line ka wait kar rahe hain.
- Yeh step kyun? Handshake symmetric hai — ise parwah nahi ki kaun late hai.
- Scan karo. Cycle 0–1: READY=1, VALID=0 → koi transfer nahi (master ke paas abhi valid data nahi hai). Cycle 2: dono 1 → transfer.
- Yeh step kyun? Kyunki VALID=0 ka matlab hai "bus par data meaningless hai," slave ko ise latch karna forbidden hai. Koi garbage nahi.
- No loss, no garbage confirm karo. Single valid beat exactly cycle 2 par land karta hai (orange marker).
Answer: cycle 2 par transfer; koi garbage grab nahi hua.
Verify: transfer cycle . ✓ Ex 1 ke saath symmetric, as expected.
Cell C — INCR burst efficiency
Forecast: single-beat 8 cycles cost karta hai (parent ne dikhaya). Burst cost aur % saved guess karo.
- Single-beat cost. Har transfer = 1 address + 1 data = 2 cycles; inke chaar = cycles.
- Yeh step kyun? Baseline. Har transfer dobara pay karta hai.
- Burst cost. Ek address (cycle 0) phir 4 data beats (cycles 1–4) = cycles.
- Yeh step kyun? Slave internally address auto-increment karta hai: . Sirf EK address command chahiye.
- Saving compute karo. .
- Yeh step kyun? Eliminate kiye gaye cycles ka fraction = ko beats par amortize karne ka payoff.
Answer: 5 cycles vs 8; 37.5% saved.
Verify: general formula . ✓ Step 2 se match karta hai.
Cell D — WRAP burst wrap-around
Forecast: INCR deta 0x108, 0x10C, 0x110, 0x114. WRAP alag hai — guess karo kahan fold hota hai.
Figure 16-byte cache line ko chaar boxes ke roop mein dikhata hai; har arrow jo "beat 0…3" label hai woh us box ki taraf point karta hai jise woh beat target karta hai, aur curved navy arrow cache line ke top se wapis uske base tak fold dikhata hai.

- Wrap boundary dhundo. Wrap length in bytes bytes. Aligned region hai
0x100–0x10F.- Yeh step kyun? WRAP cache-line fills ke liye use hota hai: ise ek line ke andar rehna chahiye, isliye boundary burst ki byte size ke barabar hai.
- Start se 4 se increment karte hue chalo.
0x108 → 0x10C(figure mein beats 0 aur 1).- Yeh step kyun? Region ke top tak pahunchne tak INCR jaisa hi increment.
- Boundary par wrap karo. Agla hota
0x110, jo0x10Fcross karta hai. Region base par fold karo:0x100, phir0x104(beats 2 aur 3, curved arrow follow karte hue).- Yeh step kyun? WRAP low bits wrap karta hai — critical-word-first cache fills ko pehle requested word chahiye, phir line ka baaki hissa.
Answer: 0x108, 0x10C, 0x100, 0x104.
Verify: yahan (region start) aur (burst start). Beat number ke liye (jahan ), address . Charon beats offsets dete hain → 0x108,0x10C,0x100,0x104. ✓ Charon line ke andar hain.
Cell E — FIXED burst (degenerate address)
Forecast: beat 3 kaunsa address use karta hai?
- FIXED matlab koi increment nahi. Har beat same address
0x4000target karta hai.- Yeh step kyun? Ek hardware FIFO ek register expose karta hai; har read ek new word pop karta hai lekin address kabhi nahi hilta. Increment karna wrong registers padhega.
- Addresses:
0x4000, 0x4000, 0x4000, 0x4000. - Cycles: abhi bhi ek address + chaar beats = 5 cycles.
- Yeh step kyun? Burst timing burst type se independent hai; sirf slave ka internal address math alag hota hai.
Answer: chaar identical addresses; 5 cycles.
Verify: FIXED ke liye offset formula = 0 har beat ke liye → sab 0x4000. Cycles . ✓
Cell F — ID ke basis par Out-of-order
Forecast: kaunsa pehle return karta hai, aur second ID=5 read kab finish hoti hai?
- Alag IDs reorder ho sakte hain. ID=3 (SRAM, 10-cycle latency) ID=5 se independent hai → uska data cycle 10 par return hota hai.
- Yeh step kyun? AXI alag IDs wale responses ko kisi bhi order mein allow karta hai — koi head-of-line blocking nahi.
- Pehla ID=5 cycle 100 par complete hota hai (uski stated 100-cycle DRAM latency, cycle 0 se shuru).
- Yeh step kyun? Seedha latency, kuch block nahi karta.
- Second ID=5 ko pehle ID=5 ka wait karna padta hai. Same ID ⇒ ordered response. Kyunki single DRAM port cycle 100 tak busy hai, second ID=5 read cycle 100 par start hoti hai aur apni khud ki 100-cycle latency leti hai, par complete hoti hai.
- Yeh step kyun? Yahan do effects stack hote hain, aur dono same direction point karte hain: (i) same-ID responses order mein rehne chahiye, isliye yeh cycle 100 se pehle return nahi kar sakta; (ii) shared single-port DRAM pehla access cycle 100 par finish hone se pehle second access begin bhi nahi kar sakta. Second access ki khud ki 100-cycle latency add karne par cycle 200 milta hai. Yeh stated latencies se clean derivation hai — koi undefined constants nahi.
Answer: ID=3 cycle 10 par, ID=5 (#1) cycle 100 par, ID=5 (#2) cycle 200 par.
Verify: ordering predicate — ID=3 ≠ ID=5 isliye yeh pehle aa sakta hai; dono ID=5 completions satisfy karte hain (), aur . ✓
Cell G — Zero / limiting inputs
Forecast: kya 1-beat burst kuch save karta hai?
Overhead function yaad karo jo humne vocabulary mein name kiya tha. Ab hum iska formula derive karte hain. Ek burst ek address cost pay karta hai (sab beats mein shared) plus per beat. Total cycles ; beats se divide karne par per transfer cost milti hai:
Figure is function ko ke against plot karta hai: ek magenta curve 2 se 1 par violet dashed horizontal line ki taraf girta hai, dikhata hai ki badhne ke saath address cost thinner spread hoti hai.

- plug karo. cycles.
- Yeh step kyun? 1-beat burst bas ek single transaction hai — koi amortization nahi, isliye naive cost ke barabar hai. Yeh degenerate case hai jahan bursts zero benefit dete hain (curve par leftmost point).
- Limit lo. , isliye cycle (violet dashed asymptote).
- Yeh step kyun? Address cost ek baar pay hoti hai aur thinner aur thinner spread hoti hai. Yeh best case hai — pure data bandwidth.
- Interpret karo. Real AXI ko 16 (INCR) ya 256 (AXI4) par cap karta hai, isliye hum limit ke kareeb pahunchte hain lekin kabhi nahi pahunchte.
- Yeh step kyun? Mathematical limit ek ideal hai; hardware constraints ka matlab hai hum 1 cycle approach karte hain lekin kabhi touch nahi karte.
Answer: (a) 1-beat overhead cycles; (b) hone par, overhead cycle.
Verify: ✓, aur ✓. Units poore mein clock cycles hain.
Cell H — Real-world word problem
Forecast: independent channels — guess karo kya yeh ek doosre ko block karte hain.
- Read path. Cycle 0 par AR; DRAM ki 15-cycle latency ka matlab hai R data cycle 15 par return hota hai.
- Yeh step kyun? Read ka write ke channel se koi lena-dena nahi — yeh sirf AR/R par run karta hai.
- Write path — breakdown. Write teen channels sequence mein use karta hai: cycle 0 par AW (address), cycle 1 par W (data), aur cycle 2 par B (write response). Concretely: cycle 0 par address handshake complete; cycle 1 par single data beat handshake; cycle 2 par cache B assert karta hai buffered write acknowledge karne ke liye. Yeh hai address se response tak 2 cycles.
- Yeh step kyun? Hum "2 cycles" assert nahi kar rahe — hum ek cycle per channel handshake count kar rahe hain (AW → W → B), jo exactly woh hai jaise ek fast buffered write complete hota hai.
- Compare karo. Write 2 par done, read 15 par done. Write 13 cycles pehle finish hua, unblocked.
- Yeh step kyun? Channel independence poori baat hai: ek fast write slow read ka hostage nahi hota (masters ke beech write ordering ke liye coherence dekho jahan IDs zaruri hain).
Answer: write cycle 2 par complete, read cycle 15 par; write ne wait nahi kiya.
Verify: write cycles (AW) (W→B) ; , gap . ✓
Cell I — Exam twist: narrow transfer + unaligned start
Forecast: beat 0 mein 4 byte lanes mein se kaunse valid data carry karte hain?
- Addresses compute karo. Transfer size = 2 bytes, isliye INCR 2 se step karta hai:
0x1002, 0x1004, 0x1006.- Yeh step kyun? INCR transfer size se increment karta hai, bus width se nahi. Narrow transfers chhote strides mein step karte hain.
- Beat 0 ke liye byte lanes locate karo. Bus ke chaar lanes bytes
0x1000–0x1003cover karte hain. Address0x1002bytes 2 aur 3 ke lanes occupy karta hai.- Yeh step kyun? 4-byte bus par, byte address mod 4 lane pick karta hai. → lanes 2 aur 3.
- Strobe likho.
WSTRB = 1100(binary): lanes 3 aur 2 active, lanes 1 aur 0 idle.- Yeh step kyun?
WSTRBek bit per byte lane hai jo mark karta hai kaunse lanes live data carry karte hain. Unaligned narrow writes sirf relevant lanes light up karte hain; baaki ko mask karna padta hai warna memory corrupt hoti hai.
- Yeh step kyun?
Answer: addresses 0x1002, 0x1004, 0x1006; first-beat WSTRB = 0b1100.
Verify: step , isliye beats dete hain . Lane index ; 2-byte transfer lanes 2 aur 3 set karta hai → strobe bits . ✓
Stacked grid cells fill karna — har burst type ke andar handshake stall
Forecast: ek one-cycle stall kitne cycles add karta hai, aur kya burst type ise change karta hai?
- Baseline burst cost. Cell C se: ek clean 4-beat burst = cycles.
- Yeh step kyun? Bubble add karne se pehle humein no-stall reference chahiye.
- (a) INCR, beat 2 par ek slave stall. Stall exactly ek bubble cycle insert karta hai (READY ek cycle ke liye low), isliye total cycles. Same-ID vs different-ID is single burst ko nahi change karta — ID sirf ise doosre bursts ke against order karta hai.
- Yeh step kyun? Har inserted wait state ek extra cycle hai; handshake rule (transfer sirf tab jab dono high) stall cost ko exactly uski duration banata hai.
- (b) INCR, beat 2 par master-slow stall. Symmetric: agar master ek cycle ke liye VALID drop kare, same single bubble appear hota hai → cycles. Koi bhi side stall kare farak nahi padta; cost stall ki duration hai.
- Yeh step kyun? Handshake symmetric hai (Ex 1 vs Ex 2), isliye slave-slow aur master-slow same stall length ke liye identical timing dete hain.
- (c) WRAP aur (d) FIXED, same stall. Burst type sirf address sequence change karta hai (Ex 4, Ex 5), kabhi timing nahi. Isliye WRAP aur FIXED bhi ek bubble ke saath cycles cost karte hain.
- Yeh step kyun? Yeh key unification hai: timing beats aur stalls par depend karta hai; addressing burst type par depend karta hai. Yeh independent axes hain — isliye grid kuch hi rules mein collapse hota hai.
Answer: har combination = ek inserted stall ke liye 6 cycles; burst type aur stall-side timing-irrelevant hain, ID relationship sirf cross-burst ordering affect karta hai.
Verify: clean burst ; ek stall 1 add karta hai → (a),(b),(c),(d) sab ke liye. ✓
Recall drills
Recall AXI transfer actually kab hota hai?
Rising clock edge par jab VALID aur READY dono 1 hon. ::: Dono handshake signals ka coincidence.
Recall 4-beat INCR vs four singles at
— cycles aur saving? 5 vs 8 cycles ::: 37.5% saved.
Recall
0x100 line mein 0x108 se 4-beat WRAP — chaar addresses?
0x108, 0x10C, 0x100, 0x104 ::: 16-byte boundary par fold wapas karta hai.
Recall
Same ID ke do reads — kya woh out of order complete ho sakte hain? Nahi ::: same ID in-order completion force karta hai; alag IDs reorder ho sakte hain.
Recall Kisi bhi burst type par ek one-cycle stall — kitne extra cycles?
Ek ::: burst type aur stall-side kabhi timing nahi change karte, sirf addressing/ordering.
Related: DMA controllers exactly yeh AXI bursts issue karte hain; ARM cores classic masters hain; off-chip PCIe se contrast karo jo side-band handshakes ki jagah packetize karta hai.