3.5.1. Typical Read and Write Transfers
A agent typically receives address, byteenable, read or write, and writedata after the rising edge of the clock. A agent asserts waitrequest before the rising clock edge to hold off transfers. When the agent asserts waitrequest, the transfer is delayed. While waitrequest is asserted, the address and other control signals are held constant. Transfers complete on the rising edge of the first clk after the agent interface deasserts waitrequest.
There is no limit on how long a agent interface can stall. Therefore, you must ensure that a agent interface does not assert waitrequest indefinitely. The following figure shows read and write transfers using waitrequest.
waitrequest can be decoupled from the read and write request signals. waitrequest may be asserted during idle cycles. An Avalon® -MM host may initiate a transaction when waitrequest is asserted and wait for that signal to be deasserted. Decoupling waitrequest from read and write requests may improve system timing. Decoupling eliminates a combinational loop including the read, write, and waitrequest signals. If even more decoupling is required, use the waitrequestAllowance property. waitrequestAllowance is available starting with the Quartus® Prime Pro v17.1 Stratix® 10 ES Editions release.
The numbers in this timing diagram, mark the following transitions:
- address, byteenable, and read are asserted after the rising edge of clk. The agent asserts waitrequest, stalling the transfer.
- waitrequest is sampled. Because waitrequest is asserted, the cycle becomes a wait-state. address, read, write, and byteenable remain constant.
- The agent deasserts waitrequest after the rising edge of clk. The agent asserts readdata and response.
- The host samples readdata, response and deasserted waitrequest completing the transfer.
- address, writedata, byteenable, and write signals are asserted after the rising edge of clk. The agent asserts waitrequest stalling the transfer.
- The agent deasserts waitrequest after the rising edge of clk.
- The agent captures write data ending the transfer.