林凡淼,張 恒,李開杰
(中科芯集成電路有限公司,江蘇無錫214072)
外設(shè)部件互連標(biāo)準(zhǔn)(Peripheral Component Interconnect,PCI)總線是微型計算機中微處理器/存儲器與外圍控制部件、擴展卡之間的互連接口,因其高性能、低成本和開放性等優(yōu)點已成為微型計算機事實上的總線標(biāo)準(zhǔn),并且在嵌入式計算機和工業(yè)控制計算機方面有廣泛的應(yīng)用前景[1]。在嵌入式或PC機系統(tǒng)中,PCI外設(shè)卡槽的預(yù)置數(shù)量已經(jīng)限定了可直接加載PCI設(shè)備的最大數(shù)量,無法滿足需要靈活配置PCI總線結(jié)構(gòu)的應(yīng)用測試場景,因此研究PCI總線數(shù)據(jù)交換技術(shù)是十分必要的。
文獻(xiàn)[2-3]均為基于橋芯片PCI9054及FPGA設(shè)計的三通道數(shù)據(jù)采集卡及主模式的測試板卡,通過FPGA對PCI9504的配置及相關(guān)的外圍電路,保證了數(shù)據(jù)交換的實時性及完整性,提高了高速數(shù)據(jù)傳輸時PCI總線的利用率,但電路涉及到的元器件較多且設(shè)計較為復(fù)雜,運行模式也比較單一,因此需改進(jìn)。另外,采用其他模式的PCI總線數(shù)據(jù)交換的應(yīng)用也越來越多,比如非透明PCI橋[4-5]及基于PCI6254的緊湊型外設(shè)部件互連標(biāo)準(zhǔn)(Compact Peripheral Component Interconnect,CPCI)系統(tǒng)[6],主要是協(xié)調(diào)兩條PCI總線之間的交通,監(jiān)視總線上啟動的所有交易,并決定是否將交易傳送到另一條PCI總線,這使得PCI總線的利用率較低。為了提高PCI總線數(shù)據(jù)交換的效率及保證不同PCI設(shè)備之間數(shù)據(jù)的交互性和同步性,本文以PCI6540為核心,選擇合適的通用器件來搭建外圍電路,設(shè)計了PCI總線交換電路系統(tǒng)及簡單有效的測試方法,配置完成后只需上電即可直接運行,滿足PCI總線高速數(shù)據(jù)交換的需求。
根據(jù)功能及測試要求,整個電路系統(tǒng)集成在一塊PCB上,包括PCI6540、PCI金手指及卡槽(上下游)模塊、時鐘模塊、電源模塊、復(fù)雜可編程邏輯器件(Complex Programming Logic Device,CPLD)及相關(guān)電路、模式配置模塊、帶電可擦可編程只讀存儲器(Electrically Erasable Programmable Read Only Memory,EEPROM)模塊等,系統(tǒng)架構(gòu)如圖1所示。

圖1 電路系統(tǒng)架構(gòu)
上游為PCI金手指(定義為P),下游為三個PCI卡槽(定義為S1,S2,S3),通過模式配置電路對CPU進(jìn)行配置,給下游PCI卡槽提供數(shù)據(jù)和時鐘信號,從而可以進(jìn)行數(shù)據(jù)傳輸。下游的三個卡槽具有相同的時鐘頻率,且通過中斷及設(shè)備識別號(Initialization Device Select,IDSEL)信號來區(qū)分。時鐘分兩種方式給入CPU:一種來源于金手指;一種來源于時鐘模塊電路,經(jīng)CPLD配置可輸出不同的時鐘頻率,此方式稱為外部時鐘輸入。EEPROM模塊電路用于存儲啟動信息,上電后直接讀取。電源模塊為整個電路系統(tǒng)提供穩(wěn)定且干凈的電源輸入,CPLD控制電源芯片的使能,保證整個系統(tǒng)工作穩(wěn)定且高效。
因PCI總線協(xié)議較復(fù)雜,因此接口電路實現(xiàn)較為困難,使用專用芯片可以將復(fù)雜的PCI總線接口轉(zhuǎn)換為相對簡單的用戶接口。本文采用PLX公司的橋芯片PCI6540作為核心CPU,該芯片具有高集成度、低功耗、小體積、低成本和外圍電路簡單等特點,廣泛應(yīng)用于服務(wù)器、存儲器、網(wǎng)絡(luò)交換器等設(shè)備,擁有眾多工作模式及參數(shù)選擇,因此配置比較靈活方便,不用考慮PCI芯片的內(nèi)部結(jié)構(gòu)[7]。
PCI6540具有三種工作模式,分別是透明橋模式(Transparent Mode)、非透明橋模式(Non-Transparent Mode)和通用模式(Universal Mode)。在透明橋模式下,PCI橋中不存在私有寄存器,操作系統(tǒng)不需要為PCI橋提供專用的驅(qū)動程序,橋下游接口上的所有設(shè)備對主接口的主機(HOST)主橋是透明的,且均由上游主橋進(jìn)行配置管理,該模式通常用于PCI卡槽的擴展及多設(shè)備間的數(shù)據(jù)交換。在非透明橋模式下,PCI橋中允許存在私有寄存器,其作用在于連接兩個獨立的處理器域,下游接口的資源和設(shè)備對上游主橋不可見,允許下游接口存在HOST主橋并獨立配置和控制其子系統(tǒng)。上下游端口的時鐘完全獨立,地址也相互獨立,該模式通常用于嵌入式智能IO板卡或者連接兩個獨立的處理器域。透明橋和非透明橋工作架構(gòu)如圖2所示。

圖2 透明模式和非透明模式工作架構(gòu)
PCI插槽分為系統(tǒng)槽和外設(shè)槽,對應(yīng)插卡為系統(tǒng)子板及外設(shè)子板。子板上用于橋接背板PCI總線采用PCI-to-PCI橋,系統(tǒng)板采用透明橋,外設(shè)板則采用非透明橋。隨著PCI的應(yīng)用推廣,子板功能可以隨著插入卡槽的位置自適應(yīng)其功能是系統(tǒng)板還是外設(shè)板,由于該功能的推行,通用橋模式應(yīng)運而生。通用模式指在PCI應(yīng)用中,PCI橋的透明或非透明模式由插入具體的位置決定,即通用透明橋模式和通用非透明橋模式,從本質(zhì)講,通用模式是PCI應(yīng)用場景下兩種基本模式的自適應(yīng)轉(zhuǎn)換。
PCI6540時鐘輸入分金手指和外部時鐘電路兩種方式。當(dāng)采用金手指輸入方式時可直接接入PCI6540(P_CLKIN);采用外部時鐘電路輸入方式時,由33 MHz有源晶振接入ICS公司的可編程時鐘管理芯片ICS307,通過CPLD對其配置可輸出需要的時鐘信號接入PCI6540(OSCIN),該芯片通過時序來控制輸出頻率,最高可達(dá)200 MHz且在10 ms內(nèi)鎖定。PCI6540輸出的時鐘信號(S_CLK0)接入專用時鐘芯片ICS9112AF,該芯片具有去毛刺、整形及保證信號完整性等特點,可將時鐘信號復(fù)制4路輸出,其中3路分別用于下游PCI卡槽,1路用于反饋給PCI6540(S_CLKIN)。
另外還需接入?yún)⒖紩r鐘至PCI6540,用于選定上下游的時鐘頻率,選用14.318 MHz有源晶振即可。時鐘模塊設(shè)計架構(gòu)如圖3所示??紤]到時鐘信號易受干擾,在每個時鐘信號上串聯(lián)一個33 Ω匹配電阻來保證信號質(zhì)量。

圖3 時鐘模塊設(shè)計架構(gòu)
上游金手指和下游卡槽與PCI6540的連接有64位數(shù)據(jù)線和控制線(下游高32位必須做上拉處理,低32位和上游則不需要),按照定義正確連接即可。下游3個卡槽除了IDSEL、仲裁號(Request#,REQ#)、總線使用權(quán)(Grant#,GNT#)及時鐘線外均相同。PRSNT1#和PRSNT2#是PCI實現(xiàn)熱插拔機制的邊帶信號,在這里上游和下游全部接入CPLD。JTAG為可選信號,本文采用上游的JTAG信號預(yù)留接口而下游的JTAG信號均作上下拉處理。
PCI總線含有INTA#、INTB#、INTC#及INTD# 4根中斷信號,PCI設(shè)備使用這些中斷信號向處理器發(fā)出中斷請求。這些中斷信號屬于邊帶信號,PCI總線規(guī)范沒有明確規(guī)定在一個處理器系統(tǒng)中如何使用這些信號,屬于可選信號且只能在處理器內(nèi)部使用,PCI橋不會處理這些中斷信號,因此上游的中斷信號直接移位連接下游卡槽即可。
上下游總線均需符合標(biāo)準(zhǔn)的高速總線硬件設(shè)計規(guī)范,因此上下游的數(shù)據(jù)線阻抗控制在(65±6.5)Ω且等長。
PCI6540支持多種配置方式,不同的配置方式有其相對應(yīng)的功能,因此在配置時要反復(fù)檢查是否正確,避免因配置錯誤而導(dǎo)致工作異常。
本文采用電阻選焊的方式進(jìn)行配置,所需的模式支持透明橋、內(nèi)部仲裁、金手指時鐘輸入、64位總線設(shè)備、自動使能上下游鎖相環(huán)(Pase Lock Loop,PLL)等,因此只需令相關(guān)引腳置高或置低即可,部分重要引腳取值如表1所示。

表1 部分引腳取值表
其余部分引腳可接入CPLD,方便狀態(tài)切換,選用Altera公司的MAX V系列作為配置管理芯片,其型號為EP5M2210ZF256C5N。通過對PCI6540的正確配置,整個電路系統(tǒng)工作在預(yù)定狀態(tài),為數(shù)據(jù)交換提供了穩(wěn)定環(huán)境。
電源模塊設(shè)計采用階梯供電方式,CPLD芯片先上電、PCI6540后上電的電源管理時序,兩個芯片的供電采用單獨供電的方式,產(chǎn)生3.3 V和1.8 V電壓,CPLD完成上電后再使能PCI6540的供電模塊輸出相應(yīng)的電壓源??紤]到PCI6540及CPLD的最大功耗均不會超過1 W,采用低壓差線性穩(wěn)壓器(Low Dropout Regulator,LDO)產(chǎn)生低紋波、高動態(tài)、輸出電流可達(dá)3 A及可控的3.3 V及1.8 V,只需注意輸出電容值[7]。
整板的5 V電源輸入方式有兩種,一種是可直接接入直流穩(wěn)壓電源,另一種是采用金手指上的5 V電源。由于PCI6540有I/O、core、上下游模擬電壓等多種電源種類,因此采用分開供電的方式,即模擬電源單獨使用LDO并用磁珠進(jìn)行隔離。金手指中的+12 V、-12 V、5 V、3.3 V以及3.3 V輔助(Auxiliary,AUX),各電源直接連接到下游卡槽,這樣可減少下游PCI設(shè)備的供電壓力。整個電源模塊設(shè)計架構(gòu)如圖4所示。

圖4 電源模塊設(shè)計架構(gòu)
通過該電源方案,將PCI6540的電源根據(jù)模塊不同層層分開,模擬和數(shù)字互不干擾,可大大降低串?dāng)_的風(fēng)險,減少各功能模塊的電源壓力,提高工作效率。
將各個模塊整合在一塊PCB上,進(jìn)行PCB設(shè)計,最終實物如圖5所示。在PCB布局方面,芯片與金手指的物理距離不宜過大,否則會影響信號質(zhì)量;在PCB布線方面,數(shù)據(jù)線長度要小于38.1 mm且等長,時鐘線不宜靠近其他信號線且在兩側(cè)及PCB背面敷銅隔離,總長度小于63.5 mm。

圖5 整板PCB實物
在板厚和板層方面,由于有金手指,所以采用標(biāo)準(zhǔn)板厚1.6 mm。該板有較多的PCI高速信號,因此板層不宜較多(本文為10層),否則會影響數(shù)據(jù)傳輸質(zhì)量。在調(diào)試方面,重要信號增加測試點以方便測試。
因現(xiàn)有主板上沒有64位PCI卡槽,需將高速串行計算機擴展總線(Peripheral Component Interconnect Express,PCIE)轉(zhuǎn)PCI過渡,選用CPU為PI7C9X130的板卡來實現(xiàn)PCIE轉(zhuǎn)PCI的過渡。將該板卡插入PC1主板(一級設(shè)備),再將PCI6540板卡的金手指插入PCI卡槽(二級設(shè)備),下游卡槽分別插入一個PCI千兆網(wǎng)卡(BCM5704),再將測試系統(tǒng)的網(wǎng)絡(luò)端口與外部測試電腦的網(wǎng)口通過網(wǎng)線全部接入網(wǎng)絡(luò)交換器來構(gòu)成測試環(huán)境,板卡測試環(huán)境如圖6所示。

圖6 板卡測試環(huán)境
測試環(huán)境搭建完成后,按照如下步驟進(jìn)行測試:
(1)在宿主處理器系統(tǒng)內(nèi)掃描一級、二級設(shè)備,測試系統(tǒng)是否識別;
(2)通過外部測試電腦PC2對宿主處理器系統(tǒng)PC1進(jìn)行不同量級的網(wǎng)絡(luò)ping包,統(tǒng)計ping包的傳輸時間及平均丟包數(shù),驗證電路系統(tǒng)的穩(wěn)定性。
根據(jù)3.1節(jié)的介紹搭建好測試環(huán)境,在PC1上使用lspci命令掃描設(shè)備,掃描到的設(shè)備如圖7所示,可以看到掃描到一級設(shè)備(PI7C9X130)、二級設(shè)備(PCI6540)及網(wǎng)卡BCM5704。

圖7 設(shè)備掛載
掛載成功后進(jìn)行網(wǎng)絡(luò)ping包,為驗證穩(wěn)定性,逐漸增大數(shù)據(jù)包的量級來測試其性能指標(biāo),在這里列舉的量級分別為300、2400、9600和115200,運行30 min后統(tǒng)計傳輸時間及平均丟包數(shù),測試結(jié)果如表2所示。

表2 不同量級下ping包性能
無論是小包還是大包均能上下游ping通,且隨著數(shù)據(jù)包量級的增加,傳輸時間及平均丟包數(shù)均有一定程度的增加,但均在可接受范圍內(nèi)(無較長傳輸時間及較多的丟包),滿足設(shè)計指標(biāo)。因用戶數(shù)據(jù)包(User Datagram Protocol,UDP)協(xié)議在高速數(shù)據(jù)傳輸過程中會有少量丟包的情況,因此該電路系統(tǒng)的各項指標(biāo)均在可接受范圍內(nèi)且工作比較穩(wěn)定。S2和S3卡槽的情況與S1類似,不再贅述。綜上所述,該電路系統(tǒng)達(dá)到預(yù)期功能及穩(wěn)定性指標(biāo),符合設(shè)計要求。
本文設(shè)計了一種基于PCI6540的PCI交換電路系統(tǒng)且集成于一塊PCB上,通過搭建測試環(huán)境,根據(jù)測試步驟進(jìn)行測試,測試結(jié)果表明該設(shè)計可靠穩(wěn)定。從網(wǎng)絡(luò)ping包的情況來看,UDP協(xié)議在數(shù)據(jù)包較大且高速傳輸下會有丟包的情況,實驗結(jié)果表明隨著數(shù)據(jù)包的量級增加會有些延遲及丟包,但滿足傳輸時間小于15 ms、平均丟包數(shù)小于20的設(shè)計指標(biāo),符合設(shè)計要求;從設(shè)計復(fù)雜度和合理性情況來看,外圍電路較簡單,所需器件較少且多處做了可選擇性設(shè)計,方便按需切換。該設(shè)計可實現(xiàn)PCI數(shù)據(jù)交換且高效穩(wěn)定,但在較大包數(shù)據(jù)傳輸下仍有一定的丟包,因此可繼續(xù)優(yōu)化電路方案及PCB布局布線,選用性能更優(yōu)的元器件,從而提高可靠性。