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