22.214.171.124. Pipelined Read Transfer with Variable Latency
After capturing address and control signals, an Avalon® -MM pipelined agent takes one or more cycles to produce data. A pipelined agent may have multiple pending read transfers at any given time.
- Require one additional signal, readdatavalid, that indicates when read data is valid.
- Include the same set of signals as non-pipelined read transfers.
The agent must return readdata in the same order that the read commands are accepted. Pipelined agent ports with variable latency must use waitrequest. The agent can assert waitrequest to stall transfers to maintain an acceptable number of pending transfers. A agent may assert readdatavalid to transfer data to the host independently of whether the agent is stalling a new command with waitrequest.
The following figure shows several agent read transfers. The agent is pipelined with variable latency. In this figure, the agent can accept a maximum of two pending transfers. The agent uses waitrequest to avoid overrunning this maximum.
The numbers in this timing diagram, mark the following transitions:
- The host asserts address and read, initiating a read transfer.
- The agent captures addr1.
- The agent captures addr2.
- The agent asserts waitrequest because the agent has already accepted a maximum of two pending reads, causing the third transfer to stall.
- The agent asserts data1, the response to addr1. The agent deasserts waitrequest.
- The agent captures addr3. The interconnect captures data1.
- The agent captures addr4. The interconnect captures data2.
- The agent drives readdatavalid and readdata in response to the third read transfer.
- The agent captures addr5. The interconnect captures data3. The read signal is deasserted. The value of waitrequest is no longer relevant.
- The interconnect captures data4.
- The agent drives data5 and asserts readdatavalid completing the data phase for the final pending read transfer.
If the agent cannot handle a write transfer while processing pending read transfers, the agent must assert waitrequest and stall the write operation until the pending read transfers have completed. The Avalon® -MM specification does not define the value of readdata in the event that a agent accepts a write transfer to the same address as a currently pending read transfer.
Did you find the information on this page useful?