本站小編為你精心準備了以太網數據通信接口的設計參考范文,愿這些范文能點燃您思維的火花,激發您的寫作靈感。歡迎深入閱讀并收藏。
以太網是應用十分廣泛的計算機網絡技術,它以低成本、易集成和較遠傳輸距離等的優勢獲得了廣泛的使用[1]。一般的以太網傳輸方案是使用主控芯片與物理層接口相連接,而后將以太網協議寫入在主控芯片內來完成以太網的通信,但是這種的開發周期很長,難度也很大,是因為有著比較復雜以太網協議的程序,并且運行起來不太穩定[2];另一種就是使用以太網協議棧芯片,只需要經過一些簡單的寄存器配置以及外部連線便可以實現以太網的通信,并且這種方法開發難度較小,集成度較高而且運行很穩定,已成為實現以太網通信的最佳方案[3]。鑒于此,筆者提了一種基于以太網協議棧芯片W5300,以UDP為協議為基礎的的以太網數據通信系統。FPGA完成對W5300的配置,而TCP/IP協議棧的處理交由W5300完成。
1系統硬件設計
在硬件系統中時選取FPGA做為主控芯片,完成W5300各個寄存器的讀、寫配置以及功能的配置,硬件結構如圖1.1所示。W5300與FPGA通過數據總線、地址總線,以及一些其他的控制信號線(如/RESET、/CS、/RD、/WR、/INT)相連接。W5300與控制器的接口模式分為直接和間接地址模式,數據總線又分為16位和8位。在本文中采用的是16位數據總線的直接地址模式,BIT16EN引腳需連接到高電平,但是該引腳有內部上拉電阻,所以直接將其懸空。物理層便采用W5300內部的PHY,TEST_MODE[3:0]的4個引腳全部接地,配置為內部集成的PHY模式,將OP_MODE[2:0]的三個引腳接地,配置為自動握手模式。FPGA可以經過地址總線直接訪問W5300內的各個寄存器和存儲器,通過進行相應寄存器的描述,完成對W5300的配置,當配置完成后,由媒體獨立接口的兩路差分信號對與計算機的網絡接口直接連接。當W5300從網絡上接收到控制命令后,W5300模塊便從其中把接收到的控制指令取出,并將其存入FIFO中,通過進行指令解析來讀取產生的相應控制信號,從而完成數據通信功能。
2系統軟件設計
W5300內部集成了TCP/IP協議,故我們只需要設計Socket接口。這樣可以大大簡化設計流程,同時使得微控制器的處理能力和系統資源的使用率減少。軟件流程圖如圖2.1所示。
2.1W5300的初始化W5300初始化就是根據寫時序的要求對應的寄存器進行相關的描述。首先,設置socket1中斷,即將0x01寫入中斷屏蔽寄存器,然后設置網關IP地址,W5300硬件地址,IP地址和子網掩碼等參數,具體配置如表2.1所示。W5300的模式寄存器采用的是默認值(0x3800),此時與W5300與FPGA的接口模式為直接尋址方式,使用8位數據總線。重復發送計數寄存器RCR采用默認值(0x0008),即重復發送的九次,重復發送超時寄存器RTR也采用默認值(0x07d0),即重復發送超時時間為200ms。在UDP協議模式下,W5300傳輸超時指的是ARP超時,所以默認情況下,ARP超時為1.8s。TX/RX寄存器空間的分配也使用默認值,即8個獨立的socket平均分配128k字節存儲空間。
2.2SOCKET1的初始化W5300完成初始化后,接著對socket1進行初始化。本設計中W5300工作在UDP模式下。先將0x02寫入socket1模式寄存器設S1_MR,此時socket1處于UDP單播模式下。然后把socket1的端口號設置為8000,即將0x1f40寫入socket1源端口寄存器。然后執行打開命令,即將0x01寫入socket1的命令寄存器寫S1_CR。最后,讀取socket1狀態寄存器S1_SSR的值,并判斷是否為0x22,如果S1_SSR值為0x22,便說明已經進入了UDP協議模式,socket1初始化完成,如果該值不為0x22,便說明socket1沒有進入UDP模式,此時,將0x10寫入socket1的命令寄存器S1_CR,關閉socket1。然后重復上述操作,直至初始化完成。
2.3W5300接收數據狀態機進入socket1接收數據狀態后,根據接收到的UDP數據報格式,通過讀取S1_RX_FIFOR寄存器,從socket1的RX存儲器中將接收到數據報的目的IP地址、目的端口號和數據報長度值讀取出來。繼而再通過S1_RX_FIFOR不斷的將真正的UDP數據報從socket1的RX讀出,每次讀取完一個字節,便增加了1字節計數變量,并比較變量i和數據包長度值。若變量i的值小于包長度值,表明UDP數據報并沒有收完,然后繼續接收。若變量i的值等于包長度值,則表明這個包接收到了一個完整的UDP數據報。最后便是執行RECV命令,將0x40寫入socket1命寄存器令S0_CR,通知W5300已完成數據接收,此時,socket1完成數據接收,程序流W5300接收的程序流程圖如圖2.2所示。
2.4W5300發送數據狀態機進入狀態后socket1發送數據狀態后,先訪問socket1的發送存儲器剩余空間寄存器S1_TX_FSR,讀取它的值,然后判斷socket1的發送存儲器能否容納一個完整的包數據。若發送緩沖區剩余的空間比發送數據長度大,則從FIFO中取出需要進行傳輸的數據,并把需要發送的數據復制至socket1的TX存儲器,而后在socket1的寫長度寄存器S1_TX_WRSR寫入發送數據的長度值,告知W5300要上位機發送的數據字節數。最后便是執行發送命令,將命令值0x10寫入socket的命令寄存器S1_CR,W5300接收到這個命令后便對收到數據驚醒處理,并將其發送至網絡。完成數據發送后,socket1的中斷寄存器產生發送完成中斷(SEND_OK=0x10),該中斷清除以后,再讀取S1_RX_RSR寄存器的值,并判斷改制是否為0,進而可以知道狀態機是否進入數據接收狀態或者數據發送狀態,W5300發送數據的程序流程如圖2.3所示。
3系統功能驗證
在測試工具中填入發送端(W5300)和接收端(計算機)的IP地址,點擊連接網絡,會彈出“網絡連接成功”窗口,并且以太網連接指示燈D4點亮,說明與計算機網絡層連接成功。利用UDP調試助手,根據UDP數據報的格式給W5300發送10個字節的網絡控制命令(C0A800031F40000255AA),然后接收W5300的回傳數據。數據發送成功后,開始接收從W5300回傳的數據,在低電平將數據從FIFO中讀取出來,再把讀出的數據發送回計算機,在上位機上顯示。經過多次測試,并采用UltraEdit數據查看軟件可知本系統能夠正確的完成數據通信功能。查看結果如圖3.1所示。左圖數據從00遞增至F9,幀計數有4個字節,每幀的幀計數是連續遞增的;幀尾有兩個字節,分別是EB、90。右圖為為了進一步驗證通信的正確性,將FIFO中的數據格式更改,此時,W5300從FIFO中讀取的為遞減的數據,數據從FF遞增至06,幀計數有4個字節,每幀的幀計數是連續遞增的;幀尾有兩個字節,分別是EB、90。
4結語
本文對基于太網協議芯片W5300的以太網接口設計方案進行了詳細的介紹,該設計方案的有開發周期短、低成本、易實施等的優勢,通過驗證,系統很好的實現了基于UDP協議的數據通信,并且在有著很好的穩定性和實時性,速率方面也有著良好的表現。
作者:馮憲 陳曄 劉馳 單位:中北大學信息與通信工程學院 中北大學計算機與控制學院