吳昊,嚴勝剛,薛雙喜
(西北工業大學 航海學院,陜西 西安 710072)
現代數據采集領域中,越來越多的現場采集設備需要擴展網絡功能以實現遠程控制和數據傳輸。以太網以其成本低、易于集成和傳輸距離較遠的優勢得到了廣泛應用[1]。傳統的以太網解決方案是利用主控芯片連接物理層接口,在主控芯片內編寫以太網協議來實現的,這種方法開發周期較長,難度較大,且由于以太網協議程序比較繁瑣,運行起來不太穩定。而利用硬件協議棧芯片,只需要通過簡單的配置和外部線路連接就可以實現以太網的數據傳輸功能,這種方法開發難度小、集成度高且運行穩定,已成為實現以太網數據傳輸的首選方案[2]。
鑒于此,文中設計了一個利用可編程邏輯器件控制W5300以TCP/IP為協議進行以太網數據傳輸的系統。其中,TCP/IP協議棧的處理交由硬件協議棧芯片W5300來完成,FPGA只需控制W5300即可[3]。
W5300是WIZnet公司的一款單芯片器件,采用0.18μm CMOS工藝,內部集成10/100M以太網控制器、MAC層協議和TCP/IP協議棧,主要應用于高集成、高穩定、高性能和低成本的嵌入式系統中。其主要性能特點[4-5]如下:
1)支持硬件 TCP/IP 協議棧:TCP、UDP、ICMP、IPv4、ARP,IGMP、PPPoE;
2)支持8路獨立的網絡連接端口SOCKETs同時工作;
3)內部擁有128 k字節TX/RX存儲器用于數據通信,并可根據端口數據吞吐量靈活分配TX/RX存儲器空間大小;
4)支持2種主機接口模式(直接尋址模式和間接尋址模式);
5)支持16/8 bit數據總線,傳輸速率高達50 Mbps;
6)支持第三方物理(PHY)接口。
在硬件設計時選擇利用FPGA做為主控芯片,實現對W5300寄存器的讀寫及功能配置,其系統硬件結構如圖1所示。

圖1 系統硬件結構圖Fig.1 Structure diagram of the hardware system
W5300與FPGA的接口信號有數據總線、地址總線以及一些控制信號線(如/RESET、/CS、/RD、/WR、/INT)。 W5300 工作在直接尋址模式下,FPGA通過地址總線可直接訪問W5300內部的各個寄存器或存儲器,直接尋址模式比間接尋址模式具有更高的訪問速度。BIT16EN引腳決定數據總線模式:BIT16EN拉高時為16位寬數據總線模式,BITI6EN拉低時為8位寬數據總線模式。本設計將BIT16EN懸空,即拉高,使其工作在16位寬數據總線模式下。TEST_MODE[3:0]4個引腳用于配置PHY模式和廠商測試模式,這里將其都接地,設置成使用內部集成的PHY模式。在內部PHY運行控制模式的多種選擇中,將OP_MODE[2:0]3個引腳接地,固定地選擇了一種模式:自動握手模式。這樣W5300是通過媒體接口的兩路差分信號(RXIP/RXIN和TXOP/TXON)與網絡隔離變壓器連接。這些差分信號引腳都必須接一個50Ω(±1%)的電阻和一個0.1μF的電容,以達到良好的阻抗匹配效果。匹配電阻和匹配電容應該盡可能靠近W5300,以減少傳輸線上的阻抗和容抗。同時為了有良好的傳輸效果,兩路差分信號的走線長度應相等且盡量靠近[1-6]。
圖中的網絡隔離變壓器采用的是CYL公司PH16系列的PH163539集成芯片,它的作用有3點:1)傳輸數據,它把PHY送出來的差分信號用差模耦合線圈耦合濾波以增強信號,并且通過電磁場的轉換耦合到不同電平的連接網線的另外一端;2)隔離網絡上不同網絡設備間的不同電平,以防止不同電壓通過網線傳輸損壞設備;3)能夠濾除空間的電磁干擾,能對設備起到一定的防雷保護作用[7]。
本系統工作在內部PHY模式下,只能用25M的無源晶振來提供W5300的工作時鐘。在工作過程中,W5300需要2種電源:3.3 V和1.8 V,其中1.8 V的內核工作電壓由W5300自己產生,不需要外部提供,需要注意的是這種電壓不能提供給W5300以外的其它器件。
系統軟件設計的主要任務是在Quartus II環境下用硬件描述語言VHDL實現FPGA對硬件協議棧芯片W5300的控制,以實現W5300與上位機的數據傳輸。在本系統的軟件設計中,僅選用W5300的8個SOCKET中的SOCKET0進行通訊。W5300軟件流程圖如圖2所示,首先復位W5300,再依次對W5300、SOCKET0進行初始化,然后進入數據通信狀態。
W5300在工作之前需要進行上電復位,且復位信號/RESET至少要保持2μs的低電平,然后變為高電平,等待至少10 ms使得W5300內部鎖相環穩定后,再進行W5300初始化等操作。
軟件設計時,系統設置復位信號的低電平時間為6μs,通過對30 MHz的時鐘進行計數來實現,當計數值達到30×6=180時,便將復位信號拉至高電平;然后接著計數,當計數值達到30×20×103=600 000時,便實現等待20 ms的要求;最后給出W5300復位完成信號,啟動下一步工作。

圖2 系統軟件流程圖Fig.2 Flow chart of the software system
初始化W5300就是將相應的參數按照寫時序要求寫入寄存器即可,初始化分3個步驟:主機接口設置、網絡信息設置和內部TX/RX存儲器的分配。
在設置主機接口時,模式寄存器MR保持默認值0xB800,這樣W5300便工作在16位總線寬度的直接訪問模式;中斷屏蔽寄存器IMR寫入0xFFFF,不屏蔽任何中斷。
在設置網絡信息時,重復發送超時寄存器RTR與重復發送計數寄存器RCR采用默認值,默認值分別為0x07D0和0x0008,即重復發送超時時間為200 ms,重復發送次數為9次;本機硬件地址寄存器SHAR、網關IP地址寄存器GAR、子網掩碼寄存器SUBR和本機IP地址寄存器SIPR配置參數如表1所示。

表1 網絡參數配置Tab.1 Configuration of network parameters
在分配存儲空間時,存儲器單元類型寄存器MTYPER采用默認值0x00FF,即將前8個8k字節存儲單元分配為TX存儲器,后8個8k字節存儲單元分配為RX存儲器;通過TX存儲器大小配置寄存器TMSR和RX存儲器大小配置寄存器RMSR將SOCKET0的發送和接收存儲器大小都配置為32 kB。
完成 W5300初始化以后,W5300可以以 TCP、UDP、IPRAW或MACRAW的方式打開SOCKET發送或接收數據。在本設計中,W5300工作在TCP服務器模式下。
為了實現TCP通信,需要對SOCKET0進行初始化設置,然后進行偵聽設置,完成TCP服務器建立,最后等待建立連接。通過 SOCKET0模式寄存器 S0_MR(P3:P0)和SOCKET0端口寄存器S0_PORTR分別設置通信協議和本機端口號(在TCP服務器模式,稱之為偵聽端口號),然后向SOCKET0控制寄存器S0_CR中寫入0x0001執行OPEN命令,執行完OPEN命令后,如果SOCKET0狀態寄存器S0_SSR改變為SOCK_INIT,則SOCKET0的初始化設置完成;再向S0_CR中寫入0x0002執行偵聽命令,若S0_SSR改變為SOCK_LISTEN,則偵聽完成,W5300設置為TCP服務器;最后等待S0_SSR改變為SOCK_ESTABLISHED,若S0_SSR變為預期值,則建立了SOCKTE0連接,可以進行數據通信。
當W5300控制器收到接收數據控制命令時,進入接收數據狀態。W5300接收數據的程序流程如圖3所示。首先要判斷SOCKET0的RX存儲器中是否有接收到的數據,即讀取SOCKET0接收數據報長度寄存器S0_RX_RSR的值,并判斷該值是否等于零。如果S0_RX_RSR的值等于零,則繼續判斷,否則說明SOCKET0的RX存儲器接收到數據,則進入下一步接收數據操作。當存儲器中接收到數據時,要進一步判讀SOCKET0模式寄存器S0_MR的對齊控制位,若S0_MR(ALIGN)=0,則從 SOCKET0的 RX FIFO寄存器 S0_RX_FIFOR讀取需要接收的數據字節長度(這樣做是由TCP模式數據格式來確定的),否則從S0_RX_RSR中讀取數據字節長度。得到數據字節長度信息后要將其轉換為數據字長度,作為讀取S0_RX_FIFOR中接收內容的循環控制量。最后,要在向S0_CR寫入0x0040,執行REVC命令,告知主機W5300已經完成數據的讀取。

圖3 W5300接收數據流程圖Fig.3 Flow chart of W5300 receiving data
當W5300控制器收到發送數據控制命令時,進入發送數據狀態。W5300發送數據程序流程如圖4所示。首先要將需要發送數據字通過S0_TX_FIFOR復制到SOCKET0的TX存儲器中,然后再將發送數據字節長度值寫入SOCKET0的寫長度寄存器S0_TX_WRSR,告知W5300需要向上位機發送數據的字節數。最后向S0_CR寫入0x0020執行SEND命令,W5300收到此命令后對接收到的數據進行協議處理,并發送到網絡中。數據發送完成后,SOCKET0的中斷寄存器S0_IR會產生發送完成(SENDOK)中斷,中斷值為0x0010,軟件清除該中斷后表示完成一次發送。

圖4 W5300發送數據流程圖Fig.4 Flow chart of W5300 sending data
為了測試網絡的連通性,最直接的方式就是使用ping命令,向目標端發送ICMP回送請求報文,看目標端是否可達[8]。在主機端的DOS命令環境下輸入命令:ping192.168.0.3(主機lP地址為192.168.0.2),從圖5可以看出主機端收到了ICMP回送應答,證明目標端的IP層以下已經連通。

圖5 DOS操作環境下測試結果Fig.5 Test results in DOSoperation system
在測試了連通性后,就可以進行通信測試了,可通過TCP&UDP測試工具向W5300發送網絡控制指令,并接收W5300回傳的數據數據。如圖6所示TCP&UDP測試工具與W5300通信結果,通過上位機的TCP&UDP測試工具向系統網絡接口發送一組數據,系統網絡接口將收到的數據載回傳給上位機,從圖中可以看出,通信測試成功。

圖6 TCP&UDP測試工具與W5300通信結果Fig.6 Communication results between TCP&UDP testing tools and W5300
經實驗驗證,系統運行穩定,實現了以太網的數據傳輸功能。系統結構簡單、可靠性強、成本低廉,在無需引入操作系統的條件下,實現單芯片與Internet的連接,有很高的實用價值,可應用于現場采集設備的遠程控制和數據傳輸等領域。
[1]王少克.基于W5300的高速硬件以太網解決方案[J].電子設計應用,2009,7(4):95-96.WANG Shao-ke.Solution of high-speed hardware Ethernet based on W5300[J].Electronic Design&Application,2009,7(4):95-96.
[2]謝希仁.計算機網絡[M].北京:電子工業出版社,2008.
[3]胡為.基于FPGA的嵌入式系統Internet接入方案[D].西安:西安電子科技大學,2006.
[4]WIZnet.W5300 Datasheet Ver1.2.2[R].2008.
[5]High-Performance Internet Connectivity Solution W5300[S].WIZnet Inc,2008.
[6]柏軍,張爭氣,王奇,等.基于網卡的某型聲納目標模擬系統的設計[J].計算機測量與控制,2010,18(4):854-856.PAI Jun,ZHANG Zheng-qi,WANG Qi,et al.Design of sonar target simulation system based on net card[J].Computer Measurement&Control,2010,18(4):854-856.
[7]吳金星.某雷達數據通信系統的設計與實現[D].西安:西安電子科技大學,2011.
[8]胡達.基于嵌入式平臺的USB和以太網技術研究[D].哈爾濱:哈爾濱工程大學,2009.