摘要:當(dāng)前的路由器或交換機(jī)產(chǎn)品都提供多端口千兆以太網(wǎng)接口。采用高性能FPGA設(shè)計(jì)十端口千兆以太網(wǎng)接口, 闡述了系統(tǒng)平臺(tái)的硬件設(shè)計(jì)及主要單元模塊的功能,并對FPGA內(nèi)部程序設(shè)計(jì)的主要思想和數(shù)據(jù)流程作了較詳細(xì)介紹。測試結(jié)果表明,該接口實(shí)現(xiàn)了十路千兆的線速處理的性能要求。
關(guān)鍵詞:千兆以太網(wǎng) 接口 FPGA
隨著千兆以太網(wǎng)越來越廣泛的應(yīng)用于學(xué)校、公司、政府機(jī)構(gòu)等單位中,國內(nèi)外網(wǎng)絡(luò)設(shè)備供應(yīng)商紛紛推出了各種支持千兆的網(wǎng)絡(luò)產(chǎn)品,能提供單端口、雙端口或四端口的千兆以太網(wǎng)線路接口卡,少數(shù)幾種產(chǎn)品能提供八端口的接口。端口數(shù)的增加提高了系統(tǒng)的時(shí)鐘頻率,加大了PCB設(shè)計(jì)、程序設(shè)計(jì)過程中的困難。本文介紹一種十端口千兆以太網(wǎng)接口的設(shè)計(jì)與實(shí)現(xiàn)方法,通過仔細(xì)設(shè)計(jì)和使用高性能現(xiàn)場可編程門陣列(FPGA)實(shí)現(xiàn)了系統(tǒng)功能。
1. 系統(tǒng)硬件設(shè)計(jì)及功能描述
十端口千兆以太網(wǎng)接口主要是為路由器提供與千兆以太網(wǎng)的物理連接。根據(jù)千兆比以太網(wǎng)接口的功能特點(diǎn)和設(shè)計(jì)要求,本設(shè)計(jì)方案采用一片十端口千兆以太網(wǎng)介質(zhì)訪問控制器實(shí)現(xiàn)數(shù)據(jù)鏈路層和物理層間的數(shù)據(jù)交換,使用兩片大容量高性能FPGA實(shí)現(xiàn)介質(zhì)訪問控制器和路由器上層模塊之間數(shù)據(jù)傳送的邏輯控制。該千兆以太網(wǎng)接口的結(jié)構(gòu)示意圖如圖1所示。
圖1 千兆以太網(wǎng)接口的結(jié)構(gòu)示意圖
光電收發(fā)器選用十片日本住友電工(Sumitomo Electric)公司的SCM6444光器件,在接收方向上,光信號經(jīng)SCM6444完成光電轉(zhuǎn)換,把1.25Gbps(吉比特每秒)的電信號送入以太網(wǎng)介質(zhì)訪問控制器PM3388的串行數(shù)據(jù)輸入端,該光器件同時(shí)給PM3388提供數(shù)據(jù)有效指示信號。在發(fā)送方向上,PM3388把1.250Gbps的電信號發(fā)送給SCM6444,完成電光轉(zhuǎn)換后送到以太網(wǎng)上,同時(shí)給SCM6444提供有效數(shù)據(jù)指示信號。
PM3388是加拿大PMC-Sierra公司的高密度千兆比以太網(wǎng)介質(zhì)訪問控制器產(chǎn)品,能提供高性能十端口千兆以太網(wǎng)上行鏈路、千兆比數(shù)據(jù)交換、緩沖中斷功能,內(nèi)含點(diǎn)到點(diǎn)應(yīng)用服務(wù)和網(wǎng)絡(luò)服務(wù)適配器的解決方案。它符合IEEE 802.3z千兆以太網(wǎng)和IEEE802.3x基于幀的流量控制規(guī)范。在接收方向上,光信號經(jīng)過SCM6444芯片轉(zhuǎn)換成為1.25Gbps電信號送到PM3388的差分?jǐn)?shù)據(jù)線上,在PM3388內(nèi)部經(jīng)過數(shù)據(jù)恢復(fù)、串并轉(zhuǎn)換、8B/10B解碼、地址過濾判決、物理包封裝拆除、以太網(wǎng)幀完整性校驗(yàn)及差錯(cuò)校驗(yàn)、緩存與調(diào)度輸出等步驟,從芯片系統(tǒng)側(cè)PL4IO端口以16位、640MHz的數(shù)據(jù)速率發(fā)送到輸入FPGA。在發(fā)送方向上,輸出FPGA把以太網(wǎng)幀以分片的形式調(diào)度輸出到PM3388,在PM3388內(nèi)部經(jīng)過以太網(wǎng)幀的重組緩存、物理包封裝、8B/10B編碼和并串轉(zhuǎn)換等步驟,最后從PM3388的串行數(shù)據(jù)端口輸出到光收發(fā)器SCM6444,經(jīng)電光轉(zhuǎn)換,恢復(fù)為光信號發(fā)送到以太網(wǎng)上。除了數(shù)據(jù)通道,PM3388芯片還與輸出FPGA之間有微處理器接口,輸出FPGA把微處理器對PM3388的指令通過該接口送到PM3388,實(shí)現(xiàn)對PM3388的初始化配置和狀態(tài)監(jiān)測等功能。
輸入和輸出FPGA選用Altera公司的Stratix GX系列的FPGA芯片。該系列FPGA融合了最快的FPGA體系和高性能3.125Gbps收發(fā)器技術(shù),提供由硬IP實(shí)現(xiàn)的收發(fā)器功能,Stratix GX器件包括多達(dá)20個(gè)全雙工收發(fā)器通道,可工作于3.125Gbps;采用通用技術(shù)和一些需要時(shí)鐘數(shù)據(jù)恢復(fù)(CDR)技術(shù)的新興接口接收和發(fā)送數(shù)據(jù),每個(gè)收發(fā)器模塊具有四個(gè)全雙工通道串行、編碼和同步數(shù)據(jù),在外部環(huán)境和Stratix GX器件通道之間傳送。收發(fā)器通道支持多種協(xié)議,包括10Gbit以太網(wǎng)、千兆以太網(wǎng)、InfiniBand和SONET/SDH?紤]到輸入FPGA實(shí)現(xiàn)的功能相對較簡單,所以選用容量較小的EP1SGX25F型號FPGA,以節(jié)省成本,輸出FPGA選用容量較大的EP1SGX40G型號FPGA。輸入輸出FPGA都使用源同步數(shù)據(jù)接口實(shí)現(xiàn)與PM3388之間10Gbps的單工數(shù)據(jù)接口,通過兩個(gè)收發(fā)器模塊實(shí)現(xiàn)與上層設(shè)備20Gbps的冗余數(shù)據(jù)接口。輸入FPGA的附屬電路包括與FPGA相連的一片CAM(Content addressable memory)和一片協(xié)議FIFO(First In First Out),CAM中存儲(chǔ)本路由器所有端口的IP地址,如果接口接收到的IP包的目的地址在CAM中命中,此IP包被寫入FIFO中,送到微處理器處理,否則送到路由器上層模塊處理。輸出FPGA及其附屬電路中包括一片CAM和一片SRAM(Static Random Access Memory),CAM中存儲(chǔ)與接口上十個(gè)端口相連的主機(jī)的IP地址,SRAM中存儲(chǔ)各IP地址對應(yīng)的MAC地址,輸出數(shù)據(jù)包的IP地址送到CAM中查表,查表結(jié)果送到SRAM的地址線上,SRAM再送出該地址對應(yīng)的表項(xiàng)內(nèi)容,IP數(shù)據(jù)包根據(jù)SRAM的查表結(jié)果封裝成以太網(wǎng)幀輸出到對應(yīng)的端口。
本接口電路中的微處理器選用Motorola公司的PowerPC860T,工作在50MHz頻率上,與輸入輸出FPGA之間通過32位的數(shù)據(jù)總線、32位的地址總線和一些控制信號線相連,與PM3388芯片的接口通過輸出FPGA實(shí)現(xiàn)。該微處理器主要有兩方面的作用:一方面作為本接口電路的控制核心,在系統(tǒng)上電時(shí)初始化接口上的PM3388芯片、輸入輸出FPGA、兩片CAM和協(xié)議FIFO,使接口進(jìn)入正常工作狀態(tài)。在系統(tǒng)正常工作時(shí),通過讀取PM3388內(nèi)部各統(tǒng)計(jì)寄存器的數(shù)據(jù)和監(jiān)測PM3388芯片中斷引腳發(fā)出的中斷信號,及時(shí)處理PM3388工作中的異常情況;另一方面該處理器受系統(tǒng)主處理器的控制,通過內(nèi)部以太網(wǎng)與之通信,把接口接收到的協(xié)議數(shù)據(jù)包發(fā)送給主處理器,供主處理器處理,并從主處理器接收協(xié)議數(shù)據(jù)包,通過接口上對應(yīng)的端口發(fā)送出去。在接口正常工作過程中,微處理器還讀取輸入輸出FPGA片上程序的十端口接收包數(shù)、丟包數(shù)、各種協(xié)議包數(shù)、字節(jié)數(shù)、發(fā)送包數(shù)等統(tǒng)計(jì)數(shù)據(jù),并將這些統(tǒng)計(jì)信息發(fā)送給主處理器,供主處理器處理。
2. FPGA邏輯控制功能實(shí)現(xiàn)
輸入FPGA片內(nèi)程序?qū)崿F(xiàn)千兆以太網(wǎng)介質(zhì)訪問控制器PM3388、路由器側(cè)高層設(shè)備和大容量FIFO間數(shù)據(jù)傳送的邏輯控制。輸出FPGA片內(nèi)程序?qū)崿F(xiàn)路由器側(cè)高層設(shè)備和千兆以太網(wǎng)介質(zhì)訪問控制器PM3388間數(shù)據(jù)傳送的邏輯控制。
輸入FPGA從PM3388接收16位寬、640MHz高達(dá)十Gbps的數(shù)據(jù),并且為了有效利用帶寬防止阻塞,PM3388芯片把以太網(wǎng)幀分成較小的數(shù)據(jù)片(最大64字節(jié))按照十端口輪詢調(diào)度交叉發(fā)送給輸入FPGA。因此輸入FPGA片內(nèi)程序首先要完成以太網(wǎng)幀的重組和時(shí)鐘頻率降低的功能,通過調(diào)用Altera公司FPGA程序開發(fā)平臺(tái)Quartus II 中集成的IP硬核完成數(shù)據(jù)到128位、80MHz的轉(zhuǎn)換,可以降低時(shí)鐘頻率。再在FPGA內(nèi)部設(shè)置十個(gè)FIFO緩存收到的數(shù)據(jù)片,完成以太網(wǎng)幀的重組。接下來,F(xiàn)PGA程序通過輪詢調(diào)度把十路FIFO中的以太網(wǎng)幀合成一路輸出到后續(xù)程序模塊,同時(shí)完成去除錯(cuò)誤以太網(wǎng)幀的功能?紤]到要在以太網(wǎng)幀頭部加入內(nèi)部格式控制字和查表目的IP地址,按照最短60字節(jié)以太網(wǎng)幀長計(jì)算,有效帶寬只有2/3,因此后續(xù)模塊需要將時(shí)鐘頻率提高到125MHz。此外,輸入FPGA程序還要實(shí)現(xiàn)與CAM的查表接口,根據(jù)IP地址的命中結(jié)果對數(shù)據(jù)報(bào)文做分路處理:命中的協(xié)議報(bào)文送往協(xié)議FIFO,由微處理器處理;未命中的數(shù)據(jù)報(bào)文拆除以太網(wǎng)幀封裝后送往路由器側(cè)高層設(shè)備處理。送往上層設(shè)備的數(shù)據(jù)使用兩個(gè)收發(fā)器模塊交叉發(fā)送,通過收發(fā)器模塊的四通道綁定實(shí)現(xiàn)20Gbps的冗余數(shù)據(jù)速率。圖2是輸入FPGA程序在Quartus II軟件中重組以太網(wǎng)幀的功能仿真圖,圖中三到五行信號分別是PM3388送到輸入FPGA的時(shí)鐘、帶內(nèi)控制信號和數(shù)據(jù);最下面三行信號是以太網(wǎng)幀重組后輸出的以太網(wǎng)幀頭指示、128位數(shù)據(jù)和以太網(wǎng)幀尾指示。
圖2 以太網(wǎng)幀重組程序仿真圖
輸出FPGA程序?qū)崿F(xiàn)上層設(shè)備和PM3388之間的數(shù)據(jù)發(fā)送控制,數(shù)據(jù)處理流程與輸入FPGA程序相反。輸出FPGA通過兩個(gè)收發(fā)器模塊從路由器上層設(shè)備接收綁定的數(shù)據(jù),合路成128位、125MHz的一路數(shù)據(jù)。輸出FPGA也要實(shí)現(xiàn)與CAM的查表接口,IP報(bào)文的目的IP地址送往CAM查表,命中結(jié)果作為地址送往SRAM,SRAM送出地址對應(yīng)的數(shù)據(jù),該數(shù)據(jù)作為目的MAC地址封裝進(jìn)以太網(wǎng)幀,未命中數(shù)據(jù)報(bào)文通過處理機(jī)接口上交給主處理器處理。在程序的后續(xù)模塊,以太網(wǎng)幀的內(nèi)部格式控制字封裝被拆除,同時(shí)以太網(wǎng)幀按照內(nèi)部格式控制字中的端口標(biāo)記發(fā)送到為對應(yīng)端口設(shè)置的FIFO中,組播包則要發(fā)送到多個(gè)FIFO中,F(xiàn)PGA內(nèi)部設(shè)置十個(gè)FIFO緩存這些以太網(wǎng)幀,通過輪詢調(diào)度把以太網(wǎng)幀拆成數(shù)據(jù)片(64字節(jié)或到包尾)發(fā)送到PM3388。輸出FPGA片內(nèi)程序還實(shí)現(xiàn)接收微處理機(jī)的指令,完成對PM3388的初始化配置和工作狀態(tài)的監(jiān)測及異常處理等功能。
3. 結(jié)論
由此設(shè)計(jì)方案得到十端口千兆以太網(wǎng)接口電路原理圖,繪制PCB圖并制作出印刷電路板,編寫調(diào)試VHDL程序,完成系統(tǒng)功能驗(yàn)證。在由測試儀和路由器上層設(shè)備搭建的測試環(huán)境中,經(jīng)過對此千兆以太網(wǎng)接口的反復(fù)測試證明,該接口實(shí)現(xiàn)了路由器和千兆以太網(wǎng)間20Gbps的數(shù)據(jù)吞吐量,實(shí)現(xiàn)了十路千兆端口完全線速處理的性能要求。由于采用FPGA開發(fā)此接口,大大縮短了開發(fā)時(shí)間,降低了成本,當(dāng)出現(xiàn)新的功能需求時(shí),不必重新設(shè)計(jì)硬件電路,只需修改FPGA程序,實(shí)現(xiàn)系統(tǒng)的升級。此接口在核心或邊緣路由器中具有良好的應(yīng)用前景。
參考文獻(xiàn):





