梁中英, 蘇濤, 武榮偉, 郭文偉
(西安電子科技大學雷達信號處理重點實驗室,陜西 西安 710071)
光纖以太網是指在光纖上運行以太網 LAN數據包接入服務的網絡,底層連接可以任何標準的以太網速度運行,包括 10 Mb/s、100Mb/s、1 Gb/s或 10Gb/s。在此情況下,這些連接必須以全雙工速度運行,即數據可以同時往兩個相反的方向傳輸[1]。光纖以太網業務能夠應用交換機的速率限制功能,以非標準的以太網速度運行[2]。
設計中基于某特殊需求,采用無反饋的單向光纖以太網數據傳輸方法,克服了無握手和丟包的困難,使用FPGA控制W5100進行以太網(百兆)的網絡連接后,利用 FPGA內部的高速數據收發模塊(RocketIO GTP)、光模塊及光纖傳送數據,實現了數據率為 3 Gb/s(可擴展提高)的數據通信。
系統主要由兩端的以太網接口和中間的光模塊接口組成。系統框圖如圖 1所示。FPGA選用 Xilinx公司的XC5VLX 50T,光模塊選用 FTM-5128C-SL80G。在通信鏈路中,計算機(PC機)與板卡通過網口(RJ45)用網線相連。板卡 1收到的以太網數據包經過速率匹配后,通過 FPGA中的GTP模塊發送給光模塊。板卡 2的光模塊將信號進行光電轉換后,經過FPGA內部的 GTP模塊將數據穩定接收后通過以太網接口發送給 PC機 2。
以太網是一種基于帶沖突檢測的載波偵聽多路訪問協議(CSMA/CD)的局域網(LAN)。以太網介質傳輸層(MAC)是網絡與設備的接口,是以太網核心部分。所選用的FPGA內部含有MACIP核,但需要對以太網的各層結構有一定的了解才能對該IP核進行參數化,開發周期較長且占用較多邏輯資源,故并沒有使用,而是選擇W5100來實現該功能。

圖 1 通信系統結構框
W5100是一款多功能的單片網絡接口芯片,內部集成有10/100以太網控制器。包括TCP/IP協議棧(TCP/IP協議是一個四層協議系統,包括數據鏈路層、網絡層、傳輸層和應用層,每一層負責不同的功能[3])、MAC和物理層(PHY)。且集成有 16KB存儲器用于數據傳輸[4]。在進行系統設計時不必考慮網絡協議的細節,只需要解釋并執行網絡芯片傳送的指令和數據就可實現網絡連接,且不需要操作系統的支持,具有接口電路簡單、編程方便等特點[5]。
設計中選用直接總線接口,采用 15位地址線和 8位數據線,另加/CS(片選信號),/RD(讀使能信號),/WR(寫使能信號)及/INT(中斷信號)等信號線。
W5100對讀寫時序要求比較嚴格。若不滿足讀寫時序的要求,會導致數據傳輸錯誤。寫時序要求如圖 2所示。為保證可靠,時序設計中還留有一定的裕量。

圖 2 W5100寫時序要求
在 FPGA中使用有限狀態機來實現讀寫時序,以寫時序為例。選用 10 MHz的時鐘來進行數據和地址的寫操作,即寫周期為 100 ns,滿足圖 1中的條件 1。用 200 MHz的時鐘來控制狀態機,狀態圖如圖 3所示。從圖中可以看出,有效地址到/CS變低的時間(條件 2)為 15ns;/CS變低到/WR變高的時間(條件 3)為 85 ns;由圖 3中的操作 1、3、4可知,滿足條件 4、5、6。

圖 3 寫時序狀態
讀時序與寫時序類似,將圖 3各操作中的/WR信號換為/RD信號,并且不用對數據賦值,只需將數據線上的數據取出即可。
完成W5100的讀寫時序設計后,調用該子程序對 W5100進行初始化配置,包括基本設置、網絡信息設置、端口存儲信息設置、端口寄存器設置。發送初始化端口命令進行配置實現。然后發送連接請求到遠程服務器,與 W5100進行網絡連接。
2.3.1 數據接收的 FPGA實現
為了實現該系統的設計,在 PC機上需要一個服務器與W5100進行交互數據收發。這里使用 VC++編寫該服務器。測試前,先設置 PC機的 IP地址,設置的值與FPGA配置W5100時的 IP地址必須一致。
(1)接收數據至 W5100接收緩存區
服務器監聽端口,給板卡上電后,W5100與服務器建立連接。數據傳輸框圖如圖 4所示。服務器發送數據包至W5100,數據放在 W5100的接收存儲器中,服務器處于等待狀態。W5100接收到一包數據后會觸發一次中斷且端口中斷寄存器的第 2位會置1,表示接收到了數據。FPGA通過接收數據字節數寄存器來判斷W5100接收寄存器中接收到數據的個數。

圖 4 PC機發送數據到FPGA的數據傳輸框
(2)將 W5100中的數據讀到 FPGA中
若接收到的數據個數不為 0(即有數據接收到),則開始計算數據所存放的起始地址。然后按照相應地址將數據讀出到FPGA中。數據讀完后,FPGA給 W5100發送一個“RECV”命令,“告訴”W5100數據已讀完,可以繼續接收新的數據。這之后,W5100給 PC機發送一個ACK響應,服務器繼續發送數據包,重復上述過程,直到文件發送完成。
2.3.2 數據發送的 FPGA實現
數據發送的實現方法與數據接收類似,這里只作簡單說明。
W5100與服務器建立連接后,FPGA讀取 W5100的發送存儲器剩余空間寄存器的值,計算出數據存放的起始地址。FPGA將數據寫入到 W5100的發送存儲器中,寫滿后給W5100發送一個“send”命令。 W5100給 PC機發送數據,數據發送完成后會觸發中斷且中斷寄存器的第 4位會置 1,表示數據發送完成。如此反復操作直到數據發送完成。
Virtex-5 Rocketl O GTP收發器是Xilinx FPGA器件中內嵌的一個硬核,具有通用性、低功耗和低成本等特性,可以支持多種標準協議,如Aurora協議、吉比特以太網等。
單個 GTP的線速率為 100 Mb/s~3.75 Gb/s。內建可選的物理編碼子層(PCS)特性,如 8B10B編碼、字符(comma)對齊、通道綁定及時鐘修正等[6]。每一個GTP收發器包含獨立的發送模塊和接收模塊。利用 GTP實現數據收發時,按照設計需求通過 Xilinx的核產生器(Core Generator)來例化 GTP即可。
以太網數據發送過來后,填充數據包至 2.4 Gb/s。填充的數據包可以是無效數據包,也可以是有效數據包(其他信號處理的數據)。填充的數據經過GTP內部的 8B10B編碼模塊后數據率為 3 Gb/s。編碼后的數據轉換成串行數據以差分的形式送入光模塊。
光模塊對數據進行光電轉換,GTP內部的時鐘恢復模塊根據串行數據流提取時鐘信息并恢復數據,使用提取的時鐘完成串并轉換,再由符號對齊和檢測功能塊完成數據定界,之后將 8B10B解碼的數據送入彈性緩沖,FPGA的接收(RX)接口從彈性緩沖中讀出數據送入FPGA邏輯。最后將以太網數據還原,即將填充的數據包丟掉,將數據送往以太網接口邏輯。
理論上講,單片機控制 W5100時的最大通信速度可達25 Mb/s。實際應用中,由于網絡的原因、CPU與 W5100之間通信速度的等原因,使 W5100的網絡傳輸速度遠低于25 Mb/s。該設計采用 FPGA控制 W5100,經過測試發送端的速度最高可達 64 Mb/s。
由于系統是單向光纖傳輸,沒有反饋,考慮板卡 1接收數據的速度快而板卡 2發送數據的速度慢時會出現丟包現象。在板卡1的 FPGA程序中添加一定的空循環降低接收服務器數據的速度,同時在板卡 2的FPGA程序中添加一定大小的存儲空間緩存收到的數據。兩端做適當調整后,不再出現丟包現象。
兩個PC機的服務器都建立網絡連接后,進行數據收發測試。發送端發送一個視頻文件,接收端對收到的視頻文件進行實時播放,試驗結果證明可以準確無誤的進行數據發送、接收以及流暢的視頻播放。
其中的GTP收發數據部分的速率可以根據實際應用做相應的調整,多個GTP模塊進行通道綁定可實現最高速率為90 Gb/s的數據收發(多路光纖)。也可將以太網數據擴充為多個用戶(需要多個 W5100芯片),分時復用后經過 GTP發送,接收后再解復用將數據分配給各個用戶,實現多個用戶的以太網通信系統。
結合特殊需求,介紹了利用 FPGA控制W5100實現基于以太網的單向光纖數據通信的方法且按實際需求可做相應擴展。占用FPGA內部較少邏輯資源,并通過視頻文件的傳輸和實時播放驗證了該設計方法的可行性和可靠性。也為利用FPGA進行數據處理的同時進行以太網數據通信并對通信鏈路的無誤性進行驗證提供了簡單的實現方法。
[1]湯德榮.淺析多路數據采集與通信系統設計方案[J].通信技術,2010,43(02):95-97.
[2]朱禮義,巴繼東.光纖以太網技術在城域網中的應用[J].光通信研究,2003,32(01):32-35.
[3]孫社文,張銘伯.基于 DSP技術和以太網卡的數據傳輸方案[J].通信技術,2008,41(07):98-100.成都浩然電子.
[4]W5100數據手冊.Version 1.1.6.[EB/OL].(2009-03-01)[2010-02-11].http://www.doc88.com.
[5]北京博控自動化有限公司.基于 W5100的 DSP快速網絡接入解決方案[J].單片機與嵌入式系統應用,2009,31(03):84-85.
[6]XilinxUG196.Virtex-5 FPGA RocketIO GTP user guide.[EB/OL].(2008-02-11)[2010-04-28].http://www.xilinx.com.