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