In the waveform shown in spec for SPLIT/RETRY response, its been given for NONSEQ transfer that is first transfer of burst. Can these responses be given in the middle of a burst. And should the Master restart the burst from first beat or from middle of the burst if SPLIT/RETRY given in middle of a burst.
SPLIT and RETRY responses would normally be given to an AHB master request when the slave knows it won't be able to respond to the required transfer for a number of cycles, so to avoid stalling the bus these responses allow the local arbiter to possibly grant another master that could use the bus at this time.
However when would the slave need to signal this ?
The typical example would be when the slave needs to fetch in a bank of data from elsewhere, something that might take many cycles, so then you would expect it to be the first transfer in the burst (the NONSEQ) that causes the slave to fetch in this data, and then hopefully any susequent SEQ accesses would not need a SPLIT or RETRY response as the data would now be available.
It wouldn't be illegal to give a SPLIT or RETRY response to a SEQ access, it would just be uncommon (not that use of SPLIT or RETRY ever was common).
So if your slave does give a SPLIT or RETRY response to a SEQ access, the master would need to start a new burst from this failing access (it must not repeat the entire burst from the initial NONSEQ access again), so if the original burst was an INCR8, and it was the second transfer (a SEQ) that sees the SPLIT or ERROR, the AHB master when next granted would need to now perform a 7-beat burst starting with a new NONSEQ, so probably an undefined length INCR.
But as I have said in reply to many AHB questions, are you really using this old version of AMBA 2 AHB when there are much simpler and better performance later issues of the protocol (AMBA 3 AHB-lite or AMBA 5 AHB), is there something in this particular version of the protocol that you don't see in these newer releases ?
Thanks.
Yes AMBA 5 AHB is is much simpler and have only OKAY and ERROR response signaling. I just had this doubt regarding when slave can give RETRY/ SPLIT response and how a bus master need to respond in AMBA 3 AHB.
That's a simply one to answer, AMBA 3 AHB doesn't have SPLIT or RETRY responses. These only existed in the original AMBA 2 AHB where there was suppoort for multiple masters on one bus.
So in AMBA 2 AHB, when a master receives a SPLIT or a RETRY response, in both cases it simply re-requests access to the bus by asserting HBUSREQ (if not already asserted) and waits until it is next granted when HGRANT is sampled high. It then performs however many transfers were remaining from the original requested transfer sequence. Note that this "new" transfer sequence needs to start with a NONSEQ access, and HBURST will need to be driven according to how many transfer are in this new burst.
Thanks!
Yes they were existed only in AMBA 2 AHB not in AMBA 3 AHB-LIte and AMBA 5 AHB.
Now clear with the RETRY/SPLIT transfers.