PCI總線操作規(guī)則
1. 一旦復位完成,應保證下列信號在所有時鐘的上升沿穩(wěn)定:LOCK#,IRDY#,TRDY#, REQ#,F(xiàn)RAME#,DEVEL#,STOP#,GNT#,REQ64#,ACK64#,SBO#,SDONE#,PERR#,SERR #(只在下降沿)。
2. 保證地址/數(shù)據(jù)在以下各種情況中的相應要求:
a. 在FREAME#有效后的第一時鐘上,無論地址線AD[31::00]是否全部有用,他們都必須 是穩(wěn)定的。
b. 在REQ64#有效后的第一時鐘上,無論地址線AD[64::32] 是否全部有用,他們都必須 是穩(wěn)定的。
c. 在讀操作中,當TRDY#有效時,數(shù)據(jù)線AD[31::00]與字節(jié)使能無關,必須全部穩(wěn)定有效;而在寫操作里,當IRDY#有效時,數(shù)據(jù)線AD[31::00]與字節(jié)使能無關,必須全部穩(wěn)定有效。在其它任何時間數(shù)據(jù)線的狀態(tài)都是不確定的。在讀寫操作中,一旦相應的TR DY#或IRDY#有效,數(shù)據(jù)線就不能發(fā)生變化直到當前數(shù)據(jù)期完成為止。
d. 在讀/寫傳輸中,當ACK64#和TRDY#/IRDY#有效時,數(shù)據(jù)線AD[63::32]與字節(jié)使能無關應全部穩(wěn)定有效,而在其它任何時間都是不確定的。
e. 在特殊周期命令中,當IRDY#有效時,數(shù)據(jù)線AD[31::00]在傳輸期穩(wěn)定有效且與字節(jié)使能無關。
f. 在讀/寫傳輸中,當TRDY#/IRDY#有效后,不能向PCI總線上發(fā)異步數(shù)據(jù)。
3. 命令/字節(jié)使能線的狀態(tài)應滿足下述要求:
a. 作為總線命令的C/BE[3::0]#和C/BE[7::4]#,分別在FRAME#和REQ64#初次建立時保持穩(wěn)定;有效并且含有相應的命令碼。
b. 作為字節(jié)使能的C/BE[3::0]和C/BE[7::4]#,在地址期過后的時鐘上以及整個數(shù)據(jù)期的每個時鐘周期都是穩(wěn)定有效的,并且不受等待周期插入的影響。在突發(fā)傳輸期內(nèi),主設備可以在每個數(shù)據(jù)期完成時,所對應的時鐘上修改字節(jié)使能,但次修改值要在下一個時鐘上才能有效。
4. PAR在AD[31::0]有效后的一個時鐘上穩(wěn)定有效;PAR64在AD[63::32]有效后的一個時鐘上穩(wěn)定有效。
5. IDSEL只在配置訪問時相應的FRAME#建立后的第一個時鐘上穩(wěn)定有效,而在其它任何時間都是不確定的。
6. 對于RST#,IRQA#,IRQB#,IRQC#和IRQD#沒有限制或者說是異步的。
7. 當FRAME#和IRDY#無效而GNT#有效時,一個設備可以啟動一次訪問。
8. FRAME#信號的初次建立就標志著一次傳輸?shù)拈_始。
9. 在所有的PCI傳輸中,F(xiàn)RAME#和IRDY#應符合下列條件:
a. FRAME#和IRDY#定義了總線的忙/閑狀態(tài)。當其中一個有效時,總線是忙的;兩個都無效時,總線處于空閑狀態(tài)。
b. 一旦FRAME#被置為無效,在同一傳輸期間不能重新設置。
c. 除非設置IRDY#無效,一般情況下不能設置FRAME#無效。
d. 一旦主設備設置IRDY#,直到當前數(shù)據(jù)期結束為止,主設備不能改變IRDY#和FRAME#的狀態(tài)。
10.當下列條件之一滿足時,表明最后一個數(shù)據(jù)期已經(jīng)完成:
a. FRAME#無效而TRDY#有效(正常終止方式)。
b. FRAME#無效而STOP#有效(目標終止方式)。
c. FRAME#無效并且設備選擇計時器已經(jīng)計滿(主設備廢止方式)。
d. DEVSEL#無效而STOP#有效(目標廢止方式)。
11.當FRAME#和IRDY#無效時,表示傳輸結束。
12.下列一般規(guī)則在所有PCI傳輸中對于FRAME#、IRDY#、TRDY#、STOP#都有效:
a. 每當STOP#發(fā)出時,F(xiàn)RAME#必須盡快地撤消,但要符合撤消FRAME#的規(guī)則,即必須發(fā)出IRDY#。FRAME#的撤消應盡快在STOP#發(fā)出之后2-3個時鐘周期之內(nèi)實現(xiàn)。目標設備不能假設STOP#的發(fā)出和FRAME#的撤消之間有任何時間關系,而是必須保持STOP#信號一直到FRAME#撤消為止。當主設備取樣發(fā)現(xiàn)STOP#有效時,它就必須在有IRDY#的周期后面的第一個周期內(nèi)將FRAME#撤消。IRDY#的發(fā)出和FRAME#的撤消動作可以作為主設備正常的IRD Y#行為,并根據(jù)主設備何時準備完成一次數(shù)據(jù)傳輸而延遲0個或者多個周期。然而,如果TRDY#無效,主設備便可立即發(fā)出IRDY#,因為這時不會發(fā)生數(shù)據(jù)傳輸。
b. STOP#一旦建立,就必須保持到FRAME#撤消為止,接著STOP#也必須撤消。
c. 一旦目標設備發(fā)出了TRDY#或STOP#,它就不能改變DEVSEL#、TRDY#和STOP#信號,直到當前的數(shù)據(jù)期完成。
13. 主設備和目標設備之間的數(shù)據(jù)傳送發(fā)生于每個TRDY#和IRDY#同時有效的時鐘沿上。
14. 當數(shù)據(jù)有效時,要求數(shù)據(jù)源無條件發(fā)出XRDY#信號(寫傳輸為IRDY#,讀傳輸為TRDY# )。接受設備也必須發(fā)出它的XRDY#信號。
15. 如果當前傳輸被目標終止時,主設備必須撤消它的REQ#信號至少兩個PCI時鐘周期, 一個是總線進入的第一個空閑周期,另一個在此空閑周期之前或之后。
16. 一個設備通過DEVSEL#信號表明它是被訪問的目標。
17. DEVSEL#的發(fā)出必須早于或同時于目標使能輸出時所對應的時鐘邊沿。
18. 一旦DEVSEL#建立,除非被目標廢止,否則在最后一個數(shù)據(jù)期完成之前,不允許將它撤消。
19. LOCK#信號具有獨占性并且只能由一個設備驅(qū)動,當總線釋放時它仍可以保留。
20. 在PCI總線上,一個支持LOCK#的目標設備必須遵守下列規(guī)則:
a. 當LOCK#在地址期中撤消時,被訪問的設備要將自身鎖定。
b. 一旦建立了鎖,目標將保持鎖定狀態(tài),直到取樣發(fā)現(xiàn)FRAME#和LOCK#一起撤消或者發(fā)出目標廢止。
c. 保證LOCK#信號所有者的獨占性,一旦鎖已建立,至少有16個字節(jié)的資源,最多可以鎖定整個資源。
21.在PCI總線上,使用LOCK#的主設備必須遵循以下規(guī)則:
a. 在鎖操作期間,一個主設備只能訪問一個單一的資源。
b. 一個鎖不能跨越設備邊界。
c. 16個對齊的字節(jié)是一個主設備在鎖操作中執(zhí)行互斥時可以計算的最大資源,對16字 節(jié)塊內(nèi)任何字節(jié)的互斥訪問,將會鎖住整個16字節(jié)的塊。
d. 鎖操作中的第一個傳輸必須是讀傳輸。
e. LOCK#必須在緊跟地址期的時鐘上被設置,并保持設置以繼續(xù)控制。
f. 在數(shù)據(jù)期結束之前,如果出現(xiàn)再試并且鎖還沒有建立時,應該釋放LOCK#。
g. 無論何時,在一存取被主、從設備打斷時,必須釋放LOCK#。
h. 在連續(xù)的鎖操作中,LOCK#必須被置成一個最小空閑周期。
22.仲裁器可以在任何時鐘置某一設備的GNT#信號無效。
23.GNT#一旦建立,其撤消應符合以下規(guī)則:
a. 如果總線不是處于空閑狀態(tài),有可能一個GNT#的撤消時刻碰巧是另一個GNT#的發(fā)出時刻。否則,要求一個GNT#的撤消到下一個GNT#的發(fā)出之間要有一個時鐘的延遲,以避免在AD線和PAR線上出現(xiàn)沖突。
b. 當FRAME#無信號時,GNT#可以在任何時間撤消,以便服務于另一個主設備,或者作為對應的REQ#撤消的響應。如果GNT#撤消而FRAME#有效并可繼續(xù)下去。
24.當仲裁器向一個設備發(fā)出了GNT#信號并且總線處于空閑狀態(tài)時,該設備必在8個PCI時鐘周期內(nèi)將AD[31::0]、C/BE[3::0]#和PAR驅(qū)動到有效狀態(tài)。
25.奇偶校驗的產(chǎn)生應依據(jù)下述規(guī)則:
a. 不管類型及形式,在所有PCI事務中奇偶校驗的計算方法不變。
b. AD[31::00]、C/BE[3::0]#及PAR上"1"的個數(shù)等于偶數(shù)。
c. AD[63::32]、C/BE[7::4]#及PAR上"1"的個數(shù)等于偶數(shù)。
d. 奇偶校驗的產(chǎn)生不是可選項,它必須由所有PCI從屬設備完成。
評論