任何一種 split 交易協(xié)議都存在 Requesters 得不到期望的 Completion 的風(fēng)險(xiǎn)。為了允許 Requesters 使用一種標(biāo)準(zhǔn)方式從這種情況下恢復(fù),規(guī)定了 Completion timeout機(jī)制。
PCIE 規(guī)范規(guī)定發(fā)出需要 Completions 的 Requests 的 PCIE 設(shè)備必須實(shí)現(xiàn) Completion Timeout 機(jī)制。配置 Requests 除外。PCIE 設(shè)備每發(fā)出一個(gè)需要 Completions 的Requests,Completion timeout 機(jī)制被激活。PCIE Root Complexes, PCI Express-PCI Bridges, 和 Endpoints 需要實(shí)現(xiàn) Completion timeout 機(jī)制。Switches 不需要主動(dòng)發(fā)起操作,因而不需要 Completion timeout。
Completion timeout 可以通過(guò)配置軟件禁止。配置寄存器 Device Control 2 的bit 4 控制 Completion Timeout 的禁止。
圖1
在V7的Gen3 Integrated Block中,對(duì)Completion Timeout的實(shí)現(xiàn)有一些特殊的地方,在應(yīng)用時(shí)需要加以注意。
首先,配置寄存器Device Control 2的bit[3:0]規(guī)定了Completion timeout的值,bit4控制Completion timeout的disable。這一部分和規(guī)范一致。
圖2
此外,在Gen3 Integrated Block的屬性里面,有一些屬性和Completion timeout相關(guān)。首先是PF0_DEV_CAP2_CPL_TIMEOUT_DISABLE,這個(gè)屬性
圖3
其次還有TL_COMPL_TIMEOUT_REG0/1這兩個(gè)屬性,控制timeout的值。這兩個(gè)屬性
圖4
事實(shí)上,雖然Device Control 2的bit[3:0]定義了9種timeout的值,只有bit3[3:0]設(shè)置為0101和0110時(shí),
圖5
下圖是一個(gè)仿真得到的TIMEOUT波形,設(shè)置Device Control 2的bit[3:0]為0x5,設(shè)置PF0_DEV_CAP2_CPL_TIMEOUT_DISABLE為
圖6
當(dāng)出現(xiàn)timeout時(shí),在Requester Completion總線(xiàn)上,completion的bit[15:12]將設(shè)為1001,表示出現(xiàn)tim