閱讀160 返回首頁    go 阿裏雲 go 技術社區[雲棲]


1.2 PCI總線的信號定義

PCI總線是一條共享總線,在一條PCI總線上可以掛接多個PCI設備。這些PCI設備通過一係列信號與PCI總線相連,這些信號由地址/數據信號、控製信號、仲裁信號、中斷信號等多種信號組成。

PCI總線是一個同步總線,每一個設備都具有一個CLK信號,其發送設備與接收設備使用這個CLK信號進行同步數據傳遞。PCI總線可以使用33MHz或者66MHz的時鍾頻率,而PCI-X總線可以使用133MHz266MHz或者533MHz的時鍾頻率。

除了RST#INTA~D#PME#CLKRUN#等信號之外,PCI設備使用的絕大多數信號需要與CLK信號同步。其中RST#是複位信號,PCI設備使用INTA~D#信號進行中斷請求。本篇並不關心PME#CLKRUN#信號。

1.2.1 地址和數據信號

PCI總線中,與地址和數據相關的信號如下所示。

(1)      AD[31:0]信號

PCI總線複用地址與數據信號。PCI總線事務在啟動後的第一個時鍾周期傳送地址,這個地址是PCI總線域的存儲器地址或者I/O地址;而在下一個時鍾周期傳送數據[1]。傳送地址的時鍾周期也被稱為地址周期,而傳送數據的時鍾周期也被稱為數據周期。PCI總線支持突發傳送,即在一個地址周期之後,可以緊跟多個數據周期。

(2)      PAR信號

PCI總線使用奇偶校驗機製,保證地址和數據信號在進行數據傳遞時的正確性。PAR信號是AD[31:0]C/BE[3:0]的奇偶校驗信號。PCI主設備在地址周期和數據周期中,使用該信號為地址和數據信號線提供奇偶校驗位。

(3)      C/BE[3:0]#信號

PCI總線複用命令與字節選通引腳。在地址周期中,C/BE[3:0]信號表示PCI總線的命令。而在數據周期,C/BE[3:0]引腳輸出字節選通信號,其中C/BE3C/BE2C/BE1C/BE0與數據的字節3210對應。使用這組信號可以對PCI設備進行單個字節、字和雙字訪問。PCI總線通過C/BE[3:0]#信號定義了多個總線事務,這些總線事務如1?2所示。

1?2 PCI總線事務

C/BE[3:0]#

命令類型

說明

0000

Interrupt Acknowledge

中斷響應總線事務讀取當前掛接在PCI總線上的中斷控製器的中斷向量號。目前大多數處理器係統的中斷控製器都不掛接在PCI總線上,因此這種總線事務很少被使用。

0001

Special Cycle

HOST主橋可以使用Special Cycle事務在PCI總線上,進行信息廣播。

0010

I/O Read

HOST主橋可以使用該總線事務對PCI設備的I/O地址空間進行讀操作。目前多數PCI設備都不支持I/O地址空間,而僅支持存儲器地址空間,但是仍有部分PCI設備同時包含I/O地址空間和存儲器地址空間。

0011

I/O Write

PCI總線的I/O地址空間進行寫操作。

0100

Reserved

保留

0101

Reserved

保留

0110

Memory Read

HOST主橋可以使用該總線事務對PCI設備的存儲器空間進行讀操作。PCI設備也可以使用該總線事務讀取處理器的存儲器空間。

0111

Memory Write

HOST主橋可以使用該總線事務對PCI設備的存儲器空間進行寫操作。PCI設備也可以使用該總線事務向處理器的存儲器空間進行寫操作。

1000

Reserved

保留

1001

Reserved

保留

1010

Configuration Read

HOST主橋可以對PCI設備的配置空間進行讀操作。每一個PCI設備都有獨立的配置空間。在多功能PCI設備中,每一個子設備(Function)也有一個獨立的配置空間。該總線事務隻能由HOST主橋發出,PCI橋可以轉發該總線事務。

1011

Configuration Write

HOST主橋對PCI設備的配置空間進行寫操作。

1100

Memory Read Multiple

HOST主橋可以使用該總線事務對PCI設備的存儲器空間進行多行讀操作,這種操作並不多見。該總線事務的主要用途是供PCI設備使用,讀取主存儲器。這個讀操作與Memory Read操作(C/BE[3:0]0x0110)略有不同,詳見第3.4.5節。

1101

Dual Address Cycle

PCI總線支持64位地址,處理器或者其他PCI設備訪問64PCI總線地址時,必須使用雙地址周期產生64位的PCI總線地址。PCI設備使用DMA讀寫方式訪問64位的存儲器地址時,也可以使用該總線事務。

1110

Memory Read Line

HOST主橋可以使用該總線事務對PCI設備的存儲器空間進行單行讀操作,這種操作並不多見。該總線事務的主要用途是供PCI設備使用,讀取主存儲器。詳見第3.4.5節。

1111

Memory Write and Invalidate

存儲器寫並無效操作,與存儲器寫不同,PCI設備可以使用該總線事務對主存儲器空間進行寫操作。該總線事務將數據寫入主存儲器的同時,將對應Cache行中的數據“使無效”,詳見第3.3.4節。

1.2.2 接口控製信號

PCI總線中,接口控製信號的主要作用是保證數據的正常傳遞,並根據PCI主從設備的狀態,暫停、終止或者正常完成當前總線事務,其主要信號如下。

(1)      FRAME#信號

該信號指示一個PCI總線事務的開始與結束。當PCI設備獲得總線的使用權後,將置該信號有效,即置為低,啟動PCI總線事務,當結束總線事務時,將置該信號無效,即置為高。PCI設備(HOST主橋)隻有通過仲裁獲得當前PCI總線的使用權後,才能驅動該信號。

(2)      IRDY#信號

該信號由PCI主設備(包括HOST主橋)驅動,該信號有效時表示PCI主設備的數據已經準備完畢。如果當前PCI總線事務為寫事務,表示數據已經在AD[31:0]上有效;如果為讀事務,表示PCI目標設備已經準備好接收緩衝,目標設備可以將數據發送到AD[31:0]上。

(3)      TRDY#信號

該信號由目標設備驅動,該信號有效時表示目標設備已經將數據準備完畢。如果當前PCI總線事務為寫事務,表示目標設備已經準備好接收緩衝,可以將AD[31:0]上的數據寫入目標設備;如果為讀事務,表示PCI設備需要的數據已經在AD[31:0]上有效。

該信號可以和IRDY#信號聯合使用,在PCI總線事務上插入等待周期,對PCI總線的數據傳送進行控製。

(4)      STOP#信號

該信號有效時表示目標設備請求主設備停止當前PCI總線事務。一個PCI總線事務除了可以正常結束外,目標設備還可以使用該信號終止當前PCI總線事務。目標設備可以根據不同的情況,要求主設備對當前PCI總線事務進行重試(Retry)、斷連(Disconnect),也可以向主設備報告目標設備夭折(Target Abort)

目標設備要求主設備RetryDisconnect並不意味著當前PCI總線事務出現錯誤。當目標設備沒有將數據準備好時,可以使用Retry周期使主設備重試當前PCI總線事務。有時目標設備不能接收來自主設備較長的Burst操作時,可以使用Disconnect周期,將一個較長的Burst操作,分解為多個Burst操作。當主設備訪問的地址越界時,目標設備可以使用Disconnect周期,終止主設備的越界訪問。

Target Abort表示在數據傳送中出現錯誤。處理器係統必須要對這種情況進行處理。在PCI總線中,出現Abort一般意味著當前PCI總線域出現了較為嚴重的錯誤。

(5)      IDSEL信號

PCI總線在進行配置讀寫總線事務時,使用該信號選擇PCI目標設備。配置讀寫總線事務與存儲器讀寫總線事務在實現上略有不同。在PCI總線中,存儲器讀寫總線事務使用地址譯碼方式訪問外部設備。而配置讀寫總線事務使用“ID譯碼方式”訪問PCI設備,即通過PCI設備的總線號、設備號和寄存器號訪問PCI設備的配置空間。

IDSEL信號與PCI設備的設備號相關,相當於PCI設備配置空間的片選信號,這部分內容將在第2.4.4節中詳細介紹。

(6)      DEVSEL#信號

該信號有效時表示PCI總線的目標設備準備好,該信號與TRDY#信號不同之處在於該信號有效僅表示目標設備已經完成了地址譯碼。目標設備使用該信號通知PCI主設備,其訪問對象在當前PCI總線上,但是並不表示目標設備可以與主設備進行數據交換。而TRDY#信號表示數據有效,PCI主設備可以向目標設備寫入或者從目標設備讀取數據。

PCI總線規範根據設備進行譯碼速度的快慢,將PCI設備分為快速、中速和慢速三種設備。在PCI總線上還有一種特殊的設備,即負向譯碼設備,在一條PCI總線上當快速、中速和慢速三種設備都不能響應PCI總線事務的地址時,負向譯碼設備將被動地接收這個PCI總線事務。如果在PCI主設備訪問的PCI總線上,沒有任何設備可以置DEVSEL#信號為有效,主設備將使用Master Abort周期結束當前總線事務。

(7)      LOCK#信號

PCI主設備可以使用該信號,將目標設備的某個存儲器或者I/O資源鎖定,以禁止其他PCI主設備訪問此資源,直到鎖定這個資源的主設備將其釋放。PCI總線使用LOCK#信號實現LOCK總線事務,隻有HOST主橋、PCI橋或者其他橋片可以使用LOCK#信號。在PCI總線的早期版本中,PCI Agent設備也可以使用LOCK#信號,而目前PCI總線使用LOCK#信號僅是為防止死鎖和向前兼容。LOCK總線事務將嚴重影響PCI總線的傳送效率,在實際應用中,設計者應當盡量避免使用該總線事務。

1.2.3 仲裁信號

PCI設備使用該組信號進行總線仲裁,並獲得PCI總線的使用權。隻有PCI主設備需要使用該組信號,而PCI從設備可以不使用總線仲裁信號。這組信號由REQ#GNT#組成。其中PCI主設備的REQ#GNT#信號與PCI總線的仲裁器直接相連。

PCI主設備的總線仲裁信號與PCI總線仲裁器的連接關係如1?2所示。值得注意的是,每一個PCI主設備都具有獨立的總線仲裁信號,並與PCI總線仲裁器一一相連。而總線仲裁器需要保證在同一個時間段內,隻有一個PCI設備可以使用當前總線。

1.2 PCI總線的信號定義 - maoxingbing - 毛毛蟲的爹

在一個處理器係統中,一條PCI總線可以掛接PCI主設備的數目,除了與負載能力相關之外,還與PCI總線仲裁器能夠提供的仲裁信號數目直接相關。

在一顆PCI總線樹中,每一條PCI總線上都有一個總線仲裁器。一個處理器係統可以使用PCI橋擴展出一條新的PCI總線,這條新的PCI總線也需要一個總線仲裁器,通常在PCI橋中集成了這個總線仲裁器。多數HOST主橋也集成了一個PCI總線仲裁器,但是PCI總線也可以使用獨立的PCI總線仲裁器。

PCI主設備使用PCI總線進行數據傳遞時,需要首先置REQ#信號有效,向PCI總線仲裁器發出總線申請,當PCI總線仲裁器允許PCI主設備獲得PCI總線的使用權後,將置GNT#信號為有效,並將其發送給指定的PCI主設備。而PCI主設備在獲得總線使用權之後,將可以置FRAME#信號有效,與PCI從設備進行數據通信。

1.2.4 中斷請求等其他信號

PCI總線提供了INTA#INTB#INTC#INTD#四個中斷請求信號,PCI設備借助這些中斷請求信號,使用電平觸發方式向處理器提交中斷請求。當這些中斷請求信號為低時,PCI設備將向處理器提交中斷請求;當處理器執行中斷服務程序清除PCI設備的中斷請求後,PCI設備將該信號置高[2],結束當前中斷請求。

PCI總線規定單功能設備隻能使用INTA#信號,而多功能設備才能使用INTB#/C#/D#信號。PCI設備的這些中斷請求信號可以通過某種規則進行線與,之後與中斷控製器的中斷請求信號線相連。而處理器係統需要預先知道這個規則,以便正確處理來自不同PCI設備的中斷請求,這個規則也被稱為中斷路由表,有關中斷路由表的詳細描述見第1.4.2節。

PCI總線在進行數據傳遞過程時,難免會出現各種各樣的錯誤,因此PCI總線提供了一些錯誤信號,如PERR#SERR#信號。其中當PERR#信號有效時,表示數據傳送過程中出現奇偶校驗錯(Special Cycle周期除外);而當SERR#信號有效時,表示當前處理器係統出現了三種錯誤可能,分別為地址奇偶校驗錯,在Special Cycle周期中出現數據奇偶校驗錯,或者係統出現其他嚴重錯誤。

如果PCI總線支持64位模式,還需要提供AD[63:32]C/BE[7:4]REQ64ACK64PAR64這些信號。此外PCI總線還有一些與JTAGSMBCLK以及66MHz使能等信號,本章並不關心這些信號。

最後更新:2017-04-03 16:48:37

  上一篇:go 3.4 預讀機製
  下一篇:go 2.5 非透明PCI橋