在過去的十幾年中,PCI總線得到了廣泛的應用。但是隨著微處理器、存儲器和互連網絡的飛速發展,并行數據傳輸的PCI總線其性能已經越來越不能滿足高性能計算機平衡設計的要求。隨后出現了許多串行互連技術,并行數據傳輸轉為串行數據傳輸已經成為一種趨勢。串行點對點的PCI Express總線" title="Express總線">Express總線以其良好的性能得到廣泛應用。針對其應用,提出一種基于PCI Ex—press總線的接口板" title="接口板">接口板的設計與實現方法。
1 PCI Express總線簡介
Intel在2001年首先提出了替代PCI總線的新總線技術——PCI Express,當時Intel稱之為“3GIO”,意為“第三代l/o標準”。PCI—SIG于2001年、2006年先后提出了PCI Express 1.o/2.0規范。
PCI—Express總線具有點對點串行互聯;雙通道、高帶寬、傳輸速度快;靈活的擴展性;低電源消耗,電源管理功能;支持設備熱撥插和熱交換;使用小型連接,節約空間,減少串攏;在軟件層保持與PCI兼容等特點。
2 PCI Express總線系統結構
PCI Express的基本結構包括根組件(Root Com—plex)、交換器(Switch)、橋(Bridge)和終端設備(End—point)。集成在北橋芯片中的根組件,用于CPU和內存子系統于I/O設備之間的連接。交換器支持在不同終端設備間進行對等通信。橋是指PCI Express到PCI或PCI—X的橋接設備,實現PCI Express—to—PCI和PCI Express—to—PCI—X橋接功能,用來支持傳統PCI/PCI—X設備。
終端設備可以包括多個功能模塊,可以通過其有且僅有的一個上游端El與根設備或Switch連接。通常,終端設備指的是系統的外圍設備,如以太網、USB或圖形設備。如圖1所示。
PCI Express體系結構采用分層設計,從下而上分別是:物理層(Physical Layer)、數據鏈路層(Data Link Layer)和事務層(Transaction Layer)。如圖2所示。
3 PCI Express接口板的硬件設計
PCI Express總線接口的實現大體有2類方法:一類是使用FPGA/CPLD等可編程器件開發邏輯轉換電路。根據實現功能的多少,所需的等效門密度約為5 000~15 000門,可自行編程或是購買已有IP核的產品實現;另一類是使用專用的接口芯片。前者開發成本高、難度大、周期長、測試設備昂貴,但是批量生產成本低,適合大規模全定制或半定制ASIC:的生產。而后者實現了PCI Express總線的物理層、數據鏈路層和事務層的控制邏輯,用戶可以專注在其應用方面的開發,而不必再調試PCI ExpipeSS接口,開發難度大大降低,是實現.PCI Express接口的有效方法。
該設計選用PLX公司的專用接口芯片PEX8311作為橋接芯片來實現PCI Express接口設計。
3.1 PEX8311芯片簡介
PEX8311是PLX公司開發的第一款PCI Express總線到本地總線的接口芯片。它符合PCI Expressl.0a基本規范,并且其本地端寄存器與PLX公司的PCI系列接口芯片基本兼容。
3.1.1 PEX8311的特點
(1)集成了單通道、全雙工2.5 Gb/s傳輸的PCI Exptress端口;
(2)本地總線配置支持8位、16位和32位的總線結構;
(3)支持復合和非復合的操作模式;
(4)高性能DMA數據傳輸支持塊模式,集散模式,循環隊列管理和命令模式;
(5)支持端點和根組件模式;
(6)芯片小型封裝,適合緊湊的電路板設計;
(7)芯片低功耗設計;
(8)3.3 V的I/O并且兼容5 V系統;
(9)串行E。PROM用來可選擇的導入配置,支持接口和Micr’OWire接口;
(10)有8 KB的通配共享RAM。
3.1.2 PEX8311的內部結構
PEX8311作為一種橋接芯片,在PCI Express總線和本地總線之間傳遞信息。它可以作為主控設備去控制2個總線,也可以作為目標設備去響應2個總線。它通過內部的控制邏輯模塊、內部總線狀態機模塊和本地總線狀態機模塊共同控制芯片的數據傳輸。PEX8311的結構如圖3所示。
3.1.3 PEX8311的地址空問及數據傳輸方式
PEX8311的地址空間分為PCI Express地址空間和局部地址空間。前者包括配置寄存器、I/O空間、內存映射I/O(32位)、可預取內存空間(64位);后者包括空間0、空間1、擴展RAM空間。
PEX8311支持3種數據傳輸方式。分別是:主模式(Direct Master)、從模式(Direct Slave)、直接存儲器存取模式(DMA)。
3.2 PCI Express接口板的硬件設計方案
采用PEX8311的接口板設計在邏輯上可分為3個功能模塊:PCI Expr。ess接口部分、E2PROM部分和本地總線部分,如圖4所示。
PEX8311提供完備的PCI Express從設備支持,PCI Express接口部分的信號線可以直接與PCIExpress連接器(俗稱金手指)連接。其中,REFCLK±是一組差分時鐘,它由系統主板提供。2個參考時鐘都要求保持在正常工作頻率100 MHz的±300 ppm之內。PRSNT1/PRSNT2信號線用于檢查附加卡是否插入連接器。此次設計中將PRSNl和PRSNT2相連,這樣當接口板插入到PCI Express連接器時就能進行存在檢測。在此,使用+3.3 V和12 V電源,由于不使用3.3VAUX,將其連一個電容并接地。PCI Express接口部分電路,如圖5所示。
PEX831l提供兩個串行E2PROM接口,在系統上電后讀取配置信息。SPI串行E2PROM是PCI Ex—press的配置E2PROM。它主要用來控制PCI Express的性能。SPI串行E2PROM可以用來預配置片上8 KB共享緩存。MicrOWire串行E2PROM是本地配置E2PROM,它用來控制本地總線行為,并分配合適的地址范圍。
本地總線部分是此次設計中的重點。PEX8311與CPLD相連的部分包括LA地址總線、LAD數據總線、LBE字節使能信號、Lw/R讀寫信號等。
本地總線端的數據使用的是8位數據,在這種模式下LBE1和LBE0提供地址線線[1:O]。CPLD用來控制PEX8311的讀寫操作和數據傳送。
SRAM用于存放用戶的數據和代碼,為程序的運行和保存臨時文件提供空間。SRAM的數據/地址線與PEX8311相連,SRAM的管理由CPLI實現。XRl6C854.是一款通用的串口通信控制器。它帶有128位的FIFOs和獨立的接收/發送FIFO計數器,完成最基本的串行通信功能。其數據/地址由PEX8311提供,讀/寫/片選由CPLD控制。RS 422收發器要求傳輸速率高達10 Mb/s,選擇MAXII公司的M_AXl3087ECPLD如何設計實現PEX8311本地總線控制對整個功能的實現起著至關重要的作用。PEX8311通過本地總線與本地設備進行通信。它支持3種本地總線數據傳輸方式:單周期模式、4周期突發模式、連續突發模式。下面簡要介紹如何用CPLD實現單周期模式。
圖6為PEX8311的單周期讀寫的VHDL語言時序控制狀態機設計。狀態O為空閑狀態,如本地總線請求信號LHOLD被置為1,則轉到狀態1,否則停留在狀態O。狀態1為總線保持狀態,在此狀態下應將本地總線響應信號LHOLDA置為1。如ADS信號為O且LW/R為1轉到狀態2;如ADS信號為l且Lw/R和BLAST都為0轉到狀態3,這次操作為單周期讀。狀態2為單周期寫狀態,在此狀態下要置READY信號為0,以表示寫數據有效,在BLAST為O時轉到狀態3。狀態3為讀寫完成操作狀態,當LHOLD被置為O時,表明PEX831l不再請求本地總線,轉到狀態O,當BLAST為0且LHOLD為1時,表明PEX8311還要進行讀寫數據,則轉到狀態1繼續。
3.3 PCI Express接口板的PCB設計
PCI Express接口板的PCB設計應遵循高速信號布線設計的要求。每個信號面都應有一個完整的地平面作為參考面,這樣的設計使信號走線都有最佳的電流回流途徑,有效地控制串擾、EMC和信號線的阻抗,保證信號質量。PCB板上差分阻抗為100 Q±10 Q,符合PCI Express規范的要求。單端阻抗為50 Q±10 Q。PCI Express接口的物理連接由2對差分線對組成,信號線的數據傳輸率位2.5 Gb/s。所以必須對信號的走線進行嚴格的控制。從PEX8311的輸出信號引腳到PCI Express接口的金手指的走線長度不能超過25.4 mm。差分線對內的2條信號線最好嚴格等長,公差不能超過土0.127 mm,走線途徑基本相同。SRAM的頻率較高,所以要注意布線的長度和路徑,以保證信號的完整性。實驗證明這樣的PCB設計充分滿足PCIExpr。ess接口信號的傳輸要求。
4 PCI Express接口板驅動程序及軟件開發
PCI Express總線與PCI總線在軟件層是完全兼容的,因此PCI Explress接口板驅動程序的開發過程與.PCI設備驅動程序的開發過程是相同的。
在Windows操作系統下,微軟公司提供了DDK開發工具,同時其他公司也提供了開發工具,如VtoolsD,Driverworks,WinDriver等。用DDK進行開發,需要了解操作系統內核知識,開發難度大,周期比較長。用其他公司的開發軟件,不用了解DDK的核心知識,開發驅動相對要快。其中JUNGO公司的WinDriver開發工具,在用戶級(ring 3)進行核心驅動開發,時間短,并且產生的驅動程序穩定高效,支持不同的操作系統,可移植性強。用戶接口函數可采用Microsoft Visual C++6.0進行開發,提供標準的動態庫函數,可供VB,Vc,Delphi等工具開發的應用程序調用。用戶通過用戶接口函數對板卡上的資源進行調度和訪問。該設計采用驅動程序開發工具WinDriver,進行相應模塊的驅動程序開發,實現在 Win—dows操作系統下的安裝和配置。
5 結 語
經測試,該接口板在單字讀寫模式下,執行程序死循環,CPU占用率80%以上,數據傳送速率6 Mb/s;在突發讀寫模式下,執行內存塊復制,CPU占用率80%以上,數據傳送速率60 Mb/s;在DMA突發讀寫模式下,執行直接存儲,CPU占用率10%,數據傳送速率240 Mb/s。通過與普通PCI19054接口板的對比,PCIE。xpreSS接口板具有明顯優勢。這里介紹了PCI Ex-press接口板的軟硬件設計。提供了PCI Express接口板設計模板,為日后軍用CPCI總線功能模板向PCI-ExpreSS總線的過渡提供設計參考。