PCI總線是一種地址和數據復用的總線,即地址和數據占用同一組信號線AD。PCI總線的所有信號都與時鐘信號同步,及所有的信號的變化都發生在時鐘的上升沿,或者在時鐘上升沿進行采樣。
如下圖所示,除了時鐘信號CLK和數據地址復用信號AD之外,PCI總線至少還應包括FRAME#(用于表示一次數據傳輸的起始)、C/BE#(Command/Byte Enable)、IRDY#(Initiator Ready for data)、TRDY#(Target ready)、DESEL#(Device Selec,片選信號,用于選擇PCI設備)和GNT#(Grant)信號等。
注:完整的信號時序圖,請參考PCI Spec。信號名后面的#表示該信號低電平有效。
下面來介紹一個簡單的例子,主機接收來自特定從機的數據。
在第一個時鐘上升沿,FRAME#和IRDY#都為inactiv表明總線當前處于空閑狀態。與此同時,某個設備的GNT#信號處于active,表明總線總裁器已經選定當前設備為下一個initiator(可以理解為主機)。
在第二個時鐘上升沿,FRAME#被initiator拉低,表明新的事務(Transaction)已經開始。與此同時,地址和命令被依次發送到AD上,總線上面的所有其他設備(從機)都會鎖存這些信息,并檢查地址和命令是否與自己匹配。
在第三個時鐘上升沿,IRDY#處于active狀態,表明主機準備就緒,可以接收數據了。AD信號上的旋轉的箭頭表示AD信號目前處于三態狀態(處于輸出和輸入的轉換狀態),即Turn‐around cycle。需要注意的是,此時的TRDY#應當處于inactive狀態,以保證Turn‐around cycle順利進行。
在第四個時鐘上升沿,PCI總線上的某個從機確認身份,并依次將DEVSEL#信號和TRDY#拉低,并將相應的數據輸出到AD上。此時,FRAME#信號為active狀態,表明這并不是最后一個數據。
在第五個時鐘上升沿,TRDY#處于inactive狀態,表明從機尚未就緒,因此所有的操作暫緩一個時鐘周期(或者說插入了一個Wait State)。PCI總線最多允許8個這樣的Wait State。
在第六個時鐘上升沿,從機向主機發送第二個數據。此時,FRAME#信號依舊為active狀態,表明這并不是最后一個數據。
在第七個時鐘上升沿,IRDY#處于inactive狀態,表明主機尚未就緒,再次插入一個Wait State。但是此時從機依舊可以向AD上發送數據。
在第八個時鐘上升沿,AD上的第三個數據被發送至主機,由于此時FRAME#信號被拉高,即inactive,表明這是本次事務(Transaction)的最后一個數據。此后,所有的控制信號均被拉高,處于inactive狀態,AD、FRAME#和C/BE#處于三態狀態。
信號時序
-
pci總線
+關注
關注
1文章
203瀏覽量
31820 -
時鐘
+關注
關注
10文章
1733瀏覽量
131451
原文標題:【博文連載】PCIe掃盲——一個典型的PCI總線周期
文章出處:【微信號:ChinaAET,微信公眾號:電子技術應用ChinaAET】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論