《asus pci bus系统构架》由会员分享,可在线阅读,更多相关《asus pci bus系统构架(46页珍藏版)》请在金锄头文库上搜索。
1、PCI BUS系統架構,CLK 時脈訊號(CLOCK),系統訊號,對於所有位於PCI匯流排上的裝置來說,CLK訊號爲一個輸入.它並不是一個反射波訊號.它提供所有交易,包括匯流排仲裁等的時序.PCI裝置的所有輸入都是在CLK訊號的上升邊緣被取樣的.在所有其他的時間裏,所有輸入訊號的狀態都會被忽略.所有PCI時間參數都是相對於CLK訊號的上升邊緣而定的. PCI匯流排上的所有動作都PIC CLK訊號同步.CLK 訊號頻率的笵圍在0MHZ到33MHZ之間.PCI 1.0版規格敍述,所有裝置必須支援16MHZ到33MHZ的操作,並且強力推薦可以降到0MHZ操作的支援,以便於能除錯與低功率的操作.PCI
2、 2.X 版規格則指示,所有PCI裝置必須支援在0MHZ到33MHZ 笵圍內的PCI操作.,CLKRUN# 訊號,系統訊號,對於時脈産生邏輯(Clock Generation Logic,通常是晶片的一部分),CLKRUN#訊號是一個連續的三態輸入/輸出訊號.當時脈正常進行時,時脈産生邏輯會持續驅動CLKRUN#到低態.在時脈被停止(降速)的期間,時脈産生邏輯會監控CLKRUN#,以便認可來自Master與Target裝置要把PCI時脈訊號還原爲全速的請求 . 在時脈産生邏輯反驅動CLKRUN#到高態後,時脈會持續不變的進行至少四個時脈.在反驅CLKRUN#到高態後,時脈産生邏輯必須監控CLK
3、RUN#,以注意下列兩種可能狀況的發生:,系統訊號,狀況1: 在時脈停止(或降速)後,一(或多)個Master可能需要重新啟動時脈,以便請求匯流排的便用權.在發出匯流排請求之前,Master必須請求時脈重新啟動.這需要以驅動CLKRUN#到低態的方式來完成.當時脈産生邏輯偵測到CLKRUN#被其他裝置驅動成低態時,它會啟動(或加速),並且啟動其CLKRUN#輸出驅動器來驅動CLKRUN#成低態. 當Master偵測到CLKRUN#被動成低態,並持續兩個PCI CLK訊號的上升邊緣時,Master就可以將其CLKRUN#輸出驅動器轉變成高阻抗態,系統訊號,狀況2: 當時脈産生邏輯反驅動CLKRU
4、N#到高態,表示它打算停止(或降速)時,時脈必須持續不變的進行至少四個時脈.在這段時間裏,需要連續時脈操作的Target(或Master)(例如:爲了在完成交易後,進行內部管理),可以重新驅動CLKRUN#到低態兩個時脈周期,以請求持續産生CLK. 當時脈産生邏輯取樣到CLKRUN#被重新驅動到低態時,它就會重新驅動CLKRUN#到低態,並繼續産生時脈(而不是停止時脈或將它降速).規格沒有定議在請求連續操作之後,時脈持續進行的時間周期.作者將它解讀爲此周期是系統設計者特定的.,RST# 重置訊號 (Reset Signal),系統訊號,當重置訊號被驅動成低態時,它會強迫所有PCI組態暫存器 M
5、aster及Target狀態機器與輸出驅動器回到初始化狀態.RST#可在不同步於PCI CLK邊緣的狀況下,被驅動或反驅動.RST#的設定也將其他的裝置特定功能初始化,但是這主題超出PCI規格的笵圍.所有PCI輸出訊號必須被驅動成最初的狀態.通常,這表示它們必須是三態的.,AD0:31 AD匯流排 (AD BUS),位元元址/資料匯流排,是用來傳送起始地址.在記憶體或組態的交易期間,此位元元址的解析度是一個雙字組(Double Word)(即地址可被四整除),在讀取或寫入的交易期間,它是一個位元組特定位址.,PAR 同位訊號 (Parity Signal),位元元址/資料匯流排,在地址階段完成
6、後一個時脈,或是所有寫入交易的資料階段期間,在IDRY#被驅動到僭態後一個時脈,由Initiator驅動.所有讀取交易的資料階段期間,在TRDY#被驅動到僭態後一個時脈,它也會被目前所定址的Target驅動.在地址階段完成後的一個時脈,Initiator將PAR驅動到高或低態,以保證位址匯流排AD0:31與四條指令/位元元元組致能線 C/BE#0:3是偶同位(Even Parity).,C/BE#0:3 指令或位元元元組致能匯流排 (Command or Byte Enable Bus),位元元址/資料匯流排,由Initiator驅動,用來表示在目前被定址之Dword 內將要被傳輸的位元組,以
7、及用來傳輸資料的資料路徑. 下表定義在每一個資料階段期間,位元組致能訊號的解釋:,位元元址/資料匯流排,下表定義在每一個資料階段期間,位元組致能訊號的解釋:,位元元址/資料匯流排,FRAME# 周期框架 (Cycle Frame),交易控制訊號,是由目前的Initiator驅動,它表示交易的開始(當它開始被驅動到低態時)與期間(在它被驅動支低態期間)爲了碓定是否已經取得匯流排擁有權,Master必須在同一個PCI CLK訊號的上邊緣,取樣到FRAME#與IRDY#都被反驅動到高態,且GNT#被驅動到低態交易可以是由在目前的Initiator與目前所定址的Target間一到多次資料傳輸組成當In
8、itiator準備完成最後一次資料階段時,FRAME#就會被反驅動到高態,TRDY# 備妥 (Target Ready),交易控制訊號,Target備妥被目前所定址的Target驅動當Target準備完成目前的資料階段(資料傳輸)時,它就會被驅動到低態如果在同一個PCI CLK訊號的上升邊緣,Target 驅動TRDY#到低態且Initiator驅動IDRY#到低態的話,則此資料階段便告完成在讀取期間,TRDY#被驅動表示Target正在驅動有效的資料到資料匯流排上在寫入期間,TRDY#被驅動表示Target準備接收來自Master的資料等待狀態會被插入到目前的資料階段裏,直到取樣到TRDY#
9、與IRDY#都被驅動到低態爲止,IRDY# 備妥 (Initiator Ready),交易控制訊號,Initiator 備妥被目前的Bus Master(交易的Initiator)驅動.在寫入期間,IRDY#被驅動表示Initiator準備接收從目前所定址的Target傳來的資料.爲了確定Master已經取得匯流排擁有權,它必須在同一個PCI CLK訊號的上升邊緣,取樣到FRAME#與IRDY#都被反驅動到高態,且GNT#被驅動到低態.,STOP#,交易控制訊號,Target驅動STOP#到低態,表示希望Initiator停止目前正在進行的交易.,IDSEL 初始化裝置選擇 (Initiali
10、zation Device Select),IDSEL是PCI裝置的一個輸入端,並且在存取某個裝置的組態暫存器期間,它用來選擇晶片.,LOCK#,這是在一個單元(Atomic)交易序列期間(列如,在讀取/修改/寫入操作期間), Initiator用來鎖定(Lock)目前所定址的Target的.,交易控制訊號,DEVSEL# 裝置選擇 (Device Select),裝置選擇是在Target將位址解碼後,由Target驅動的.它當作目前的Initiator,與在擴充匯流排橋接器上的相減解碼器(Subtractive Decoder)的輸入.假如Master起始一個傳輸,並且在6個CLK周期內,未
11、偵測到DEVSEL#被驅動到低態的話,它就必須假設沒有Target回應,或在此位址上沒有Target裝置,然後産生一個Master Abort.,REQ# 要求 (Request),仲裁訊號,表示管理者要求使用匯流排,此爲一對一之訊號,每一管理者都有與其相對應之REQ#訊號.,GNT# 保證 (Grant),表示管理者對匯流排使用之要求已被同意,此爲一對一之訊號,每一管理者都有與其相對應之GNT#訊號.,仲裁演算法確切的用語如下:,仲裁訊號,中央仲裁器必須實作一個公平的演算法,以避免鎖死.公平意味著每一潛在的Bus Master都可以被授予存取匯流排的許可權,這與其他Master的請求無關.公
12、平定義成確保一個具有高優先權的Master不會主宰匯流排,並在較低優先權的Master持續地請求匯流排時,將它們排除在外.然而,這不表示所有的Agent都必須平等地存取匯流排.由於需要公平的演筧法,所以當LOCK#在動作中(假設一資源鎖定),或可快取的記憶體是位於PCI上的時候,不需要去處理特殊狀況.即使系統實作完全的匯流排鎖定,以取代資源鎖定,使用公平演算法的系統仍被認爲是公平的話.不過,假如最早嘗試建立鎖定的交易是以重試(Retry)被終止的話,則仲裁器必須前進到新的Agent上.,有關Bus Parking的實作,有下列兩種方法:,仲裁訊號,方法1 仲裁器可以監控FRAME#與IRDY#
13、以決定在Park匯流排之前,匯流排是否在忙碌中.假設有Master請求江流排,接收到GNT#,並開始一個多資料階段的Bust傳輸.假如它在這個交易完成後,並沒有另一個交易要進行的話,在它驅動FRAME#到低態之際,它會驅動其REQ#到高態.在這種情況下,仲裁器可以設計成認定匯流排是在忙碌中,並因此不反驅動目前Master的授權到高態,而使得匯流排Park在另一個的Master上.,仲裁訊號,方法2 仲裁器不需要監控匯流排是否閑置.假設有Master請求匯流排,接收到GNT#,並且開始一個多資料階段的Burst傳輸.若是它在這個交易完成后,並沒有另一個交易要執行的話,在它驅動FRAME#到低態之
14、際,它還會把驅動其REQ#到高態.在這種情況下,若沒有來自其它Master的任何請求的話,仲裁器可以取走目前Master的GNT#,並將GNT#傳送給它預定要Park匯流排的Master.當目前的Master將其Master等待計時器(Latency Timer)耗盡,並認定它已經失去授權時,它會被迫讓出匯流排,等待兩個時脈周期,然后再次接受匯流排擁有權的仲裁,以便從它停止的那一刻,繼續交易.,PERR# 同位元錯誤 (Parity Error),錯誤報告訊號,由管理者觸發,以表示除了特別周期外(匯流排指令爲0001),之資料同位元錯誤.在所有附加PCI卡上實作PERR#搠腳是必要的.資料同位
15、元錯誤訊號PERR#會在下列環境下,由PCI裝置發出: 1. 如果在寫入資料階段中,PCI Target偵測到資料同位元錯誤的話,則Target必須設定在其PCI組態狀態暫存器(Configuration Status Register)的偵測到同位元錯誤位元(Detected Parity Error Bit),且必須驅動PERR#到低態(假如在其組肪指令存器(Configuration Command Register)的同位元錯誤回應位元(Parity Error Response Bit)被設定爲1的話).然後,它可以繼續交易,或驅動STOP#到低態,提早終止交易.在Burst寫入期間
16、,Initiator負責監控PERR#訊號,以確保在每一個資料項被寫入Target的過程中,沒有被損壞,錯誤報告訊號,2. 如果讀取資料階段間,PCI Initiator偵測到資料同位元錯誤的話,Initiator必須設定在其PCI組態狀態暫存器中的偵測到同位元錯誤位元,且必須驅動PERR#到低態(假如在其組態指令暫存器中同位元錯誤回應位元被設定爲1的話).平臺設計者可以加入其他廠商開發的PERR#監控邏輯,也可以向Initiator報告錯誤.,錯誤報告訊號,爲了確保任執行同位元檢查的PCI裝置都有正確的同位元,所有PCI裝置必須在位址與資料階段的AD 31:0 C/BE#3:0與PAR上産生
17、偶同位.PERR#被實作成Target的輸出,以及在Master上的輸入與輸出.交易的Initiator負責向軟體報告偵測到的資料同位元錯誤.爲此,在寫入資料階段中,它必須監控PERR#,以確認Target是否偵測到資料同位元錯誤.在偵測到同位元錯誤時,Initiator所採取的動作視設計而定.它可以和Target進行重試(Retry),或是選擇終止交易並産生中斷,以便呼叫其裝置特定的中斷處理程式.假如Initiator將故障報告軟體的話,則它還必須設定在PCI組態狀態暫存器中的Master資料同位元錯誤位元(Master Data Parity Error Bit).同一時刻, PERR#只能被一個裝置驅動.,