Avalon® 接口规范

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

3.5.4.1. 可变延迟的流水线读传输(Pipelined Read Transfer with Variable Latency)

采集地址和控制信号后, Avalon® -MM流水线agent需要一个或多个周期来生成数据。流水线agent可以在任何给定时间有多个待定读传输。

可变延迟流水线读传输:
  • 需要一个额外信号,readdatavalid,指示读数据何时有效。
  • 包括与非流水线读传输相同的一组信号。
在可变延迟流水线读传输中,使用readdatavalid的agent外设被认为是通过可变延迟进行流水线化的。对应于一个读命令的readdatareaddatavalid信号最早可以在此读命令置位后的周期中置位。

agent必须按照接受读命令的相同顺序返回readdata。具有可变延迟的流水线agent端口必须使用waitrequest。agent可以通过置位waitrequest来停止传输,以保持一个可接受数量的待定传输。agent可以通过置位readdatavalid将数据传输到host,而不用考虑agent是否通过waitrequest来暂停一个新命令。

注: 待定传输的最大数量是从接口(agent interface)的一个属性。互连架构使用此数量来构建逻辑,将readdata布线到请求的host。从接口(而非互连架构)必须跟踪待定读取的数量。agent必须置位waitrequest以防止待定读取的数量超过最大数量。如果agent有waitrequestAllowance > 0,那么agent必须尽早地置位waitrequest,以便待定传输总数(包括在waitrequest置位期间接受的那些数量)不超过指定的待定传输的最大数量。
图 12. 可变延迟的流水线读传输(Pipelined Read Transfers with Variable Latency)

下图显示了几个agent读传输。通过可变延迟使agent流水化。在此图中,agent最多可接受两个待定传输。agent使用waitrequest来避免超过这个最大值。

此图中的编号标识了以下转换:

  1. host置位addressread,启动一个读传输。
  2. agent捕获addr1
  3. agent捕获addr2
  4. 由于agent已经接受最多2个待定读取,因此agent置位waitrequest,从而导致第三个传输停止。
  5. Agent置位data1,即对addr1的响应。agentjiechudata1,即对addr1的响应。agent解除置位waitrequest
  6. agent捕获addr4。互连捕获data2
  7. agent捕获addr4。互连捕获data2
  8. agent驱动readdatavalidreaddata以响应第三次读传输。
  9. Agent驱动addr5。互连捕获data3。read信号被jiechuaddr5。互连捕获data3read信号被解除置位。waitrequest的值不再相关。
  10. interconnect采集data4
  11. agent驱动data5,并置位readdatavalid,完成最后待定读传输的数据阶段。

如果agent在处理待定读传输时无法处理写传输,那么agent必须置位waitrequest,并且停止写操作,直到完成待定读传输。在agent接受对与当前待定读传输相同地址的写传输的情况下, Avalon® -MM规范没有定义readdata的值。