Hello,
I'm trying to understand the behavior of AHB subordinate if a fixed length AHB burst terminates in the middle of the burst. By terminate, I mean that the AHB manager just starts to send IDLE instead of the next SEQ transfer without receiving an error response from the AHB subordinate.
For example:
An INCR4 burst sends the first and second beats of the transfer:
Burst: INCR4
NONSEQ, SEQ. IDLE IDLE
Instead of all four beats of the transfer:
NONSEQ, SEQ. SEQ, SEQ
Are AHB slaves designed to handle the above termination of the burst in the middle of a fixed length transfer?
Section 3.6.2 in the AHB5 protocol describes when early burst termination can occur, either this subordinate returning an ERROR response, or a multi-layer interconnect switches the selected Manager part way through a burst.
For the ERROR scenario the subordinate knows that burst termination could occur as a result of the response it returned, but for the multi-layer interconnect scenario the burst termination would be a surprise for the subordinate, so the protocol states that for this scenario "The Subordinate must terminate the burst from the original Manager and then respond appropriately to the new Manager".
The same wording is in the AHB-lite protocol, section 3.5.2.
Finally for the original AHB there were other non-OKAY responses a subordinate could return, but all of them could cause burst termination, so the same as the AHB5 description for ERROR.
The original AHB protocol also had bus arbitration where HGRANT could change part way through a burst, giving the same result for the subordinate as the "multi-layer interconnect" scenarios covered in the AHB-lite and AHB5 protocols. Section 3.6.1 in that protocol covered burst termination, and I think I preferred the more detailed wording there which described...
"There are certain circumstances when a burst will not be allowed to complete andtherefore it is important that any slave design which makes use of the burst informationcan take the correct course of action if the burst is terminated early. The slave candetermine when a burst has terminated early by monitoring the HTRANS signals andensuring that after the start of the burst every transfer is labelled as SEQUENTIAL orBUSY. If a NONSEQUENTIAL or IDLE transfer occurs then this indicates that a newburst has started and therefore the previous one must have been terminated."
This wording better describes the subordinate behaviour to an early burst termination, regardless of whether it is AHB, AHB-lite or AHB5.
So yes, if your subordinate sees an HTRANS sequence of NONSEQ-SEQ-IDLE for an INCR4 burst, this would tell the subordinate that the burst has been early terminated, and it should perform whatever request it next receives and forget about the previous early terminated burst length "suggestion".
Colin Campbell said:"There are certain circumstances when a burst will not be allowed to complete andtherefore it is important that any slave design which makes use of the burst informationcan take the correct course of action if the burst is terminated early. The slave candetermine when a burst has terminated early by monitoring the HTRANS signals andensuring that after the start of the burst every transfer is labelled as SEQUENTIAL orBUSY. If a NONSEQUENTIAL or IDLE transfer occurs then this indicates that a newburst has started and therefore the previous one must have been terminated."
Hi Colin,
This is indeed more clear. Thank you for your help.