ARM AHBA 1Kbyte boundary issue

DEAR ALL,

As I am a beginner in ARM AHBA bus protocol. I cant understand why AHBA bus need to limit 1Kbyte boundary? (As 1KByte (256 word) boundary crossing within a burst is Illegal.)

If there is a incremental burst 20 word to transmit by a AHB Master and the Start Address is 250 word, Should I divide these into two request like, first request : Start Address 250 word, burst 6 word second request : Start Address 256 word, burst 14 word.

Thanks a lot,

BRs beginner.

Reply to
kelvins
Loading thread data ...

Probably to minimize the size of the adders needed for address calculation, but I'm guessing.

Is the limit really 1K? Thought it was bigger.

Cheers, Jon

Reply to
Jon Beniston

To your question, if you want to be 100% compatible (and maybe get your slave to pass in various verification suites such as e/Specman, SystemC etc.) then yes, you have to do exactly as you suggested. If you are doing a proprietry system and

  • you know exactly how all the slaves will behave (e.g. because you designed them yourself)
  • you or nobody else is ever likely to try and reuse your code inanother design then who cares, do whatever you want ( but your not 100% AMBA)

If your are doing INCR bursts it's not such a problem. Whenever the address is modulo 1K just change HTRANS from SEQ to NSEQ. You don't have to physically insert a wait state, just insert the NSEQ on the fly. If you are doing fixed length bursts (INCR4, INCR8, INCR16) it's a bit more difficult (but probably more efficient). Here you need to know at burst start whether you will cross a 1K boundary. If so, just change the current burst type to INCR and insert an NSEQ as above on the 1K boundary.

As to why ARM did it, no idea really. But,

  • it gives you smaller (and faster) logic in the HSEL address decoder
  • most memory maps are segmented anyway
  • slaves only need to monitor for (HTRANS == NSEQ) && (HSEL == '1') && (HREADY == '1') to know whether they are selected. After that they can generate the remaining addresses themselves internally. So it's nothing really worth complaining about too much.

Hope this helps, C.

Reply to
Charles, NG

Correct.

In addition, this design rule also prevent a burst from going across multiple AHB slaves. Section 3.8 Address decoding of AMBA spec 2.0 mentioned that the minimum size of an AHB slave is 1KB. By having this rule that limit the burst within the 1kB boundary, we can prevent a situation where a burst going across two slaves, with the second slave get a burst with first HTRANS showing as SEQ instead of NSEQ. regards,

Joseph

Reply to
Joseph

it should also check "HTRANS == SEQ" :-) Joseph

Reply to
Joseph

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.