AHB fixed length burst termination in the middle of the burst

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 and
    therefore it is important that any slave design which makes use of the burst information
    can take the correct course of action if the burst is terminated early. The slave can
    determine when a burst has terminated early by monitoring the HTRANS signals and
    ensuring that after the start of the burst every transfer is labelled as SEQUENTIAL or
    BUSY. If a NONSEQUENTIAL or IDLE transfer occurs then this indicates that a new
    burst 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.

  • "There are certain circumstances when a burst will not be allowed to complete and
    therefore it is important that any slave design which makes use of the burst information
    can take the correct course of action if the burst is terminated early. The slave can
    determine when a burst has terminated early by monitoring the HTRANS signals and
    ensuring that after the start of the burst every transfer is labelled as SEQUENTIAL or
    BUSY. If a NONSEQUENTIAL or IDLE transfer occurs then this indicates that a new
    burst has started and therefore the previous one must have been terminated."

    Hi Colin, 

    This is indeed more clear. Thank you for your help.