天天看點

四、PCI總線上的資料傳輸過程

本節所給的時序圖主要表示總線以32位方式執行有關操作時,相應信号之間的關系。在具體圖示中,當以信号以虛線畫出時,則表示沒有裝置驅動它,但若此虛線處在基準位置時,仍然可表示它具有一個穩定的值;當三态信号以虛線方式畫在高、低狀态之間時,說明它的值是不穩定的(例如,AD線或C/BE#線);當一條實線程式設計連續的短線時,表明它由原來的被驅動狀态變成了現在的三态;當一實線在由低向高跳變後變為連續的短線時,則說明該信号先經預充電變為高電平,然後變成三态(釋放)。上述關于信号狀态畫法的約定在以後的章節中同樣适用。

4.1、總線上的讀操作

下圖表示了總線上一次讀操作中有關信号的變化情況。

四、PCI總線上的資料傳輸過程

從圖中可以看出,一旦FRAME#信号有效,位址期就開始,并在時鐘2的上升沿處穩定有效。在位址期内,AD[31..0]上包含有有效位址,C/BE[3..0]上含有一個有效的總線指令。資料期時從時鐘3的上升沿處開始的,在此期間,AD[31..0]線上傳送的時資料,而C/BE#線上的資訊卻指出資料線上的哪些位元組是有效的(即哪幾個位元組時目前要傳輸的)。要特别指出的是無論是讀操作還是後邊講的寫操作,從資料期的開始一直到傳輸的完成,C/BE#的輸出緩沖器必須始終保持有效狀态。

圖中的DEVSEL#信号和TRDY#信号是由被位址期内所發位址選中的裝置(從裝置)提供的,但要保證TRDY#在DEVSEL#之後出現。而IRDY#信号是發起讀操作的裝置(主裝置)根據總線的占用情況自動發出的。資料的真正傳輸是在IRDY#和TRDY#同時有效的時鐘前沿進行的,這兩個信号的其中之一無效時,就表示需插入等待周期,此時不進行資料傳輸。這說明,一個資料期可以包含一次資料傳輸和若幹個等待周期。在上圖中,時鐘4、6、8各進行了一次資料傳輸,而在時鐘3、5、7處插入了等待周期。

在讀操作中的位址期和資料期之間,AD線上要有一個交換周期,這需要由從裝置利用TRDY#強制實作(也就是TRDY#的發出必須比位址的穩定有效慢一拍)。但在交換期過後并且有DEVSEL#信号時,從裝置必須驅動AD線。

在時鐘7處盡管是最後一個資料期,但由于主裝置因某種原因不能完成最後一次傳輸(具體表現是此時IRDY#無效),故FRAME#不能撤銷,隻有在時鐘8處,IRDY#變為有效後,FRAME#信号才能撤銷。

3、總線上的寫操作

下圖表示總線上一次寫操作的時序關系。

四、PCI總線上的資料傳輸過程

由上圖可知,總線上的寫操作與讀操作類似,也是FRAME#信号的有效預示着位址周期的開始,且在時鐘2的上升沿處達到穩定有效。整個資料期也與讀操作基本相同,可以自行分析。隻是在第三個資料期中由從裝置連續插入了三個等待周期,時鐘5處傳輸雙方均插入了等待周期。

值得注意的是,當FRAME#撤銷時必須要有IRDY#發出位前提,以表明時最後一個資料期。另外,從上圖可看出,主裝置在是時鐘5處因撤銷了IRDY#而插入等待周期,表明要寫的資料将延遲發送,但此時,位元組使能信号不受等待周期的影響,不得延遲發送。

要說寫操作與讀操作的不同點,那就是在寫操作中,位址期與資料期之間沒有交換周期,這是因為,在此類操作中,資料和位址是由同一個裝置(主裝置)發出的。

最後強調的是:上述的讀/寫操作均以多個資料期為例來說明的。如果是一個資料期時,FRAME#信号在沒有等待周期的情況下,應在位址期(讀操作應在交換周期)過後即撤銷。若由等待周期時,請自行分析其時序關系。

3.3、傳輸的終止過程

無論是主裝置還是從裝置,都可以提出終止一次PCI總線傳輸的要求,但要求不等于具體實施,也就是說雙方均無權力單方面實施傳輸停止工作,需要互相配合,這一點可從下面的叙述中體會到。不過有一點是肯定的,那就是傳輸的最終停止控制要由主裝置完成,這是因為傳輸的結束必須滿足系統的要求并且應是有秩序的,這隻有主裝置才能做到。同時,所有傳輸的結束标志是FRAME#信号和IRDY#信号均已撤銷而進入總線空閑狀态。

1、由主裝置提出的終止

主裝置是通過撤銷FRAME#信号并建立IRDY#信号來提出終止請求的。實際上,這樣做的目的就是告訴從裝置,現在已進入了最後的資料期,此後IRDY#一直保持有效,直到出現TRDY#信号,完成最後一個資料的傳輸。接着IRDY#便撤銷,進而達到完全終止的條件(FRAME#和IRDY#同時無效),結束傳輸,進入總線的空閑狀态。

主裝置一般在什麼情況下會提出終止傳輸的要求呢,其原因有二:

1)這是一個最常見,也是一個最容易了解的原因,它就是主裝置已做完要做的事。

2)當主裝置的GNT#信号無效并且内部的延時計數器已滿,進而不得不終止傳輸,即所謂的逾時。究其逾時的原因,不是從裝置産生的通路延遲,便是要做的操作太久。

下面通過例子來進一步說明上述兩種終止傳輸的具體情形。

如下圖所示,在時鐘3處,主裝置撤銷了FRAME#信号而建立了IRDY#,說明它已得知目前的操作已完成,便以此方式提出終止,而此時TRDY#也正好有效,故最後一個資料被傳輸,而當時鐘4到來時,IRDY#已撤銷,因為此時傳輸已經完成,是以IRDY#也在此刻失效。但實際上在時鐘3處,TRDY#也可以無效,進而形成最終資料傳輸及終止的延遲,應注意的事此時應保證主裝置發出的IRDY#的有效期維持到最終資料傳輸完成為止。

四、PCI總線上的資料傳輸過程

在上圖中,也可認為是因逾時而引起的傳輸終止。在這種情況下,FRAME#在時鐘3處的無效就應看成是由于計時器已滿而造成的。此時GNT#撤銷并且主裝置已準備好最終資料傳輸(因IRDY#有效),但因GNT#無效,不允許使用總線,應該終止,(不過,若使用的是存儲器寫并無效指令,則可繼續使用總線,因該指令引起的傳輸不受延時計數器的限制,并且這種傳輸隻有在一個Cache行的邊界上才能停止進行傳輸)其終止的具體過程與第一種方式一樣。如果TRDY#在時鐘2處無效,則終止便後延,最後資料期也要後延,直到TRDY#有效為止。值得注意的是在這種情況下,不一定要做完原來進行的傳輸。

2、由從裝置提出的終止

如果從裝置希望終止一次傳輸,就應向主裝置發出STOP#信号以示請求。隻要STOP#信号一有效,就必須保持到FRAME#信号撤銷為止。在此器件,IRDY#和TRDY#間的關系與STOP#和FRAME#間的關系是互相獨立的,也就是說,在目标裝置要求總之傳輸的操作中,資料的傳輸可有可無,具體情況取決于當時IRDY#和TRDY#的狀态,但有一點應說明:當從裝置發出STOP#信号同時又使TRDY#無效時,則表明從裝置将不再傳輸任何資料,這也意味着,主裝置在此時不必等待最後一次的資料傳輸,而使整個操作結束。

從裝置之是以要求終止目前的傳輸操作,可能基于以下兩種理由:

1)由于死鎖,某些非PCI資源處于非空閑狀态及該裝置處于互斥通路的鎖定狀态等原因,使得目前從裝置無法進行正常的傳輸,不得不要求終止相應的傳輸操作。也就是說,從裝置目前尚無資料傳輸。通常把這種情況也稱為再試。

2)此種情況下的終止,通常也稱為斷開。使由于從裝置在八個時鐘周期内不能對主裝置作出響應,因而隻要要求停止傳輸。但斷開往往不會發生在第一個資料期,也就是說,一般在進行了一些資料傳輸之後才會發生。

對于大多數從裝置都要求能實作再試功能,而其它終止方式可作為選項。對于哪些不支援互斥通路、不能檢測思索條件、不會陷入需要它們拒絕的一個通路之中的裝置,也可将再試作為選項。但對于主裝置要能夠處理從裝置以任何方式提出的終止請求。

再試方式較為容易,下面舉例再對斷開方式作進一步的說明。

四、PCI總線上的資料傳輸過程

如上圖所示,由于從裝置再發出STOP#信号時,同時使TRDY#有效,進而表明它還要進行一次資料傳輸才終止。從圖中可以看出,在時鐘2處STOP#已穩定有效,是以接下來主裝置就将FRAME#撤銷并建立TRDY#,表示接受了從裝置的終止請求,并為最後一次資料傳輸做好了準備。資料的傳輸發生在時鐘3處。

四、PCI總線上的資料傳輸過程

同上例一樣,在STOP#發出之後也又資料要傳輸,但不同之處在于例1的資料傳輸發生在FRAME#撤銷之後,而本例中則發生在FRAME#撤銷之前(時鐘2處)。當從裝置發現資料已經完成,就應該把TRDY#撤銷,也就是說,在該例中,最後一個資料期沒有資料傳輸。

四、PCI總線上的資料傳輸過程

從上圖我們可清楚的看到,在整個的終止過程中,未發生任何資料傳輸,這也是它與前兩個例子的重要差別。實際上,該例本質使屬再試方式,使斷開的一種特殊情況。另外,該例中的FRAME#的撤銷被延遲到時鐘3之後,使因為等待IRDY#的發出。

從上面三個例子,我們也可總結處從裝置終止的一些特點:

1)一旦STOP#信号發出後,它就必須維持其有效狀态直到FRAME#撤銷為止。

2)STOP#信号發出後,FRAME#要盡快撤銷,而FRAME#撤銷後,STOP#也必須在接下來的周期内立即無效。

3)在STOP#有效期間,DEVSEL#也處于有效狀态。

4)從裝置可以決定在STOP#發出之後是否還進行一次資料傳輸,若希望在停止之前進行傳輸,就要使TRDY#在發STOP#的同時有效。

5)從裝置不能再STOP#撤銷後繼續傳輸資料,如果主裝置要想将一被終止的傳輸重新啟動,那麼它就要再稍後的時間内用下一個未傳輸的資料位址來啟動。

6)在從裝置發出STOP#信号之後的資料傳輸不能多于一次。

7)當現行的傳輸被從裝置終止時,主裝置必須撤銷它的REQ#信号,并保持至少兩個PCI周期;若主裝置要繼續完成被終止的傳輸,它必須在撤銷REQ#兩個時鐘周期之後立即重置REQ#有效,否則就失去了機會,隻有等到以後再次使用總線時再發REQ#信号。

總之,綜合前述内容,在PCI總線上的所有傳輸操作中,FRAME#、IRDY#、TRDY#和STOP#這幾個信号一般都遵循下列規則:

1)當STOP#信号有效時,FRAME#應在其後的2~3各時鐘周期内盡快撤銷,但在撤銷時,應置IRDY#為有效。而目标裝置應無條件地保持STOP#的有效狀态直到FRAME#撤銷為止。但是,一旦FRAME#撤銷,緊跟着STOP#也必須取消。

2)任何時鐘前沿,若STOP#和TRDY#同時有效就表示是傳輸的最終周期,IRDY#要在下一時鐘的前沿之前撤銷,也就是表示傳輸的結束。

3)對于被目标終止的對話,主裝置若要繼續完成它,就必須用下一個未傳輸資料的位址來再試通路。

4)一旦從裝置發出了TRDY#或STOP#,它就不能改變DEVSEL#、TRDY#和STOP#信号,直到目前的資料期完成。