林凡淼,雷淑嵐,陸曉峰,張 恒
(中科芯集成電路有限公司,江蘇無錫 214072)
高速串行計算機擴展總線標準(PCIE)是外設(shè)部件互連標準(PCI)的一種,且具有帶寬大、速度快、成本低等特點,因此越來越多的設(shè)備將PCI接口轉(zhuǎn)換成PCIE接口來使用[1],但目前有的服務(wù)器主機上沒有設(shè)計PCI槽位,導(dǎo)致越來越多的PCI設(shè)備無用武之地。鑒于這種大量PCI設(shè)備因接口問題而無法使用的情況,眾多學者研究了數(shù)據(jù)轉(zhuǎn)換技術(shù)及應(yīng)用,如單純的PCI交換技術(shù)[2]、基于PCI和PCIE的XMC/PMC載板設(shè)計[3]、PCIE總線及其交換技術(shù)[4]以及雙向PCI-PCIE橋接電路的驗證技術(shù)[5]等,使PCIE數(shù)據(jù)轉(zhuǎn)換成PCI進行通信,可以在很大程度上節(jié)省投入的時間和成本,避免因接口不對而無法通信的局面,因此研究PCIE轉(zhuǎn)PCI總線高速數(shù)據(jù)轉(zhuǎn)換技術(shù)是很有必要的。
文獻[6-7]均為PCIE轉(zhuǎn)PCI總線的擴展槽,主要針對服務(wù)器主機機箱空間限制及PCI插槽數(shù)量問題做的一種線纜擴展裝置,該裝置無法實現(xiàn)數(shù)據(jù)的轉(zhuǎn)換和交互及對PCI卡槽工作模式的設(shè)置,并且只局限在機箱主板內(nèi)而無法應(yīng)用在其他場合。本文以PI7C9X130芯片為核心,選擇合適的通用器件來搭建外圍電路,設(shè)計PCIE轉(zhuǎn)PCI電路系統(tǒng)及簡單有效的測試方法,配置完成后只需上電即可直接運行,滿足數(shù)據(jù)轉(zhuǎn)換和傳輸?shù)男枨蟆?/p>
根據(jù)功能及測試要求,整個電路系統(tǒng)在一塊PCB板卡上實現(xiàn),包括CPU、PCIE及PCI接口(上下游)模塊、時鐘模塊、電源模塊、CPLD模塊、基本模式配置模塊、EEPROM模塊等,系統(tǒng)架構(gòu)如圖1所示。

圖1 電路系統(tǒng)架構(gòu)
上游為PCIE X4金手指(定義為P3),下游為2個PCI卡槽(定義為P1和P2),通過基本模式配置電路對CPU相關(guān)管腳進行配置,使CPU正常工作,給下游PCI卡槽提供數(shù)據(jù)和時鐘信號,從而可以實現(xiàn)數(shù)據(jù)轉(zhuǎn)換和傳輸。下游的2個卡槽共享時鐘和數(shù)據(jù)且工作在相同的頻率,通過中斷及設(shè)備識別號(IDSEL)信號來區(qū)分。時鐘分2種方式給入CPU,一種由金手指(P3)直接給入,此方式稱為內(nèi)部時鐘輸入且頻率由CPU引腳配置;一種由33 MHz晶振通過CPLD配置時鐘管理芯片后給入,此方式稱為外部時鐘輸入,可輸出不同的時鐘頻率。電源模塊為整個電路系統(tǒng)提供穩(wěn)定且干凈的電源輸入,保證整個系統(tǒng)工作穩(wěn)定且高效。本文重點介紹幾個重要模塊的設(shè)計,模塊之間相互配合,使得PCIE轉(zhuǎn)PCI的數(shù)據(jù)轉(zhuǎn)換和傳遞高速、高效且穩(wěn)定。
本文采用Pericom公司的橋芯片PI7C9X130作為核心處理單元,該芯片具有高集成度、低功耗、小體積、低成本和外圍電路簡單等特點,廣泛應(yīng)用于服務(wù)器、存儲器、網(wǎng)絡(luò)交換器等設(shè)備,擁有眾多工作模式及參數(shù)選擇,因此配置比較靈活方便。該橋芯片可支持下游最多7路PCI端口(本文只需2個)且相互獨立,因此十分符合本文的設(shè)計架構(gòu)。其主要特征如下:
(1)支持PCIE-to-PCI橋規(guī)范1.0版本,PCIE基本規(guī)范1.1版本以及X4鏈接寬度(速率2.5 Gbit/s),最大有效載荷512 Byte;
(2)支持PCI總線標準3.0版本,PCI-to-PCI橋體系結(jié)構(gòu)規(guī)范1.2版本,PCI-X補充協(xié)議2.0a,PCI熱插拔規(guī)范1.1版本,PCI中斷模式;
(3)支持正向或反向、透明橋或非透明橋、內(nèi)部仲裁或外部仲裁、時鐘頻率配置等工作模式;
(4)具有I2C、SM總線、JTAG等接口;
(5)典型功耗僅為1.5 W,且具有輔助電源系統(tǒng),可有效保護芯片避免電流的沖擊影響;
(6)7個通用輸入/輸出引腳。
PI7C9X130配置寄存器完全與現(xiàn)有的PCI橋軟件及防火墻兼容,在原始操作中不需要對PCI橋軟件及防火墻進行更改操作,因此減輕了工作量,應(yīng)用起來更加方便、快捷。
上游的PCIE端只需接金手指的時鐘差分對(REFCLKP/REFCLKN)即可,下游的PCI卡槽端時鐘來源是通過CPU時鐘輸入引腳CLKIN/M66EN(T6)來實現(xiàn),分為內(nèi)部時鐘和外部時鐘,不同的模式(PCI/PCI-X)使用不同的時鐘來源。若要運行在PCI模式則使用內(nèi)部時鐘頻率,通過CLKIN/M66EN(T6)、PCIXCAP(A4)和SEL100(E14)這3個引腳的配置來確定時鐘頻率并輸出至下游卡槽,通過配置可運行在25~66 MHz不等。
若要運行在PCI-X模式則使用外部時鐘電路,通過電路產(chǎn)生的時鐘接入CLKIN/M66EN(T6)即可,且輸出時鐘CLKOUT[0:6]中的某一根必須反饋到CPU的FBCLKIN(B4)引腳。時鐘電路采用33 MHz有源晶振接入ICS公司的可編程時鐘管理芯片ICS307-02,通過CPLD對其配置可輸出需要的時鐘頻率。該芯片通過時序來控制輸出頻率,最高可達200 MHz且在10 ms內(nèi)鎖定,工作高效穩(wěn)定,滿足電路功能需求。
為方便切換,相關(guān)引腳的高低電平配置利用撥碼開關(guān)來實現(xiàn)。下游2個卡槽的時鐘線即CLKOUT0和CLKOUT1需等長且各串聯(lián)1個22Ω電阻來保證信號質(zhì)量。
上游的PCIE接口與CPU的連接有4對差分輸入信號、4對差分輸出信號、1對差分時鐘信號和1個復(fù)位信號,按照定義正確連接即可,在金手指的接收端和差分時鐘信號上必須放上隔離直流的電容(0.1μF,封裝0402)。SMBus接口和EEPROM接口通過0Ω電阻選焊的方式實現(xiàn)。
PRSNT1#、PRSNT2#和PRSNT3#是PCIE卡實現(xiàn)熱插拔機制的邊帶信號,因上游金手指寬度為X4,因此需將PRSNT1#和PRSNT3#短路連接,PRSNT2#可選擇懸空,這3個信號的金手指長度要比其他信號的金手指長度短一點,以便區(qū)分于其他重要信號。
下游的PCI接口與CPU的連接有64 bit數(shù)據(jù)線、控制線、中斷等,2個卡槽除了設(shè)備識別號(IDSEL)、仲裁號(REQ#)、總線使用權(quán)(GNT#)及時鐘線外均相同。2個卡槽的熱插拔機制邊帶信號均作上拉處理。
JTAG為可選信號,本文采用上游的JTAG信號預(yù)留接口而下游的JTAG信號均作上拉處理。為保證信號完整性和信號質(zhì)量,上下游總線均需符合標準的高速總線硬件設(shè)計規(guī)范,因此上游的發(fā)送端和接收端數(shù)據(jù)線阻抗控制在(85±8.5)Ω且等長,時鐘阻抗控制在(100±10)Ω,下游的數(shù)據(jù)線阻抗控制在(65±6.5)Ω且等長。
CPU支持多種配置方式,不同的配置方式有其相對應(yīng)的功能,因此在配置時要反復(fù)檢查是否正確,本文從CPU模式配置及下游PCI/PCI-X模式及其頻率配置兩個方面進行介紹。
本文所需的模式是支持I2C、透明橋、內(nèi)部仲裁、正向(PCIE-to-PCI)、支持熱插拔等,因此只需令相關(guān)引腳置高或置低即可,通過撥碼開關(guān)進行配置,部分重要信號取值如表1所示。
下游卡槽所使用的PCI或PCI-X模式也需要配置,CPU的PCIXUP(B3)和PCIXCAP(A4)引腳通過1 kΩ電阻連接并使用56 kΩ電阻上拉,通過電阻和電容的不同組合方式來確定使用的是哪種模式(PCI模式、PCI-X 66 MHz模式、PCI-X 100 MHz或133 MHz模式)。若運行在PCI-X 100 MHz或133 MHz模式,則由CPU的SEL100(E14)引腳的高低電平來確定,具體電路實現(xiàn)如圖2所示。

表1 部分信號取值表

圖2 下游PCI卡槽模式選擇
通過對CPU的正確配置,整個電路系統(tǒng)工作正常,為數(shù)據(jù)交換提供了穩(wěn)定環(huán)境。
電源模塊分2路電源輸入,一路是5 V穩(wěn)壓電源,該電源接通后經(jīng)過2次LDO芯片[8]將5 V轉(zhuǎn)換為3.3 V和1.8 V供CPLD使用,通過LED燈來判定CPLD是否工作正常,該路電源僅調(diào)試CPLD的功能。另一路為金手指輸入,金手指可提供12 V和3.3 V電源,而下游PCI卡槽需±12 V、3.3 V和5 V,因此3.3 V和12 V由金手指直接獲取,而-12 V則通過電平轉(zhuǎn)換芯片LT1054CDWR將12 V轉(zhuǎn)換得到。CPU有I/O口、內(nèi)核、PLL及模擬和數(shù)字共10種電源,可分為4個功能模塊。為了有效區(qū)分這4個功能模塊,采用BGA封裝且有4路輸出的DC-DC電源芯片LTM4644來進行電壓轉(zhuǎn)換及供給,CPLD控制每路的使能(高電平有效),每路的輸出電流可達4 A且轉(zhuǎn)換效率在90%以上,可通過匹配電阻和啟動電容來調(diào)節(jié)輸出電壓及上電時間(本文默認0.1μF,上電時間大約20 ms),滿足電源功能需求。
由于下游卡槽有3.3 V和5 V兩個電壓環(huán)境(SVIO),因此做了可選擇性設(shè)計即通過0Ω來選擇電壓環(huán)境,這樣可兼容不同電壓環(huán)境的PCI設(shè)備。整個電源模塊設(shè)計架構(gòu)如圖3所示。
通過該電源方案,將CPU及外圍器件的電源根據(jù)模塊不同層層分開,各電源獨立工作,模擬和數(shù)字互不干擾,可大大降低串擾的風險,減少各功能模塊的電源壓力,提高工作效率。

圖3 電源模塊設(shè)計架構(gòu)
將各個模塊整合在一塊PCB上進行設(shè)計,最終實物如圖4所示。在PCB布線方面,從金手指出來的信號走差分對接入PI7C9X130的PCIE接口,隔離直流電容要盡量靠近金手指,出來的時鐘線接入下游的PCI卡槽必須等長,且盡量敷銅把時鐘線保護起來,反饋于FBCLKIN引腳的時鐘線要比接入下游卡槽的時鐘線長大約2.5 mm。

圖4 整板PCB實物
在板厚和板層方面,由于有金手指,所以采用標準板(厚1.6 mm)。該板有較多的差分對信號且PCIE信號為高速信號,因此板層不宜較多(本文為10層),否則會影響數(shù)據(jù)傳輸質(zhì)量。
在方便調(diào)試方面,在板中一些重要的信號或引腳上設(shè)置測試點(尤其是時鐘和電源),方便后續(xù)調(diào)試。對于BGA封裝的元器件盡量多扇出,這樣可以方便飛線進行連接。
上游為X4通道的PCIE金手指,用于接入宿主處理器系統(tǒng)(Linux系統(tǒng))的PCIE總線,下游為2個PCI(64 bit)卡槽,能夠插入任意PCI設(shè)備。將PCB板插入PC機或其他處理器主板的PCIE插槽上,下游卡槽分別插入一個PCI千兆網(wǎng)卡(BCM5704),再將測試系統(tǒng)的網(wǎng)絡(luò)端口與外部測試電腦的網(wǎng)口通過網(wǎng)線全部接入網(wǎng)絡(luò)交換器,構(gòu)成測試環(huán)境,如圖5所示。

圖5 板卡測試環(huán)境
測試環(huán)境搭建完成后,按照如下步驟進行測試:
(1)在宿主處理器系統(tǒng)內(nèi)通過掃描總線上掛載的全部設(shè)備列表,測試硬件掛載是否成功;
(2)下游卡槽在不同工作模式下通過外部測試電腦PC2對宿主處理器系統(tǒng)PC1進行網(wǎng)絡(luò)ping包,統(tǒng)計ping包的傳輸時間及丟包率,驗證電路系統(tǒng)的穩(wěn)定性。
根據(jù)3.1節(jié)的介紹搭建好測試環(huán)境,在PC1上使用lspci命令掃描設(shè)備,掃描到的設(shè)備如圖6所示,可以看到掃描到橋芯片PI7C9X130及網(wǎng)卡BCM5704。
掛載成功后進行網(wǎng)絡(luò)ping包,并通過跳線及撥碼開關(guān)來選擇下游卡槽的不同工作模式,查看其性能指標,在這里網(wǎng)絡(luò)ping包的量級統(tǒng)一使用115200,運行30 min后統(tǒng)計傳輸時間及丟包率,測試結(jié)果如表2所示。

圖6 設(shè)備掛載

表2 下游卡槽不同工作模式下ping包性能
無論是PCI模式還是PCI-X模式均能上下游ping通,且隨著傳輸速率的增加,傳輸時間及丟包率均有一定的增加,但均小于10 ms和5×10-4,滿足設(shè)計指標。因UDP協(xié)議在高速數(shù)據(jù)傳輸過程中會有少量丟包的情況,因此該電路系統(tǒng)的各項指標均在可接受范圍內(nèi)且工作比較穩(wěn)定。P2卡槽的情況與P1類似,不再贅述。將本文與文獻[3]所設(shè)計的PCIE轉(zhuǎn)PCI橋電路系統(tǒng)進行對比(僅列舉幾個重要模塊設(shè)計),如表3所示。

表3 與文獻[3]的電路系統(tǒng)對比
在電路系統(tǒng)設(shè)計方面,本文涉及的元器件較少且設(shè)計更加合理和科學,采用靈活配置的多種方式可在不同工作環(huán)境下選擇;在結(jié)果方面,文獻[3]采用FPGA模擬數(shù)據(jù)存入,最后用示波器來觀察其輸出波形,本文可在不同模式下進行ping包來測試性能,覆蓋面更廣且更接近實際應(yīng)用,因此本文設(shè)計的電路系統(tǒng)具有更好的實際工程價值。
綜上所述,該電路系統(tǒng)達到預(yù)期功能及穩(wěn)定性指標,符合設(shè)計要求。
本文設(shè)計了一種基于PI7C9X130的PCIE轉(zhuǎn)PCI的電路系統(tǒng)且集成于一塊PCB上,通過搭建測試環(huán)境,根據(jù)測試步驟進行測試,測試結(jié)果表明該設(shè)計可靠穩(wěn)定。從網(wǎng)絡(luò)ping包的情況來看,UDP協(xié)議在數(shù)據(jù)包較大且高速傳輸下會存在一定的丟包率,實驗結(jié)果表明隨著數(shù)據(jù)傳輸速率的增加會有些延遲及丟包率,但滿足傳輸時間小于10 ms、丟包率小于5×10-4的設(shè)計指標,符合設(shè)計要求;從設(shè)計復(fù)雜度和合理性情況看,外圍電路較簡單,所需器件較少且多處做了可選擇性設(shè)計,方便按需切換。該設(shè)計可實現(xiàn)PCIE對PCI的數(shù)據(jù)轉(zhuǎn)換且高效穩(wěn)定,但在較苛刻的工作模式下仍有一定的丟包率,因此可繼續(xù)優(yōu)化電路方案及PCB布局布線,選用性能更優(yōu)的元器件,進一步提高可靠性。