Avalon® Interface Specifications

ID 683091
Date 9/26/2022
Public
Document Table of Contents

5.9.1. Data Transfers Using readyLatency and readyAllowance

The following rules apply when transferring data with readyLatency and readyAllowance.

  • If readyLatency is 0, readyAllowance can be greater than or equal to 0.
  • If readyLatency is greater than 0, readyAllowance can be greater than or equal to readyLatency.

When readyLatency = 0 and readyAllowance = 0, data transfers occur only when both ready and valid are asserted. In this case, the source does not receive the sink’s ready signal before sending valid data. The source provides the data and asserts valid whenever possible. The source waits for the sink to capture the data and assert ready. The source can change the data at any time. The sink only captures input data from the source when ready and valid are both asserted.

Figure 25. readyLatency = 0, readyAllowance = 0

When readyLatency = 0 and readyAllowance = 0 the source can assert valid at any time. The sink captures the data from source only when ready = 1.

The following figure demonstrates these events:

  1. In cycle 1 the source provides data and asserts valid.
  2. In cycle 2, the sink asserts ready and D0 transfers.
  3. In cycle 3, D1 transfers.
  4. In cycle 4, the sink asserts ready, but the source does not drive valid data.
  5. The source provides data and asserts valid on cycle 6.
  6. In cycle 8, the sink asserts ready, so D2 transfers.
  7. D3 transfers at cycle 9 and D4 transfers at cycle 10.
Figure 26. readyLatency = 0, readyAllowance = 1

When readyLatency = 0 and readyAllowance = 1 the sink can capture one more data transfer after ready = 0.

The following figure demonstrates these events:

  1. In cycle 1 the source provides data and asserts valid while the sink asserts ready. D0 transfers.
  2. D1 is transferred in cycle 2.
  3. In cycle 3, ready deasserts, however since readyAllowance = 1 one more transfer is allowed, so D2 transfers.
  4. In cycle 5 both valid and ready assert, so D3 transfers.
  5. In cycle 6, the source deasserts valid, so no data transfers.
  6. In cycle 7, valid asserts and ready deasserts, however since readyAllowance = 1 one more transfer is allowed, so D4 transfers.
Figure 27. readyLatency = 1, readyAllowance = 2

When readyLatency = 1 and readyAllowance = 2 the sink can transfer data one cycle after ready asserts, and two more cycles of transfers are allowed after ready deasserts.

The following figure demonstrates these events:

  1. In cycle 0 the sink asserts ready.
  2. In cycle 1, the source provides data and asserts valid. The transfer occurs immediately.
  3. In cycle 3, the sink deasserts ready, but the source is still asserting valid, and drives valid data because the sink can capture data two cycles after ready deasserts.
  4. In cycle 6, the sink asserts ready.
  5. In cycle 7, the source provides data and asserts valid. This data is accepted.
  6. In cycle 10, the sink has deasserted ready, but the source asserts valid and drives valid data because the sink can capture data two cycles after ready deasserts.

Adaptation Requirements

The following table describes whether source and sink interfaces require adaptation.

Table 19.  Source/Sink Adaptation Requirements
readyLatency readyAllowance Adaptation
Source readyLatency = Sink readyLatency Source readyAllowance = Sink readyAllowance No adaptation required: The sink can capture all transfers.
Source readyAllowance > Sink readyAllowance Adaptation required: After ready is deasserted, the source can send more transfers than the sink can capture.
Source readyAllowance < Sink readyAllowance No adaptation required: After ready is deasserted, the sink can capture more transfers than the source can send.
Source readyLatency > Sink readyLatency Source readyAllowance = Sink readyAllowance No adaptation required: After ready is asserted, the source starts sending later than the sink can capture. After ready is deasserted, the source can send as many transfers as the sink can capture.
Source readyAllowance> Sink readyAllowance Adaptation required: After ready is deasserted, the source can send more transfers than the sink can capture.
Source readyAllowance< Sink readyAllowance No adaptation required: After ready is deasserted, the source sends fewer transfers than the sink can capture.
Source readyLatency < SinkreadyLatency Source readyAllowance = Sink readyAllowance Adaptation required: The source can start sending transfers before sink can capture.
Source readyAllowance> Sink readyAllowance Adaptation required: The source can start sending transfers before the sink can capture. Also, after ready is deasserted, the source can send more transfers than the sink can capture.
Source readyAllowance < Sink readyAllowance Adaptation required: The source can start sending transfers before the sink can capture.