Virtex-7 FPGA Gen3 集成模块Completion timeout机制
2014-01-10
任何一种 split 交易协议都存在 Requesters 得不到期望的 Completion 的风险。为了允许 Requesters 使用一种标准方式从这种情况下恢复,规定了 Completion timeout机制。
PCIE 规范规定发出需要 Completions 的 Requests 的 PCIE 设备必须实现 Completion Timeout 机制。配置 Requests 除外。PCIE 设备每发出一个需要 Completions 的Requests,Completion timeout 机制被激活。PCIE Root Complexes, PCI Express-PCI Bridges, 和 Endpoints 需要实现 Completion timeout 机制。Switches 不需要主动发起操作,因而不需要 Completion timeout。
Completion timeout 可以通过配置软件禁止。配置寄存器 Device Control 2 的bit 4 控制 Completion Timeout 的禁止。
图1
在V7的Gen3 Integrated Block中,对Completion Timeout的实现有一些特殊的地方,在应用时需要加以注意。
首先,配置寄存器Device Control 2的bit[3:0]规定了Completion timeout的值,bit4控制Completion timeout的disable。这一部分和规范一致。
图2
此外,在Gen3 Integrated Block的属性里面,有一些属性和Completion timeout相关。首先是PF0_DEV_CAP2_CPL_TIMEOUT_DISABLE,这个属性
图3
其次还有TL_COMPL_TIMEOUT_REG0/1这两个属性,控制timeout的值。这两个属性
图4
事实上,虽然Device Control 2的bit[3:0]定义了9种timeout的值,只有bit3[3:0]设置为0101和0110时,
图5
下图是一个仿真得到的TIMEOUT波形,设置Device Control 2的bit[3:0]为0x5,设置PF0_DEV_CAP2_CPL_TIMEOUT_DISABLE为
图6
当出现timeout时,在Requester Completion总线上,completion的bit[15:12]将设为1001,表示出现tim