Avalon® 接口规范

ID 683091
日期 5/27/2021
Public
文档目录

5.9.1. 使用readyLatency和readyAllowance的数据传输

以下规则应用于使用readyLatencyreadyAllowance传输数据时。

  • 如果readyLatency为0,那么readyAllowance可以大于或等于0。
  • 如果readyLatency大于0,那么readyAllowance可大于或等于readyLatency

readyLatency = 0readyAllowance = 0时,只有在readyvalid都置位时数据才会传输。在此情况下,source在发送有效数据之前不会接收到sink的ready信号。source提供数据并尽可能置位valid。source等待sink采集数据并置位 ready。source可随时改变数据。只有readyvalid都置位时,sink才从source采集输入数据。

图 25. readyLatency = 0, readyAllowance = 0

readyLatency = 0readyAllowance = 0时,source能够随时置位valid。只有在ready = 1时,sink才从source采集数据。

下图显示了这些事件:

  1. 在cycle 1中,source提供数据并置位valid
  2. 在cycle 2中,sink置位readyD0传输。
  3. 在cycle 3中,D1传输。
  4. 在cycle 4中,sink置位ready,但source不驱动有效数据。
  5. source在cycle 6上提供数据并置位valid
  6. 在cycle 8中,sink置位ready,所以D2传输。
  7. D3在cycle 9上传输,D4在cycle 10上传输。
图 26. readyLatency = 0, readyAllowance = 1

readyLatency = 0readyAllowance = 1时,sink在ready = 0后能够再采集一次数据传输。

下图显示了这些事件:

  1. 在cycle 1中,source提供数据并置位valid,而sink置位readyD0传输。
  2. D1在cycle 2中传输。
  3. 在cycle 3中,ready解除置位,但是由于readyAllowance = 1允许再一次传输,因此D2输出。
  4. 在cycle 5中,validready都置位,所以D3传输。
  5. 在cycle 6中,source解除置位valid,所以没有数据传输。
  6. 在cycle 7中,valid置位,ready解除置位,然而由于readyAllowance = 1允许再一次传输,所以D4传输。
图 27. readyLatency = 1, readyAllowance = 2

readyLatency = 1readyAllowance = 2时,sink能够在ready置位后的一个周期传输数据,并且在ready解除置位后允许另外两个传输周期。

下图显示了这些事件:

  1. 在cycle 0中,sink置位ready
  2. 在cycle 1中,source提供数据并置位valid。立即出现传输。
  3. 在cycle 3中,sink解除置位ready,但source仍然置位valid并驱动有效数据,因为sink在ready解除置位后的两个周期能够采集数据。
  4. 在cycle 6中,sink置位ready
  5. 在cycle 7中,source提供数据并置位valid。该数据被接受。
  6. 在cycle 10中,sink已解除置位ready,但source置位valid并驱动有效数据,因为sink在ready解除置位后的两个周期能够采集数据。

自适应要求(Adaptation Requirements)

下表描述了source和sink接口是否需要自适应。

表 19.  Source/Sink自适应要求
readyLatency readyAllowance 自适应(Adaptation)
Source readyLatency = Sink readyLatency Source readyAllowance = Sink readyAllowance 不需要自适应:sink能够采集所有传输。
Source readyAllowance > Sink readyAllowance 需要自适应: ready解除置位后,source能够发送比sink采集的更多的传输。
Source readyAllowance < Sink readyAllowance 不需要自适应: ready解除置位后,sink能够采集比souce发送的更多的传输。
Source readyLatency > Sink readyLatency Source readyAllowance = Sink readyAllowance 不需要自适应: ready被置位,source开始发送的时间晚于sink能够采集的时间。ready解除置位后,source能够发送与sink能够采集一样多的传输。
Source readyAllowance> Sink readyAllowance 需要自适应: ready解除置位后,source能够发送比sink采集的更多的传输。
Source readyAllowance< Sink readyAllowance 不需要自适应: ready解除置位后,source能够发送比sink采集的更少的传输。
Source readyLatency < SinkreadyLatency Source readyAllowance = Sink readyAllowance 需要自适应:source能够在sink采集之前开始发送传输。
Source readyAllowance> Sink readyAllowance 需要自适应: source能够在sink采集之前开始发送传输。此外,在ready解除置位后,source能够发送比sink能够采集的更多的传输。
Source readyAllowance < Sink readyAllowance 需要自适应:source能够在sink采集之前开始发送传输。