仅对英特尔可见 — GUID: pmk1520877080321
Ixiasoft
5.9.1. 使用readyLatency和readyAllowance的数据传输
以下规则应用于使用readyLatency和readyAllowance传输数据时。
- 如果readyLatency为0,那么readyAllowance可以大于或等于0。
- 如果readyLatency大于0,那么readyAllowance可大于或等于readyLatency。
当 readyLatency = 0和readyAllowance = 0时,只有在ready和valid都置位时数据才会传输。在此情况下,source在发送有效数据之前不会接收到sink的ready信号。source提供数据并尽可能置位valid。source等待sink采集数据并置位 ready。source可随时改变数据。只有ready和valid都置位时,sink才从source采集输入数据。
图 25. readyLatency = 0, readyAllowance = 0
当readyLatency = 0和readyAllowance = 0时,source能够随时置位valid。只有在ready = 1时,sink才从source采集数据。
下图显示了这些事件:
- 在cycle 1中,source提供数据并置位valid。
- 在cycle 2中,sink置位ready和D0传输。
- 在cycle 3中,D1传输。
- 在cycle 4中,sink置位ready,但source不驱动有效数据。
- source在cycle 6上提供数据并置位valid。
- 在cycle 8中,sink置位ready,所以D2传输。
- D3在cycle 9上传输,D4在cycle 10上传输。
图 26. readyLatency = 0, readyAllowance = 1
当readyLatency = 0和readyAllowance = 1时,sink在ready = 0后能够再采集一次数据传输。
下图显示了这些事件:
- 在cycle 1中,source提供数据并置位valid,而sink置位ready。D0传输。
- D1在cycle 2中传输。
- 在cycle 3中,ready解除置位,但是由于readyAllowance = 1允许再一次传输,因此D2输出。
- 在cycle 5中,valid和ready都置位,所以D3传输。
- 在cycle 6中,source解除置位valid,所以没有数据传输。
- 在cycle 7中,valid置位,ready解除置位,然而由于readyAllowance = 1允许再一次传输,所以D4传输。
图 27. readyLatency = 1, readyAllowance = 2
当readyLatency = 1和readyAllowance = 2时,sink能够在ready置位后的一个周期传输数据,并且在ready解除置位后允许另外两个传输周期。
下图显示了这些事件:
- 在cycle 0中,sink置位ready。
- 在cycle 1中,source提供数据并置位valid。立即出现传输。
- 在cycle 3中,sink解除置位ready,但source仍然置位valid并驱动有效数据,因为sink在ready解除置位后的两个周期能够采集数据。
- 在cycle 6中,sink置位ready。
- 在cycle 7中,source提供数据并置位valid。该数据被接受。
- 在cycle 10中,sink已解除置位ready,但source置位valid并驱动有效数据,因为sink在ready解除置位后的两个周期能够采集数据。
自适应要求(Adaptation Requirements)
下表描述了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采集之前开始发送传输。 |