In AHB specification, we have a content:
"Masters can perform single transfers using either:
SINGLE transfer burst.
Undefined length burst that has a burst of length one."
What is the purpose of burst SINGLE in AHB? why don't we only use INCR for length one burst?
Perhaps because a slave might perform more efficiently knowing exactly how many transfers will be required (if the master knows).
For example a slave might prefetch read data for INCR bursts in bursts rather than individual accesses if this saves wait states, so by telling the slave that this is a SINGLE transfer it knows not to prefetch any data that won't be requested by the master.
Same for writes, a slave might buffer up lots of writes for an undefined length INCR before committing them to memory in one or more bursts, but if it knows in advance that there won't be any burst, there's no point in that data being buffered.
You can use undefined length INCR for just one transfer, and that's what I'd expect to see from simpler master designs, but where the master can use HBURST to indicate an exact number of transfers, it might make slave performance better.
View all questions in SoC Design forum