??? 摘? 要: 根據(jù)交換式路由器的設(shè)計(jì)要求、結(jié)構(gòu)功能及千兆比以太網(wǎng)的具體特點(diǎn),使用介質(zhì)訪問(wèn)控制子層的控制芯片XMACII和大容量的FPGA,完成了千兆比以太網(wǎng)接口的設(shè)計(jì)與實(shí)現(xiàn)。?
??? 關(guān)鍵詞: 千兆比以太網(wǎng)接口? XMACII? FPGA
?
隨著寬帶網(wǎng)絡(luò)的普及和網(wǎng)絡(luò)應(yīng)用的多業(yè)務(wù)需求,特別是基于視頻多媒體等的大流量網(wǎng)絡(luò)業(yè)務(wù)的增多,傳統(tǒng)的路由器越來(lái)越成為高速網(wǎng)絡(luò)的瓶頸,。由于路由器各個(gè)端口之間是通過(guò)共享總線相連,路由器的端口速率比較低,因而限制了轉(zhuǎn)發(fā)IP分組的能力,。傳統(tǒng)的路由器在運(yùn)行路由協(xié)議、維護(hù)路由表等方面都難以滿足現(xiàn)代IP通信網(wǎng)絡(luò)的要求。?
交換式路由器是采用新型交換結(jié)構(gòu)來(lái)實(shí)現(xiàn)分組路由轉(zhuǎn)發(fā)功能的下一代路由器。交換式路由器可以增加鏈路帶寬的利用率;簡(jiǎn)化協(xié)議的復(fù)雜度;同時(shí),還可以減輕網(wǎng)管的負(fù)擔(dān);在采取一定的措施后,路由器也可以提供一定程度的服務(wù)質(zhì)量保證。為提高路由器轉(zhuǎn)發(fā)分組的速度和能力,路由器的各端口之間采用交換結(jié)構(gòu)進(jìn)行互連,這樣路由器的端口速率大大提升,可以與ATM交換機(jī)相比,滿足了日益增長(zhǎng)的各種網(wǎng)絡(luò)服務(wù)的要求,。?
交換式路由器被設(shè)計(jì)成能夠在各種不同類型的物理網(wǎng)絡(luò)之間完成路由功能。千兆比以太網(wǎng)是高速率的物理網(wǎng)絡(luò),具有很多與其他物理網(wǎng)絡(luò)差別較大的物理特性,因而需要專用的接口電路以屏蔽千兆比以太網(wǎng)的具體物理特性,向上提供標(biāo)準(zhǔn)的數(shù)據(jù)交換接口,實(shí)現(xiàn)路由器的數(shù)據(jù)鏈路層和千兆比以太網(wǎng)間的數(shù)據(jù)傳送,。?
千兆比以太網(wǎng)接口采用了介質(zhì)訪問(wèn)子層的訪問(wèn)控制器XMACII完成介質(zhì)訪問(wèn)子層的功能,采用大容量的FPGA實(shí)現(xiàn)邏輯控制判決的功能,實(shí)現(xiàn)了路由器與千兆比以太網(wǎng)間的高速數(shù)據(jù)傳送,。?
1 介質(zhì)訪問(wèn)控制子層的控制芯片——XMACII?
XMACII是Vitesse公司的下一代千兆比以太網(wǎng)介質(zhì)訪問(wèn)控制器產(chǎn)品,能提供高性能單片千兆比以太網(wǎng)上行鏈路、千兆比數(shù)據(jù)交換,、緩沖中繼,內(nèi)含點(diǎn)到點(diǎn)應(yīng)用服務(wù)和網(wǎng)絡(luò)服務(wù)適配器的解決方案,。它符合IEEE 802.3z千兆比以太網(wǎng)和GMII(1000BASE-T)標(biāo)準(zhǔn)規(guī)范和IEEE802.3x基于幀的流量控制規(guī)范。?
XMACII千兆比以太網(wǎng)控制器為3.3V的CMOS芯片,240引腳的PQFP封裝,。XMACII的內(nèi)部結(jié)構(gòu)圖如圖1所示,。?
?
?
XMACII片內(nèi)集成了發(fā)送和接收FIFO,以及8B10B PCS譯碼/解碼器,。32位數(shù)據(jù)寬度的8KB接收FIFO和4KB發(fā)送FIFO緩沖高速的數(shù)據(jù),總線支持?jǐn)?shù)據(jù)突發(fā),確保2000Gbit的雙工帶寬。FIFO接口能夠由硬件控制,不需要占用CPU資源,。PCS包含兩個(gè)用于物理層訪問(wèn)的接口:FC-0和GMII,。具有8B10B譯碼/解碼器的FC-0接口提供了更加可靠的數(shù)據(jù)傳輸,因此采用了將FC-0接口直接連接到10bit FC-0 1.25Gbit以太網(wǎng)的收發(fā)器(SERDES)的方案,GMII接口沒(méi)有使用。?
??? XMACII包含67個(gè)配置寄存器和53個(gè)統(tǒng)計(jì)計(jì)時(shí)器,這些寄存器通過(guò)管理寄存器和控制接口(Management Registers and Control Interface)來(lái)訪問(wèn),。XMACII通過(guò)設(shè)置這些管理寄存器的值實(shí)時(shí)地對(duì)千兆比以太網(wǎng)的訪問(wèn)進(jìn)行控制,如地址匹配,、字節(jié)順序、數(shù)據(jù)傳送可選項(xiàng)的設(shè)置,以及流量控制,、VLAN的設(shè)置和自回環(huán)的控制等,。XMACII還隨時(shí)統(tǒng)計(jì)發(fā)送和接收的狀態(tài)數(shù)值,并及時(shí)更新SNMP和RMON管理計(jì)數(shù)器組,以提供網(wǎng)絡(luò)傳輸?shù)母鞣N狀態(tài)信息。全套以太網(wǎng)MIB狀態(tài)計(jì)數(shù)器與IETF和ISO定義相符,。?
發(fā)送數(shù)據(jù)的時(shí)候,主機(jī)需先檢查XMACII的XmtrRdy信號(hào),有效時(shí)則使TxPktValid信號(hào)有效,以表明傳輸?shù)絏MACII的包的開始,。該信號(hào)一直有效直至包的發(fā)送結(jié)束。該信號(hào)有效后,或隨著它的有效,主機(jī)驅(qū)動(dòng)HostTxData數(shù)據(jù)線(31:0)和適當(dāng)?shù)腡xByteEn(3:0)信號(hào)及TxValid信號(hào),。在XmtrRdy信號(hào)仍然有效時(shí),當(dāng)TxValid信號(hào)有效,XMACII會(huì)在HOST_CLK時(shí)鐘的上升沿鎖定HostTxData數(shù)據(jù)線上的數(shù)據(jù),。?
主機(jī)接收數(shù)據(jù)幀之前,需要先使HostRcvRdy信號(hào)有效,而后XMACII使RxPktValid有效,以表明發(fā)送給主機(jī)的數(shù)據(jù)幀開始傳送。一旦這個(gè)信號(hào)申明主機(jī)要在HOST_CLK信號(hào)的上升沿鎖住數(shù)據(jù)線HostRxData(31:0)上XMACII提交的數(shù)據(jù),信號(hào)RcvValid表明數(shù)據(jù)線上的數(shù)據(jù)是有效數(shù)據(jù),。RxPktValid信號(hào)一直有效,直到當(dāng)前數(shù)據(jù)幀的最后一個(gè)字傳至主機(jī),。?
XMACII的REF_CLK輸入的125MHz時(shí)鐘用于內(nèi)部狀態(tài)機(jī),對(duì)時(shí)鐘的邊沿要求較高。實(shí)現(xiàn)時(shí)使用時(shí)鐘芯片先對(duì)125MHz的時(shí)鐘進(jìn)行整形,然后輸入,。管理寄存器和控制接口的讀寫過(guò)程中也要注意,NPCS信號(hào)在NPRdy信號(hào)有效后必須繼續(xù)保持有效兩個(gè)時(shí)鐘周期以上,這樣才能使數(shù)據(jù)正確地寫入和讀出,。?
2 設(shè)計(jì)方案?
根據(jù)千兆比以太網(wǎng)接口的功能特點(diǎn)和設(shè)計(jì)要求,本設(shè)計(jì)方案采用了千兆比以太網(wǎng)的介質(zhì)訪問(wèn)控制器XMACII實(shí)現(xiàn)在數(shù)據(jù)鏈路層和物理層間的數(shù)據(jù)交換。路由器側(cè)可以通過(guò)讀寫XMACII寄存器對(duì)數(shù)據(jù)傳送進(jìn)行控制并得到相關(guān)的統(tǒng)計(jì)信息,。?
XMACII使用10bit FC-0接口規(guī)范連接PCS塊和物理介質(zhì),。8B10B PCS 編碼/解碼器從介質(zhì)訪問(wèn)控制器接收MAC格式的幀,進(jìn)行8B10B傳輸編碼并將10bit并行數(shù)據(jù)送往物理接口,或者從10bit物理接口接收已編碼的數(shù)據(jù)并經(jīng)過(guò)8B10B接收解碼送往MAC。因而在采用光纖介質(zhì)的千兆比以太網(wǎng)中廣播的數(shù)據(jù)流經(jīng)過(guò)光纖通道接口后的串行數(shù)據(jù)必須先通過(guò)千兆比以太網(wǎng)收發(fā)器(又稱Serdes,并行轉(zhuǎn)換器)轉(zhuǎn)化為并行的10位編碼數(shù)據(jù)才能送往XMACII的FC-0接口;XMACII的FC-0接口送出的10bit編碼數(shù)據(jù)也要先經(jīng)過(guò)Serdes轉(zhuǎn)換為10倍波特率的數(shù)據(jù)流,再經(jīng)光纖通道接口向以太網(wǎng)廣播,。所以在控制器和光纖通道接口中間還需要連入以太網(wǎng)收發(fā)器,。方案選定的千兆比以太網(wǎng)收發(fā)器是Vitesse公司的VSC7135。?
千兆比以太網(wǎng)的數(shù)據(jù)傳輸速率很高,最高數(shù)據(jù)速率能達(dá)到1.25Gb/s,。而數(shù)據(jù)鏈路層處理分組的速度相對(duì)較慢,因而會(huì)在突發(fā)大量數(shù)據(jù)(data bursting)時(shí)數(shù)據(jù)難以及時(shí)處理,出現(xiàn)大量丟包,。雖然介質(zhì)訪問(wèn)控制器中集成了接收和發(fā)送FIFO以進(jìn)行數(shù)據(jù)緩沖,但介質(zhì)訪問(wèn)控制器XMACII的內(nèi)部FIFO容量仍然較小,。為避免因數(shù)據(jù)鏈路層來(lái)不及處理數(shù)據(jù)而大量丟包的情況,在介質(zhì)訪問(wèn)控制器XMACII和路由器側(cè)上層設(shè)備之間加上外接的大容量FIFO作為數(shù)據(jù)緩沖,。?
在各個(gè)器件間傳送數(shù)據(jù)時(shí),為滿足各個(gè)器件讀寫數(shù)據(jù)的邏輯時(shí)序要求,協(xié)調(diào)各器件工作,將介質(zhì)訪問(wèn)控制器XMACII、外接的FIFO和路由器側(cè)上層設(shè)備的相關(guān)控制邏輯信號(hào)接入一大容量的現(xiàn)場(chǎng)可編程邏輯門陣列(FPGA),編程完成各個(gè)邏輯的判決和驅(qū)動(dòng),完成各部分的協(xié)調(diào)工作,完成各器件間的數(shù)據(jù)傳輸,。為方便數(shù)字邏輯功能的設(shè)計(jì),將XMACII上行的數(shù)據(jù)和路由器側(cè)發(fā)送的數(shù)據(jù)先由FPGA鎖存一個(gè)時(shí)鐘周期再送往相應(yīng)的FIFO,。?
綜上所述,該千兆比以太網(wǎng)接口的結(jié)構(gòu)可由圖2所示。?
?
?
3 FPGA邏輯控制功能實(shí)現(xiàn)?
FPGA片內(nèi)程序?qū)崿F(xiàn)路由器側(cè)高層設(shè)備,、千兆比以太網(wǎng)介質(zhì)訪問(wèn)控制器XMACII和大容量FIFO間數(shù)據(jù)傳送的邏輯控制,。FPGA芯片采用Altera公司的EPF10K50E-QC240,。片內(nèi)程序分為兩個(gè)模塊:發(fā)送數(shù)據(jù)模塊和接收數(shù)據(jù)模塊,兩個(gè)模塊相互間基本沒(méi)有聯(lián)系。?
發(fā)送數(shù)據(jù)模塊處理路由器側(cè)高層設(shè)備發(fā)送的數(shù)據(jù),將其鎖存一個(gè)周期后送入外接FIFO,并控制其以正確的時(shí)序從FIFO中讀出并送入XMACII,。將數(shù)據(jù)鎖存一個(gè)時(shí)鐘周期的原因是考慮到由路由器側(cè)發(fā)送的數(shù)據(jù)如果直接寫入FIFO,對(duì)控制信號(hào)的判決會(huì)有相當(dāng)嚴(yán)格的要求以致實(shí)現(xiàn)時(shí)難以達(dá)到,。故將數(shù)據(jù)鎖存一次以方便控制邏輯的判決和驅(qū)動(dòng)。另外還需要在數(shù)據(jù)寫入FIFO時(shí)由計(jì)數(shù)器累加得到每一個(gè)數(shù)據(jù)幀的長(zhǎng)度,以便在數(shù)據(jù)讀出時(shí)能確定每一個(gè)數(shù)據(jù)幀的邊界,。FIFO中每一個(gè)數(shù)據(jù)幀的長(zhǎng)度按順序存放于FPGA內(nèi)部用軟件實(shí)現(xiàn)的一個(gè)FIFO中,。具體過(guò)程:當(dāng)一個(gè)數(shù)據(jù)幀整個(gè)寫入外接FIFO后,累加計(jì)數(shù)得到該數(shù)據(jù)幀的字節(jié)數(shù)也同時(shí)寫入了FPGA內(nèi)部的FIFO;而當(dāng)數(shù)據(jù)幀即將從FIFO中讀出時(shí),該幀的字節(jié)數(shù)首先從FPGA的內(nèi)部FIFO中讀出,讀幀數(shù)據(jù)的同時(shí)該字節(jié)數(shù)相應(yīng)遞減,至零為止,一個(gè)數(shù)據(jù)幀被整個(gè)讀出。如此反復(fù)進(jìn)行,。?
接收數(shù)據(jù)模塊處理XMACII接收的數(shù)據(jù),同樣將其鎖存一個(gè)時(shí)鐘周期后送入FIFO中,由路由器側(cè)高層設(shè)備將數(shù)據(jù)從FIFO中讀出,。在數(shù)據(jù)寫入FIFO時(shí)仍需記錄每一個(gè)數(shù)據(jù)幀的長(zhǎng)度,路由器側(cè)讀取數(shù)據(jù)的時(shí)候一次讀出整個(gè)數(shù)據(jù)幀。具體的實(shí)現(xiàn)與發(fā)送模塊類似,。由于XMACII寫入FIFO時(shí)的數(shù)據(jù)寬度為32位,而路由器側(cè)高層設(shè)備讀取FIFO時(shí)的數(shù)據(jù)寬度是16位,因而在數(shù)據(jù)幀的字節(jié)計(jì)數(shù)時(shí)應(yīng)有相應(yīng)的處理,。?
由此設(shè)計(jì)方案得到交換式路由器的千兆比以太網(wǎng)接口電路原理圖,繪制PCB圖并制作出印刷電路板,編寫VHDL程序。經(jīng)過(guò)對(duì)此千兆比以太網(wǎng)接口的反復(fù)調(diào)試,該接口能夠很好地完成路由器側(cè)高層設(shè)備和千兆比以太網(wǎng)間的數(shù)據(jù)交換,數(shù)據(jù)速率能夠達(dá)到千兆比以太網(wǎng)的要求,。通過(guò)配置XMACII寄存器,能夠?qū)?shù)據(jù)的傳送進(jìn)行實(shí)時(shí)的控制和調(diào)節(jié),并可得到千兆比以太網(wǎng)的數(shù)據(jù)收發(fā)的各種統(tǒng)計(jì)信息,。該千兆比以太網(wǎng)接口用在實(shí)用化綜合接入系統(tǒng)的交換式邊緣路由器中,路由器可通過(guò)該接口由千兆比光纖接入千兆比以太網(wǎng),與以太網(wǎng)中其他的計(jì)算機(jī)通信。該交換式路由器的千兆比以太網(wǎng)接口很好地達(dá)到了設(shè)計(jì)要求,。?
參考文獻(xiàn)?
1 GigaBit Ethernet Accelerating-the standard for speed.Gigabit Ethernet Alliance,1997?
2 XaQti XQ11800FP 1000 Mbps Gigabit Ethernet Controller Data Sheet.Vitesse Semiconductor Corporation, http://www.vitesse.com/?
3 High-Speed Board Design Techniques. Advanced Micro Devices, Inc. 1997?
4 FLEX 10K Embedded Programmable Logic Family Data.Altera, http://www.altera.com/?
5 候伯亨,顧新.VHDL硬件描述語(yǔ)言與數(shù)字邏輯電路設(shè)計(jì),西安:西安電子科技大學(xué)出版社,1999