《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 業(yè)界動態(tài) > 淺談PCI Express體系結(jié)構(gòu)(二)

淺談PCI Express體系結(jié)構(gòu)(二)

2021-07-11
來源:OpenFPGA
關(guān)鍵詞: PCI總線 信號定義

微信圖片_20210711102447.jpg

  PCI總線的信號定義

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

  PCI總線是一個同步總線,每一個設(shè)備都具有一個CLK信號,其發(fā)送設(shè)備與接收設(shè)備使用這個CLK信號進行同步數(shù)據(jù)傳遞。PCI總線可以使用33MHz或者66MHz的時鐘頻率,而PCI-X總線可以使用133MHz、266MHz或者533MHz的時鐘頻率。

  除了RST#、INTA~D#、PME#和CLKRUN#等信號之外,PCI設(shè)備使用的絕大多數(shù)信號需要與CLK信號同步。其中RST#是復(fù)位信號,PCI設(shè)備使用INTA~D#信號進行中斷請求。本篇并不關(guān)心PME#和CLKRUN#信號。

  1.2.1 地址和數(shù)據(jù)信號

  在PCI總線中,與地址和數(shù)據(jù)相關(guān)的信號如下所示。

  (1) AD[31:0]信號

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

 ?。?) PAR信號

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

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

  PCI總線復(fù)用命令與字節(jié)選通引腳。在地址周期中,C/BE[3:0]信號表示PCI總線的命令。而在數(shù)據(jù)周期,C/BE[3:0]引腳輸出字節(jié)選通信號,其中C/BE3、C/BE2、C/BE1和C/BE0與數(shù)據(jù)的字節(jié)3、2、1和0對應(yīng)。使用這組信號可以對PCI設(shè)備進行單個字節(jié)、字和雙字訪問。

  1.2.2 接口控制信號

  在PCI總線中,接口控制信號的主要作用是保證數(shù)據(jù)的正常傳遞,并根據(jù)PCI主從設(shè)備的狀態(tài),暫停、終止或者正常完成當前總線事務(wù),其主要信號如下。

  (1) FRAME#信號

  該信號指示一個PCI總線事務(wù)的開始與結(jié)束。當PCI設(shè)備獲得總線的使用權(quán)后,將置該信號有效,即置為低,啟動PCI總線事務(wù),當結(jié)束總線事務(wù)時,將置該信號無效,即置為高。PCI設(shè)備(HOST主橋)只有通過仲裁獲得當前PCI總線的使用權(quán)后,才能驅(qū)動該信號。

 ?。?) IRDY#信號

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

 ?。?) TRDY#信號

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

  該信號可以和IRDY#信號聯(lián)合使用,在PCI總線事務(wù)上插入等待周期,對PCI總線的數(shù)據(jù)傳送進行控制。

  (4) STOP#信號

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

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

  而Target Abort表示在數(shù)據(jù)傳送中出現(xiàn)錯誤。處理器系統(tǒng)必須要對這種情況進行處理。在PCI總線中,出現(xiàn)Abort一般意味著當前PCI總線域出現(xiàn)了較為嚴重的錯誤。

  (5) IDSEL信號

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

  IDSEL信號與PCI設(shè)備的設(shè)備號相關(guān),相當于PCI設(shè)備配置空間的片選信號,這部分內(nèi)容將在第2.4.4節(jié)中詳細介紹。

 ?。?) DEVSEL#信號

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

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

  (7) LOCK#信號

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

  1.2.3 仲裁信號

  PCI設(shè)備使用該組信號進行總線仲裁,并獲得PCI總線的使用權(quán)。只有PCI主設(shè)備需要使用該組信號,而PCI從設(shè)備可以不使用總線仲裁信號。這組信號由REQ#和GNT#組成。其中PCI主設(shè)備的REQ#和GNT#信號與PCI總線的仲裁器直接相連。

  PCI主設(shè)備的總線仲裁信號與PCI總線仲裁器的連接關(guān)系如圖1?2所示。值得注意的是,每一個PCI主設(shè)備都具有獨立的總線仲裁信號,并與PCI總線仲裁器一一相連。而總線仲裁器需要保證在同一個時間段內(nèi),只有一個PCI設(shè)備可以使用當前總線。

微信圖片_20210711102353.png

  在一個處理器系統(tǒng)中,一條PCI總線可以掛接PCI主設(shè)備的數(shù)目,除了與負載能力相關(guān)之外,還與PCI總線仲裁器能夠提供的仲裁信號數(shù)目直接相關(guān)。

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

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

  1.2.4 中斷請求等其他信號

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

  PCI總線規(guī)定單功能設(shè)備只能使用INTA#信號,而多功能設(shè)備才能使用INTB#/C#/D#信號。PCI設(shè)備的這些中斷請求信號可以通過某種規(guī)則進行線與,之后與中斷控制器的中斷請求信號線相連。而處理器系統(tǒng)需要預(yù)先知道這個規(guī)則,以便正確處理來自不同PCI設(shè)備的中斷請求,這個規(guī)則也被稱為中斷路由表,有關(guān)中斷路由表的詳細描述見第1.4.2節(jié)。

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

  如果PCI總線支持64位模式,還需要提供AD[63:32]、C/BE[7:4]、REQ64、ACK64和PAR64這些信號。此外PCI總線還有一些與JTAG、SMBCLK以及66MHz使能等信號,本章并不關(guān)心這些信號。




電子技術(shù)圖片.png

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。