This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

In AMBA AHB, is hgrnat must be low after 1st clock cycle of an ERROR response?

Hi,

In AMBA AHB:-

     For two clock cycle SPLIT or RETRY response, hgrant must be low after 1st clock cycle of SPLIT or RETRY response.

   q)  For two clock cycle ERROR response, is it mandatory of hgrant must be low after 1st clock cycle of ERROR response?

   q) May i know the state(low/high) of hgrant signal in two clock cycle response?

   q) If i want to continue the remaining transfers after receiving ERROR response of a burst, is it necessary to rebuild the transaction or not?

   q) with out of rebuild transaction, is it possible to continue the transfers w.r.to ERROR response?

Parents
  • Hi pkoti0583,

    Just wanted to comment on a couple of the points in your first posting.

    If the slave returns a SPLIT response, the master MUST drive HTRANS=IDLE in the second of the 2 cycles of the SPLIT response. At the same time the arbiter will also sample HRESP=SPLIT while HREADY is low, and MUST drive HGRANT low to the current master in the second cycle of the SPLIT response so that this master then detects it is no longer granted at the end of the SPLIT transfer response (when its IDLE transfer address phase would have been sampled).

    For RETRY responses again the master MUST drive HTRANS=IDLE in the second of the 2 cycles of RETRY response. But this time the arbiter will only de-assert HGRANT to the current master in the second cycle of the RETRY response IF a higher priority master is waiting to use the bus. If no other master is waiting to use the bus, or if only lower priority masters are waiting, HGRANT will remain asserted to the current master, and after the mandatory IDLE transfer the master can immediately repeat the failed access address phase transfer.

    For both SPLIT and RETRY responses the master must repeat the previously indicated transfer sequence, so rebuilding and completing the remainder of any previously indicated burst, before performing any new transfers.

    For ERROR responses the master can choose if it cancels the current transfer in the second cycle of the 2 cycle response, in which case it MUST issue an IDLE transfer on HTRANS as above. But the master can instead choose to ignore the ERROR response and continue with whatever transfers it wished to next perform (so no requirement for an IDLE transfer). ERROR responses have no effect on the operation of the arbiter, other than the 2nd cycle of the response having HREADY high, meaning that if the arbiter had decided to grant a different master (HGRANT to that new master driven high), the new master would then become the granted master at the end of the HREADY high cycle.

    For ERROR responses, where the master has changed HTRANS to IDLE there is no requirement that it rebuilds the failed burst, and instead you would probably see it jump to an exception handler to fix the cause of that error response, before then perhaps eventually repeating the failed accesses.

    ERROR responses mean nothing to the arbiter, only RETRY and SPLIT responses are relevant to how it functions.

    JD

Reply
  • Hi pkoti0583,

    Just wanted to comment on a couple of the points in your first posting.

    If the slave returns a SPLIT response, the master MUST drive HTRANS=IDLE in the second of the 2 cycles of the SPLIT response. At the same time the arbiter will also sample HRESP=SPLIT while HREADY is low, and MUST drive HGRANT low to the current master in the second cycle of the SPLIT response so that this master then detects it is no longer granted at the end of the SPLIT transfer response (when its IDLE transfer address phase would have been sampled).

    For RETRY responses again the master MUST drive HTRANS=IDLE in the second of the 2 cycles of RETRY response. But this time the arbiter will only de-assert HGRANT to the current master in the second cycle of the RETRY response IF a higher priority master is waiting to use the bus. If no other master is waiting to use the bus, or if only lower priority masters are waiting, HGRANT will remain asserted to the current master, and after the mandatory IDLE transfer the master can immediately repeat the failed access address phase transfer.

    For both SPLIT and RETRY responses the master must repeat the previously indicated transfer sequence, so rebuilding and completing the remainder of any previously indicated burst, before performing any new transfers.

    For ERROR responses the master can choose if it cancels the current transfer in the second cycle of the 2 cycle response, in which case it MUST issue an IDLE transfer on HTRANS as above. But the master can instead choose to ignore the ERROR response and continue with whatever transfers it wished to next perform (so no requirement for an IDLE transfer). ERROR responses have no effect on the operation of the arbiter, other than the 2nd cycle of the response having HREADY high, meaning that if the arbiter had decided to grant a different master (HGRANT to that new master driven high), the new master would then become the granted master at the end of the HREADY high cycle.

    For ERROR responses, where the master has changed HTRANS to IDLE there is no requirement that it rebuilds the failed burst, and instead you would probably see it jump to an exception handler to fix the cause of that error response, before then perhaps eventually repeating the failed accesses.

    ERROR responses mean nothing to the arbiter, only RETRY and SPLIT responses are relevant to how it functions.

    JD

Children