I saw 'Is HREADY an input or an output on slaves?'.
it saids
"Any AHB ("AMBA 2 AHB" or "AMBA 3 AHB-lite" or "AMBA 5 AHB") slave must have HREADY as both an input and an output port (not bi-directional).
HREADY is required as an output from a slave so that the slave can extend the data phase of a transfer.
HREADY is also required as an input so that the slave can determine when the previously selected slave has completed its final transfer and the first data phase transfer for this slave is about to commence.
Each AHB Slave should have an HREADY output signal (conventionally named HREADYOUT) which is connected to the "Slave-to-Master Multiplexer". The output of this multiplexer is the global HREADY signal seen by the AHB master, which is also fed back to all slaves as their HREADY input.
For single AHB slave buses this "Slave-to-Master Multiplexer" is replaced by direct connections, so HREADYOUT from the slave drives the AHB master's HREADY input, and is also fed back to the slave's HREADY input."
I can't clearly understand about "HREADY is also required as an input so that the slave can determine when the previously selected slave has completed its final transfer and the first data phase transfer for this slave is about to commence".
Assumming 1 master(M0) and 3 slaves(S0,S1,S2), if M0 and S0 is doing transaction and M0 requested to S2, is it right S2 is determining another transaction is working by HREADY input?
Is there other reason of HREADY input?
If my assumming is right, I think HTRANS is also common signal and other slaves can determining transaction by HTRANS signal.
I want exact reason of HREADY input in AHB Slave and if you give example I will appreciate about it
Thank you
The answer to your first question after all the quotes is "yes". The HREADY input to the S2 AHB subordinate tells it that the final data phase transfer to S0 is being performed, and that it must wait for HREADY to go high to indicate completion of the S0 data phase transfer, and then check if HSEL is now high to indicate when S2 should sample the address phase request inputs (HTRANS, HADDR, HWRITE, etc.) before moving to perform the new data phase transfer.
The answer to your second question is no, the HREADY input only indicates when the current data phase transfer is completing and when a new address phase request should be sampled (if HSEL is sampled high the new request is for this subordinate to perform).
For your assumption, this is incorrect. HTRANS is another common signal for all subordinates, and it indicates the next requested address phase transfer, but until you know the previous transfer data phase has completed, you don't know when to start the new data phase transfer currently being requested on HTRANS. For that you need to see the HREADY value being driven by the currently data phase active subordinate, and that is what the HREADY inputs on all subordinates gives you.
Hi...but how will other slave know if this is the last transfer because HREADY is driven high to indicate completion of each transfer, be it a 1st transfer or last. If HREADY is driven high only after completion of last transfer, then other slave can detect last transfer.
The slave will know it is the last transfer to the other slave because HSEL to this new slave will now be high, telling it that the new "address phase" transfer information is for it, and it should sample that "address phase" request when HREADY is driven high by the previous slave completing its final "data phase" data transfer.
After this point the new slave is now "data phase" active and will be driving the HREADYOUT value that the master will be sampling (and which all other slaves will see).