郭 淳,李錦明*,朱 平,張虎威,高文剛
(1.中北大學電子測試國家重點實驗室,太原 030051;2.中北大學儀器科學與動態測試教育部重點實驗室,太原 030051)
基于FPGA+W5100的數據傳輸系統設計*
郭 淳1,2,李錦明1,2*,朱 平1,2,張虎威1,2,高文剛1,2
(1.中北大學電子測試國家重點實驗室,太原 030051;2.中北大學儀器科學與動態測試教育部重點實驗室,太原 030051)
為提高存儲測試系統的實時性和穩定性,并考慮到數據量較大和數據存儲安全的特點,設計了一種新型無線數據傳輸系統。該系統采用FPGA+W5100架構的以太網接口設計方法,外圍電路采用NAND Flash存儲器來作數據備份,引入了片外存儲壞塊地址的方法對Flash的壞塊進行檢測,并給出了系統的結構組成、硬件連接和軟件實現方法。該系統增強了數據存儲安全性,滿足了遠程和復雜環境下數據通信的要求。
數據傳輸;以太網;W5100;FPGA;NAND Flash;壞塊檢測
現代數據存儲領域中,數據存儲、數據采集、黑匣子記錄系統等工作過程中要求數據能夠準確、安全傳輸存儲,并且經常要利用計算機進行數據處理與計算,所以越來越多的現場采集設備需要擴展網絡功能以實現遠程控制和數據傳輸[1]。以太網以其開放性、可靠性、價格低、速度高、傳輸距離遠、多種傳輸介質可選、連接方式靈活多變、易于組網應用等優勢得到廣泛應用。而基于WIZnet的W5100解決了傳統以太網需軟件實現TCP/IP協議棧開發周期長、難度大的問題,同時也增強了系統數據傳輸穩定性[2]。由于在惡劣和苛刻的環境條件下,數據的采集和回收處理經常受到外界環境的干擾而導致重要數據的損壞和丟失,所以還需要對實時數據進行備份。
鑒于動態測試技術特點要求,設計了基于FPGA、W5100和NAND Flash的數據傳輸系統。采用W5100實現可靠穩定運行的數據通信,并利用NAND Flash實現對實時數據的備份,通過FPGA強大的并行處理能力,使得W5100對數據的通信和NAND Flash對數據的備份互不干擾。
該數據傳輸系統主要由XILINX公司生產的低成本、高性能的Spartan3E系列XC3S500E FPGA,WIZnet公司的集成了全硬件的TCP/IP協議棧、以太網介質傳輸層(MAC)和物理層(PHY)網絡接口芯片W5100,三星公司生產的大容量數據存儲的NAND Flash K9K4G08U0M,RS422接口芯片、雙絞線接口RJ45、電源模塊組成。系統結構框圖如圖1所示,數據采集模塊的數據經過數據傳輸系統內部的RS422接口芯片輸入到FPGA,經過FPGA的內部統一編幀后,通過W5100芯片傳輸到上位機的同時存儲到NAND Flash中用于數據分析和備份。

圖1 系統結構框圖
硬件設計包括FPGA與W5100接口設計,以及與外部存儲器Flash接口電路設計。FPGA的引腳的輸入輸出可配置性,極大的提高了外圍芯片與FPGA接口的靈活性。并且由于使用W5100不需要考慮以太網的控制,只需要進行簡單的端口編程,就能實現與上位機的通信,所以作為主控單元的FPGA
主要完成W5100寄存器的初始化和讀寫時序及NAND Flash的讀寫時序控制。
2.1 W5100的接口電路設計
W5100內部集成了全硬件的、且經過多年市場驗證的TCP/IP協議棧、以太網介質傳輸層(MAC)和物理層(PHY);并支持TCP、UDP、Ipv4、ICMP、ARP、IGMP和PPPoE等網絡協議;內置4個獨立的Socket端口,并能同時運行,通信速率最高可達到25 Mbit/s[3]。
本設計W5100采用直接尋址模式,FPGA通過設置 BIT16EN 信號為高電平將W5100配置成接收模塊,直接尋址模式下,FPGA通過地址總線可以訪問W5100的內部寄存器。W5100與FPGA的接口信號有15位地址總線(Addr[14~0])、8位數據總線(Data[7~0])以及一些控制信號[4]。W5100與FPGA的接口的原理圖如圖2所示。

圖2 W5100與FPGA的接口
為進一步優化系統性能,RJ45網絡接口選擇內部集成網絡變壓器,在實際的電路設計中,RJ45網絡接口的發送差分線和接收差分線之間要并聯2個49.9 Ω或者50 Ω(精度1%)的終接電阻,主要是為了實現阻抗匹配[5]。這樣設計可以增強信號,使其傳輸距離更遠的情況下,使芯片端與外部隔離,抗干擾能力大大增強,而且對芯片增加了很大的保護作用,當接到不同電平的網口時,不會對彼此設備造成影響并且在戶外操作時可以有效的抗雷擊、靜電。
2.2 外部存儲器的設計
由于在惡劣和苛刻的環境條件下,數據的采集和回收處理經常受到外界環境的干擾而導致重要數據的損壞和丟失,對數據備份也是必需的。而NAND Flash由于大容量,小體積,讀寫速度快,外圍接口電路簡單等特點,成為了當今數據存儲的最佳選擇。本系統采用三星公司的K9K4G08U0M閃存芯片,其具有4 Gbyte的容量,管腳分別為地址、命令和數據復用的接口(I/O0~I/O7),讀寫控制端口(/RE和/WE),地址鎖存(ALE)和命令鎖存(CLE),Flash工作狀態信號R/B[6]。當Flash處于忙狀態時,R/B信號將輸出低電平;當Flash處于空閑狀態時,R/B信號將輸出高電平。由于該信號是漏極開路端口,需要外接上拉電阻。

圖3 NAND Flash與FPGA的接口
與FPGA的接口連接如圖3所示,經外部數據采集模塊將相關的參量采樣并轉化為數字信號后,通過422串行總線傳輸給系統,系統內的FIFO作為緩沖器將高速采樣數據存儲,再由FPGA控制數據從FIFO中讀出寫入到NAND Flash 芯片中[7]。
系統軟件設計主要可分為FPGA控制W5100與上位機的傳輸和NAND Flash的存儲兩部分。在XILINX的ISE14.7的環境下用硬件表述語言VHDL完成程序的編寫。
3.1 W5100 程序設計
通過設置W5100的寄存器和存儲器,W5100就可以和上位機連接。W5100軟件程序設計流程主要為W5100的復位、公共寄存器的初始化、端口寄存器初始化和W5100的讀寫[8]。本系統中采用UDP網絡協議,本系統與上位機一對一連接,負荷小、數據的丟失的可能性小、端口不需要建立連接就可以進行數據傳輸,故其傳輸速率也比TCP模式高出許多。
W5100工作流程如圖4所示,系統上電后,首先進行W5100的復位,復位引腳低電平有效,低電平持續時間不小于2 μs。復位結束后系統對W5100公共寄存器和端口寄存器進行初始化[9]。在本系統中只選用Socket0進行通信,并分配8kbit的存儲空間給Socket0,使W5100有足夠大的接收和發送存儲空間,避免因數據量太大而導致數據的覆蓋和丟失。

圖4 W5100工作流程圖
采用ISE14.7的IP核中的單端口只讀ROM來進行公共寄存器和端口寄存器的初始化配置,將公共寄存器和端口寄存器的地址和相應的初始化值生成coe文件,將該coe文件加載到FPGA自帶的IP核搭建的ROM中,其配置過程如圖5所示[10]。首先生成1個txt的文本文檔,其文本內容首先定義數據的進制,memory_initialization_radix=16,即數據為16進制;另一部分是定義寄存器地址及寄存器的值,不同寄存器地址和值之間用逗號分離,將生成好的txt文本修改后綴名為coe文件,以后用記事本打開修改內容。之后在ISE軟件中新建1個IP core核,深度為64,寬度為16,讀取方式為只讀,將建立的coe文件載入此核中,生成rom。最后編寫VHDL程序讀取IP核中的數據。對W5100的公共寄存器和端口寄存器的初始化過程就是FPGA將初始化后的ROM里的值讀出來并寫入到W5100中。

圖5 ROM的初始化配置
表1中體現了W5100部分寄存器的地址和初始化值,圖5中的Memory Values里的值要與W5100寄存器的地址和初始化值一一對應。

表1 W5100部分寄存器配置
W5100的讀寫過程要嚴格遵守W5100芯片手冊中的時序要求,時序不對應可能會導致數據的丟失和出錯[7]。由于FPGA無總線接口,W5100中 Add、CS#、WR#、RD#、Data等信號只能由FPGA的I/O引腳直接控制,因此必須在程序中采取模擬總線時序的方法。
為驗證W5100是否初始化成功,可以使用W5100 提供的自動Ping響應和處理的命令,若W5100初始化成功,就可以自動響應Ping請求。Windows系統中提供了DOS命令ping,通過ping可以檢查,在Windows系統中點擊“開始”、“運行”,輸入命令ping 192.168.0.2,回車后,出現如圖6所示的結果,證明W5100初始化成功,ping通了。

圖6 使用ping命令檢驗W5100初始化成功
3.2 Flash程序設計
NAND Flash控制器完成的基本操作包括:壞塊檢測、Flash擦除、Flash寫、Flash讀[11]。為了避免數據讀寫過程受到壞塊干擾,必須首先對FLASH進行壞塊檢測。對于固有壞塊,利用FPGA對NAND Flash進行初始化,檢查塊標志4096列的值是否為FFH,當該塊為非OxFF時,表明該塊是壞塊。獲取壞塊信息后,進行壞塊統計并建立并更新壞塊表;對于進行操作時隨機產出新的壞塊,當對NAND Flash 進行寫操作或擦除操作時,可以根據狀態寄存器判斷 Flash 的運行是否成功,當狀態寄存器接收到錯誤信息時,即認定此時正在使用的塊是壞塊,需要用好塊進行替換,以保證數據的可靠性。

圖7 Flash操作狀態轉換
FLASH操作流程圖如圖7所示,在每次上電之后,FPGA對NAND Flash發起訪問時,通過壞塊表控制訪問地址實現壞塊的屏蔽[12]。之后,執行寫命令0x80,進入寫狀態,寫相應的有效塊地址,將FIFO中的數據寫入,寫命令0x10,等待R/B變為1,寫數據完成;執行讀命令0x00,進入讀狀態,寫入要讀數據的地址,寫命令0x30,按照讀時序將數據讀出。每一次壞塊判斷成功后,其對應FIFO地址加一。
運行網絡調試助手,對網絡進行初步的設置,協議類型設置為UDP,本地IP地址最終設置為192.168.10.106。本地端口號設置為5 000,如圖8所示通過該網絡調試助手向系統發送一組數據,系統成功將發送來的數據傳送回上位機,表明系統通信正常。

圖8 系統測試結果
本系統采用FPGA控制W5100對數據進行傳輸和NAND Flash對數據進行備份。給出了W5100接口電路設計和NAND Flash接口電路設計和測試結果。本文的創新點是加入了數據備份,確保了數據的安全,使系統能廣泛的應用于惡劣的環境。
[1] 祖靜,申湘南,張文棟. 存儲測試技術[J]. 測試技術學報,1994.8(2):25-31.
[2] 瞿鑫,吳云峰,李華棟,等. 基于FPGA的千兆以太網數據傳輸的設計與實現[J]. 電子器件,2014,37(4):662-664.
[3] WIZnet Co,W5100 Datasheet Ver.1.1.3,Wiznet Corporation[R]. Korea,WIZnet Co.,2006.
[4] 梁中英,蘇濤,武榮偉,等. 基于FPGA和W5100的以太網通信系統設計[J]. 通信技術2010,11(43):95-97.
[5] 鄒坤,石云波,焦佳偉,等. 基于以太網的加速度傳感器數據采集傳輸系統設計[J]. 傳感器與微系統,2015,34(12):66-68.
[6] Lasser M,Yair K. Flash Memory Management Method that is resistant to Data Corruptionby Power Loss:US 6,988,175 B2[P]. 2006:1-17.
[7] 王順,戴瑜興,段小康. 基于FPGA的NAND Flash控制接口電路設計[J]. 計算機科學與工程,2010.32(7).
[8] 陳實,王琪,張鐵軍,等. 一種基于W5100的數據傳輸系統[J]. 電子技術應用2010,29(12):54-60.
[9] 王炳義,劉爽,張偉,等. 基于硬件協議棧W5100的圖像采集傳輸系統[J]. 電子技術應用,2009,35(3):92-96.
[10] 劉東華. Xilinx系列FPGA芯片IP核詳解[M]. 北京:電子工業出版社,2013:301-308.
[11] Wang C,Wong W F. Extending the Lifetime of NAND Flash Memory by Salvaging Bad Blocks[C]//Proceedings of the Conference on Design,Automation and Test in Europe. EDA Consortium,2012:260-263.
[12] 舒文麗,吳云峰,趙啟義,等. NAND Flash存儲的壞塊管理方法[J]. 電子器件,2011,34(5):580-583.
The Design of the Data Transfer System Based on W5100 and FPGA*
GUOChun1,2,LIJinming1,2*,ZHUPing1,2,ZHANGHuwei1,2,GAOWengang1,2
(1.National Key Laboratory for Electronic Measurement Technology,North University of China,Taiyuan 030051,China;2.Key Laboratory of Instrumentation Science and Dynamic Measurement of Ministry of Education,North University of China,Taiyuan 030051,China)
In order to improve the real-time and stability of the storage test system,and to take into account the large amount of data and the security of data storage,a new wireless data transmission system is designed. The system adopts Ethernet interface design method of FPGA+W5100 architecture,the peripheral circuit using NAND Flash memory for data backup method introduces the external memory address of the bad block on Flash bad block detection,and gives the realization method of system components,hardware connection and software. This system enhances the security of data storage and meets the requirements of data communication in the remote and complex environment.
data transfer;Ethernet;W5100;FPGA;NAND flash;bad block detection

項目來源:國家自然科學基金項目(61335008)
2015-10-27 修改日期:2016-04-19
C:6210
10.3969/j.issn.1005-9490.2017.02.022
TP393
A
1005-9490(2017)02-0370-05