天天看點

PCI 總線操作二: bus transaction

PCI總線協定中定義總線傳輸主要講述的ReadTransaction 和Write Transaction的總線操作。

1、  Read Transaction

如下圖所示,Read transaction 是從FRAME#宣告之後,馬上開始尋址階段,在clock2的時候發生。在尋址階段,AD[31:00]包含可用的位址,C/BE[3:0]#包含可用的bus command。

PCI 總線操作二: bus transaction

而資料階段的第一clock是clock3,。在資料階段,C/BE#表示目前資料階段哪個byte lane響應了,一直要保持到目前transaction結束。資料階段中可以包含wait cycles。從時序圖可以看到,當IRDY#或者TRDY#出現拉高的時候,總線會出現wait cycle。這可以使master來發出也可以是target完成。

Read transaction的第一個資料階段需要一個回轉周期(有target控制TRDY#來完成)。而尋址是在clock2的時候完成,随後master會停止驅動AD線。Target最早提供有效資料是在clock4的時候,target必須在DEVSEL#宣告之後,再進過一個回轉周期,馬上驅動AD線來完成資料傳輸。

資料的完整傳送要在pci的一個上升沿的時候,同時宣告IRDY#和TRDY#。(注意,DEVSEL#沒有宣告的時候TRDY#是不能被宣告的,因為此時Device沒有被選中)。而當IRDY#或者TRDY#其中隻要有一個沒有宣告,則總線處于wait cycle,沒有資料會傳送。

最後,隻有IRDY#被宣告了,FRAME#才能被deasserted,表示要告知target,目前資料是最後一個資料階段。

2、  Write Transaction

同Read transaction原理一樣,整個周期從FRAME#的宣告開始算起,如圖中的clock2的時候。不過有一處和Read transaction有差別,Write傳輸在address phase之後沒有回轉周期,因為尋址動作和資料都是master發出來的。

PCI 總線操作二: bus transaction

如上圖中,第一個data phase和第二個data phase中間沒有wait cycles發生。但是在第三個data phase中target插入了三個wait cycles。圖中時序clock5處表示master和target都産生了一個wait cycles。對于IRDY#來說,在最後要在FRAME#被deasserted的時候必須被asserted,以表示最後的data phase了。

繼續閱讀