A transfer occurs ONLY when both VALID and READY are High on the same rising clock edge.
- Source (Master or Slave): Asserts
VALIDwhen data/control is available. - Destination (Slave or Master): Asserts
READYwhen it can accept the information.
The core mechanism of flow control in AXI. Every channel uses the VALID/READY handshake to transfer information.
A transfer occurs ONLY when both VALID and READY are High on the same rising clock edge.
VALID when data/control
is available.READY when it can
accept the information.Once VALID is asserted, it MUST remain asserted until the handshake occurs
(Ready comes High). The Source CANNOT deassert VALID just because Ready is Low.
However, READY can toggle. The Destination can assert Ready before Valid
arrives, or wait for Valid to arrive.
To prevent deadlocks, the Protocol specifies dependency rules:
// GOOD:
assign VALID = data_available; // Purely internal logic
assign READY = buffer_not_full;
// BAD (Deadlock Risk):
assign VALID = data_available && READY; // Depends on Ready!