林凡淼,劉 鑫,陸曉峰
(中科芯集成電路有限公司,江蘇無錫 214072)
高速串行計算機擴展總線標(biāo)準(zhǔn)(PCIe)是外設(shè)部件互連標(biāo)準(zhǔn)(PCI)的一種,相比于 PCI 應(yīng)用技術(shù)[1],PCIe是比其更快的串行通訊系統(tǒng),從中衍生出了眾多基于PCIe的應(yīng)用技術(shù),如與FPGA 相結(jié)合的PCIe接口DMA 傳輸[2]、高速數(shù)據(jù)采集系統(tǒng)[3]、高速 PCIe密碼卡[4]等。鑒于對PCIe越來越多的需求場合以及更好的熱插拔技術(shù)[5],傳統(tǒng)PCIe一一對應(yīng)的總線結(jié)構(gòu)已滿足不了各處理器之間的數(shù)據(jù)共享和傳輸,因此研究更多接口的“一對多”交換技術(shù)是十分有必要的。
文獻(xiàn)[6-7]和文獻(xiàn)[8]分別采用的是IDT 公司以及PLX 公司的PCIe交換電路芯片,能很好地完成多處理器間高速數(shù)據(jù)的傳輸和數(shù)據(jù)交換,但這些交換電路的設(shè)計以及對芯片的配置較為復(fù)雜,外圍電路采用的芯片不通用或瀕臨淘汰,所以需簡化電路及配置,使外圍器件通用化。本文以國產(chǎn)CPU 為核心,選擇合適的通用器件來搭建外圍電路,設(shè)計了一種PCIe交換電路及簡單有效的測試方法,可滿足多PCIe總線之間高效且丟包率低的數(shù)據(jù)共享和傳輸?shù)男枨蟆?/p>
根據(jù)功能需求,整個電路系統(tǒng)集成在一塊板卡上,該系統(tǒng)包括CPU 模塊、PCIe接口(上下游)模塊、時鐘及復(fù)位模塊、電源模塊、熱插拔及I/O 擴展模塊、基本模式配置模塊、EEPROM 模塊等。各個模塊通力協(xié)作,組成整個電路系統(tǒng),系統(tǒng)架構(gòu)如圖1 所示。
圖1 交換電路系統(tǒng)架構(gòu)
上游為PCIe金手指(定義為P0),下游為2 個PCIe卡槽 (定義為P2 和P4),通過基本模式配置電路對CPU 進(jìn)行模式配置,使得上下游的數(shù)據(jù)進(jìn)行傳遞,為下游的設(shè)備提供數(shù)據(jù)和時鐘信號。下游每個卡槽獨立工作,互不影響,所有端口均可支持X4 通道鏈接,2.5 Gbit/s 和5.0 Gbit/s。PCIe規(guī)范指定每一個交換機端口相當(dāng)于一個虛擬的PCIe-PCIe橋。時鐘分兩種方式給入至CPU,一種由金手指(P0)直接給入,一種由25 MHz 晶振通過配置電路給入,此電路可通過配置輸出不同頻率的差分時鐘信號。熱插拔模塊可檢測設(shè)備的運行狀態(tài)并反饋給CPU,從而避免突然斷電導(dǎo)致數(shù)據(jù)丟失。本文重點介紹幾個重要模塊以及整板PCB的設(shè)計,使得數(shù)據(jù)傳輸高效穩(wěn)定。
本文采用以IDT 公司的89HPES12T3G2 為對標(biāo)的國產(chǎn)CPU 作為核心芯片,該芯片具有高集成度、低功耗、小體積、低成本和外圍電路簡單等特點,廣泛應(yīng)用于服務(wù)器、存儲器、網(wǎng)絡(luò)交換器等設(shè)備,且具有12 通道/3 端口的PCIe-2.0 高性能交換電路,提供1 個PCIe上游端口和2 個PCIe下游端口,十分符合本文的設(shè)計架構(gòu)。其主要特征如下:
(1)具有 12 路 5 Gbit/s PCIe-2.0 通道(具備 8/10 編/譯碼器的SerDes 接口),3 個交換機端口 (其中包括1個X4 上游端口和2 個X4 下游端口),各端口自適應(yīng)支持的鏈接寬度為X4、X2、X1,所有端口支持通道自動翻轉(zhuǎn);
(2)低延遲快速轉(zhuǎn)發(fā)交換架構(gòu),支持最大有效載荷為2048 Byte;
(3)支持通過EEPROM 自動加載配置信息;
(4)支持與PCI 兼容的INTx 中斷及總線鎖定;
(5)下游PCIe端口支持熱插拔;
(6)9 個通用輸入/輸出引腳。
該芯片的PCIe總線輸出采用標(biāo)準(zhǔn)的高速總線硬件設(shè)計規(guī)范,因此為了保證信號完整性及傳輸質(zhì)量,在靠近芯片的PCIe接收總線上要放置隔離直流的電容(一般為 0.1 μF,封裝 0402)。
PCIe 設(shè) 備 與 PCIe 插 槽 都 具 有 REFCLK+ 和REFCLK-信號,PCIe插槽使用這組信號與處理器系統(tǒng)同步。當(dāng)PCIe設(shè)備作為Add-In 卡連接在PCIe插槽時,可以直接使用 PCIe 插槽提供的 REFCLK+ 和REFCLK-信號,也可以使用獨立的參考時鐘,只要這個參考時鐘在(100±300×10-6)MHz 范圍內(nèi)即可。
當(dāng)使用獨立的參考時鐘時,由25 MHz 晶振發(fā)出,經(jīng)時鐘配置芯片可輸出25~200 MHz 的差分時鐘信號,再由PCIe專用時鐘復(fù)制芯片ICS9DB803DI 將其輸入的時鐘復(fù)制輸出至下游的2 個卡槽及CPU,ICS9DB803DI 具有8 路差分時鐘輸出 (低電平有效),復(fù)制范圍為50~400 MHz,且高效穩(wěn)定,滿足該電路功能需求。
本文采用0 Ω 選焊的方法來選擇時鐘輸入方式且當(dāng)選擇使用參考時鐘時,設(shè)定通道4 輸出至P2 槽,通道0 輸出至P4 槽,通道1 輸出至CPU。整個時鐘模塊設(shè)計如圖2 所示。
圖2 時鐘模塊設(shè)計框圖
時鐘配置芯片ICS557-03 工作電壓為3.3 V,具有65 mA 的驅(qū)動能力,通過S0 和S1 的高低電平的配置可輸出25~200 MHz 頻率的差分時鐘,符合設(shè)計要求。
上游的P0 口和下游的P2、P4 口與CPU 分別按照發(fā)送端和接收端的定義進(jìn)行連接,每個接口為8 路(發(fā)送端和接收端各 4 路),另外還有 PRSNT 1~3#、WAKE#和JTAG 等重要信號。
PRSNT1#、PRSNT2#和 PRSNT3# 是 PCIe卡實現(xiàn)熱插拔機制的邊帶信號,上游將PRSNT1# 和PRSNT3#短路連接,PRSNT2#選焊是否與PRSNT1#和PRSNT3#連接,下游的PRSNT2#和PRSNT3#短路接連并上拉,而PRSNT1#被固定連接到地。這3 個信號的金手指長度要比其他信號的金手指長度短一點,以便區(qū)分于其他重要信號。
WAKE#信號為可選信號,可以懸空,也可以由下游兩個卡槽的WAKE# 邏輯與后連接金手指的WAKE#,即WAKE# (金手指)=WAKE# (卡槽1)&&WAKE#(卡槽2)。本文設(shè)計默認(rèn)懸空該引腳,邏輯與方式為選焊。
JTAG 為可選信號,因此上下游的JTAG 引腳全部懸空處理。上下游的發(fā)送端和接收端數(shù)據(jù)線阻抗控制在(85±8.5)Ω,時鐘阻抗控制在(100±10)Ω,采用不同線寬的方法控制。
該模塊設(shè)計主要是為CPU 相關(guān)引腳進(jìn)行配置,PERSTN 為低時,芯片對基本配置引腳狀態(tài)進(jìn)行采樣,以此確定交換機運行的關(guān)鍵參數(shù)。配置的方法眾多,如電阻選焊、SMBus 配置、撥碼開關(guān)等,本文選擇在斷電的情況下采用撥碼開關(guān)和電阻選焊的方式進(jìn)行模式設(shè)置及切換,其中部分關(guān)鍵信號配置如表1 所示。
通過正確配置,CPU 的引腳處于正常狀態(tài),并且上下游接口連接的PCIe設(shè)備的線寬、速率等要求滿足系統(tǒng)需求,可建立正常通信。另外,引腳狀態(tài)及模式可根據(jù)所需來切換,方便測試其他功能。
表1 部分信號取值表
CPU 工作的穩(wěn)定性與電源系統(tǒng)息息相關(guān),因此電源模塊的設(shè)計尤為重要。CPU 共有5 種電源,分別是VDDCORE、VDDI/O、VDDPEA、VDDPEHA、VDDPETA,有模擬電源和數(shù)字電源,所需電壓值也不相同。由于金手指只提供12 V 和3.3 V 電源且3.3 V 電源引腳少,而為了給下游外接設(shè)備減少3.3 V 的壓力,電路系統(tǒng)中其他器件3.3 V 及VDDI/O 電源由12 V 經(jīng)穩(wěn)壓器轉(zhuǎn)成3.3 V 提供,金手指的3.3 V 直接供給于下游卡槽。12 V 轉(zhuǎn)3.3 V 穩(wěn)壓器采用TI 公司的PTH08T240W,可輸出最大10 A 的電流,轉(zhuǎn)換效率高達(dá)96%且輸入輸出電壓值均可調(diào)。
由于CPU 所需電源無時序要求,因此另外4 種電源采用4 片LDO 分別將3.3 V 轉(zhuǎn)換成3 種1.0 V 和1種2.5 V,該LDO 型號為EN5330DC,最大可輸出3 A,轉(zhuǎn)換效率高達(dá)90%,可通過電阻選配來調(diào)節(jié)輸出電壓值,上升時間為1.2 ms,完全滿足CPU 上電需求,只需注意LDO 輸出所配置的電容值[9],該電源模塊設(shè)計架構(gòu)如圖3 所示。
通過該電源方案,將CPU 的模擬電源和數(shù)字電源完全分開,使CPU 內(nèi)部的各個功能模塊的電源分離,這樣既可減輕各個功能模塊的電源壓力,又可以減少串?dāng)_對其工作性能的影響。
圖3 電源模塊設(shè)計架構(gòu)
將各個模塊整合在一塊PCB 板卡上,進(jìn)行PCB設(shè)計,最后PCB 實物如圖4 所示。CPU 模塊預(yù)留插座封裝,可將芯片直接焊接或使用插座。電源模塊共有1個12 V 轉(zhuǎn)3.3 V 穩(wěn)壓器及4 片LDO。時鐘模塊主要由時鐘配置芯片及時鐘復(fù)制芯片組成,撥碼開關(guān)可調(diào)節(jié)頻率?;灸J脚渲媚K斷電時采用撥碼開關(guān)進(jìn)行模式選擇。上游模塊金手指為PCIe X4 寬度,定義為P0。下游模塊有2 個PCIe X4 卡槽,定義為 P2 和 P4。EEPROM 模塊內(nèi)的跳線為可讀寫選擇,低電平為寫保護(hù)。
圖4 整板PCB 實物
整個電路系統(tǒng)集成在一塊PCB 板卡上,先搭建測試環(huán)境,再通過軟件來測試是否實現(xiàn)了設(shè)計功能并達(dá)到傳輸時間及丟包率小于10 ms 和5×10-4的指標(biāo)。
上游為一個X4 通道的PCIe金手指,用于接入宿主處理器系統(tǒng)的PCIe總線,下游設(shè)置兩個X4 通道的PCIe卡槽,能夠插入任意PCIe 2.0 設(shè)備。將PCB 板插入PC 機或其他處理器主板的PCIe 2.0 插槽上,下游卡槽分別插入一個PCIe千兆網(wǎng)卡(82571EB),再將測試系統(tǒng)的網(wǎng)絡(luò)端口與外部測試電腦的網(wǎng)口通過網(wǎng)線全部接入網(wǎng)絡(luò)交換器,構(gòu)成測試環(huán)境,如圖5 所示。
圖5 交換電路PCB 板卡測試環(huán)境
測試環(huán)境搭建完成后,按照如下步驟進(jìn)行測試:
(1) 在宿主處理器系統(tǒng)內(nèi)通過掃描PCI 鏈路獲取PCI 總線上掛載的全部設(shè)備列表,測試硬件掛載是否成功;
(2) 通過外部測試電腦PC2 對宿主處理器系統(tǒng)進(jìn)行網(wǎng)絡(luò)ping 包,統(tǒng)計ping 包的傳輸時間及丟包率,驗證交換電路系統(tǒng)的穩(wěn)定性。
根據(jù)3.1 節(jié)的介紹搭建測試環(huán)境并按測試步驟進(jìn)行測試,使用IDT 公司配套的開發(fā)軟件PCIeBrower進(jìn)行掃描,掃描到的硬件設(shè)備掛載如圖6 所示,表明設(shè)備掛載成功。
掛載成功后進(jìn)行網(wǎng)絡(luò)ping 包來檢測上下游是否互通,結(jié)果如圖7 所示。
由圖6 和圖7 可知,電路系統(tǒng)功能正常,為驗證ping 千兆網(wǎng)卡的穩(wěn)定性,從ping 每一個小包直至大包,運行一段時間后的丟包率及ping 包所需時間這幾個指標(biāo)去體現(xiàn),列舉了量級為 300、2400、9600 和115200,運行30 min 后的傳輸時間及丟包率的情況,測試結(jié)果如表2 所示。
圖6 設(shè)備掛載
圖7 P2 卡槽網(wǎng)絡(luò)ping 包
表2 不同量級下的ping 包性能
在ping 小包時基本上沒有丟包率,傳輸時間也很快,隨著包的量級逐漸增大,傳輸時間增長且有一定的丟包率,但沒有出現(xiàn)較大的延遲(10 ms 以上)及丟包率(小于5×10-4),因為UDP 協(xié)議中在高速數(shù)據(jù)傳輸下會有少量丟包的情況,因此該電路系統(tǒng)能進(jìn)行高速數(shù)據(jù)傳輸且比較穩(wěn)定。P4 卡槽的網(wǎng)絡(luò)ping 包情況與P2類似,不再贅述。綜上所述,該電路系統(tǒng)各項指標(biāo)均在可接受范圍內(nèi),符合設(shè)計要求。
本文設(shè)計了一種PCIe交換電路系統(tǒng)且集成于一塊PCB 板卡上,通過搭建測試環(huán)境,利用對應(yīng)的測試軟件根據(jù)測試步驟進(jìn)行測試,測試結(jié)果表明該設(shè)計可靠穩(wěn)定。從ping 包的情況來看,UDP 協(xié)議在高速數(shù)據(jù)傳輸下會存在一定的丟包率,實驗表明2 個卡槽均只有在ping 大包 (115200) 的情況下有一些延遲及丟包率,但均能滿足傳輸時間小于10 ms 及丟包率小于5×10-4的指標(biāo),符合設(shè)計要求;從設(shè)計合理性和復(fù)雜度的情況來看,所涉及的器件較少且多處作了可選擇設(shè)計,方便按需切換。該設(shè)計可運用在多處理器間PCIe數(shù)據(jù)傳輸?shù)母鱾€場合,但在高速傳輸較大數(shù)據(jù)包時仍有一定的丟包率,因此可繼續(xù)優(yōu)化電路及PCB 布局布線方案,選用性能指標(biāo)更優(yōu)的元器件,從而提高可靠性。