郭 淳,李錦明*,朱 平,張虎威,高文剛
(1.中北大學(xué)電子測試國家重點實驗室,太原 030051;2.中北大學(xué)儀器科學(xué)與動態(tài)測試教育部重點實驗室,太原 030051)
基于FPGA+W5100的數(shù)據(jù)傳輸系統(tǒng)設(shè)計*
郭 淳1,2,李錦明1,2*,朱 平1,2,張虎威1,2,高文剛1,2
(1.中北大學(xué)電子測試國家重點實驗室,太原 030051;2.中北大學(xué)儀器科學(xué)與動態(tài)測試教育部重點實驗室,太原 030051)
為提高存儲測試系統(tǒng)的實時性和穩(wěn)定性,并考慮到數(shù)據(jù)量較大和數(shù)據(jù)存儲安全的特點,設(shè)計了一種新型無線數(shù)據(jù)傳輸系統(tǒng)。該系統(tǒng)采用FPGA+W5100架構(gòu)的以太網(wǎng)接口設(shè)計方法,外圍電路采用NAND Flash存儲器來作數(shù)據(jù)備份,引入了片外存儲壞塊地址的方法對Flash的壞塊進行檢測,并給出了系統(tǒng)的結(jié)構(gòu)組成、硬件連接和軟件實現(xiàn)方法。該系統(tǒng)增強了數(shù)據(jù)存儲安全性,滿足了遠程和復(fù)雜環(huán)境下數(shù)據(jù)通信的要求。
數(shù)據(jù)傳輸;以太網(wǎng);W5100;FPGA;NAND Flash;壞塊檢測
現(xiàn)代數(shù)據(jù)存儲領(lǐng)域中,數(shù)據(jù)存儲、數(shù)據(jù)采集、黑匣子記錄系統(tǒng)等工作過程中要求數(shù)據(jù)能夠準(zhǔn)確、安全傳輸存儲,并且經(jīng)常要利用計算機進行數(shù)據(jù)處理與計算,所以越來越多的現(xiàn)場采集設(shè)備需要擴展網(wǎng)絡(luò)功能以實現(xiàn)遠程控制和數(shù)據(jù)傳輸[1]。以太網(wǎng)以其開放性、可靠性、價格低、速度高、傳輸距離遠、多種傳輸介質(zhì)可選、連接方式靈活多變、易于組網(wǎng)應(yīng)用等優(yōu)勢得到廣泛應(yīng)用。而基于WIZnet的W5100解決了傳統(tǒng)以太網(wǎng)需軟件實現(xiàn)TCP/IP協(xié)議棧開發(fā)周期長、難度大的問題,同時也增強了系統(tǒng)數(shù)據(jù)傳輸穩(wěn)定性[2]。由于在惡劣和苛刻的環(huán)境條件下,數(shù)據(jù)的采集和回收處理經(jīng)常受到外界環(huán)境的干擾而導(dǎo)致重要數(shù)據(jù)的損壞和丟失,所以還需要對實時數(shù)據(jù)進行備份。
鑒于動態(tài)測試技術(shù)特點要求,設(shè)計了基于FPGA、W5100和NAND Flash的數(shù)據(jù)傳輸系統(tǒng)。采用W5100實現(xiàn)可靠穩(wěn)定運行的數(shù)據(jù)通信,并利用NAND Flash實現(xiàn)對實時數(shù)據(jù)的備份,通過FPGA強大的并行處理能力,使得W5100對數(shù)據(jù)的通信和NAND Flash對數(shù)據(jù)的備份互不干擾。
該數(shù)據(jù)傳輸系統(tǒng)主要由XILINX公司生產(chǎn)的低成本、高性能的Spartan3E系列XC3S500E FPGA,WIZnet公司的集成了全硬件的TCP/IP協(xié)議棧、以太網(wǎng)介質(zhì)傳輸層(MAC)和物理層(PHY)網(wǎng)絡(luò)接口芯片W5100,三星公司生產(chǎn)的大容量數(shù)據(jù)存儲的NAND Flash K9K4G08U0M,RS422接口芯片、雙絞線接口RJ45、電源模塊組成。系統(tǒng)結(jié)構(gòu)框圖如圖1所示,數(shù)據(jù)采集模塊的數(shù)據(jù)經(jīng)過數(shù)據(jù)傳輸系統(tǒng)內(nèi)部的RS422接口芯片輸入到FPGA,經(jīng)過FPGA的內(nèi)部統(tǒng)一編幀后,通過W5100芯片傳輸?shù)缴衔粰C的同時存儲到NAND Flash中用于數(shù)據(jù)分析和備份。
圖1 系統(tǒng)結(jié)構(gòu)框圖
硬件設(shè)計包括FPGA與W5100接口設(shè)計,以及與外部存儲器Flash接口電路設(shè)計。FPGA的引腳的輸入輸出可配置性,極大的提高了外圍芯片與FPGA接口的靈活性。并且由于使用W5100不需要考慮以太網(wǎng)的控制,只需要進行簡單的端口編程,就能實現(xiàn)與上位機的通信,所以作為主控單元的FPGA
主要完成W5100寄存器的初始化和讀寫時序及NAND Flash的讀寫時序控制。
2.1 W5100的接口電路設(shè)計
W5100內(nèi)部集成了全硬件的、且經(jīng)過多年市場驗證的TCP/IP協(xié)議棧、以太網(wǎng)介質(zhì)傳輸層(MAC)和物理層(PHY);并支持TCP、UDP、Ipv4、ICMP、ARP、IGMP和PPPoE等網(wǎng)絡(luò)協(xié)議;內(nèi)置4個獨立的Socket端口,并能同時運行,通信速率最高可達到25 Mbit/s[3]。
本設(shè)計W5100采用直接尋址模式,FPGA通過設(shè)置 BIT16EN 信號為高電平將W5100配置成接收模塊,直接尋址模式下,FPGA通過地址總線可以訪問W5100的內(nèi)部寄存器。W5100與FPGA的接口信號有15位地址總線(Addr[14~0])、8位數(shù)據(jù)總線(Data[7~0])以及一些控制信號[4]。W5100與FPGA的接口的原理圖如圖2所示。
圖2 W5100與FPGA的接口
為進一步優(yōu)化系統(tǒng)性能,RJ45網(wǎng)絡(luò)接口選擇內(nèi)部集成網(wǎng)絡(luò)變壓器,在實際的電路設(shè)計中,RJ45網(wǎng)絡(luò)接口的發(fā)送差分線和接收差分線之間要并聯(lián)2個49.9 Ω或者50 Ω(精度1%)的終接電阻,主要是為了實現(xiàn)阻抗匹配[5]。這樣設(shè)計可以增強信號,使其傳輸距離更遠的情況下,使芯片端與外部隔離,抗干擾能力大大增強,而且對芯片增加了很大的保護作用,當(dāng)接到不同電平的網(wǎng)口時,不會對彼此設(shè)備造成影響并且在戶外操作時可以有效的抗雷擊、靜電。
2.2 外部存儲器的設(shè)計
由于在惡劣和苛刻的環(huán)境條件下,數(shù)據(jù)的采集和回收處理經(jīng)常受到外界環(huán)境的干擾而導(dǎo)致重要數(shù)據(jù)的損壞和丟失,對數(shù)據(jù)備份也是必需的。而NAND Flash由于大容量,小體積,讀寫速度快,外圍接口電路簡單等特點,成為了當(dāng)今數(shù)據(jù)存儲的最佳選擇。本系統(tǒng)采用三星公司的K9K4G08U0M閃存芯片,其具有4 Gbyte的容量,管腳分別為地址、命令和數(shù)據(jù)復(fù)用的接口(I/O0~I/O7),讀寫控制端口(/RE和/WE),地址鎖存(ALE)和命令鎖存(CLE),Flash工作狀態(tài)信號R/B[6]。當(dāng)Flash處于忙狀態(tài)時,R/B信號將輸出低電平;當(dāng)Flash處于空閑狀態(tài)時,R/B信號將輸出高電平。由于該信號是漏極開路端口,需要外接上拉電阻。
圖3 NAND Flash與FPGA的接口
與FPGA的接口連接如圖3所示,經(jīng)外部數(shù)據(jù)采集模塊將相關(guān)的參量采樣并轉(zhuǎn)化為數(shù)字信號后,通過422串行總線傳輸給系統(tǒng),系統(tǒng)內(nèi)的FIFO作為緩沖器將高速采樣數(shù)據(jù)存儲,再由FPGA控制數(shù)據(jù)從FIFO中讀出寫入到NAND Flash 芯片中[7]。
系統(tǒng)軟件設(shè)計主要可分為FPGA控制W5100與上位機的傳輸和NAND Flash的存儲兩部分。在XILINX的ISE14.7的環(huán)境下用硬件表述語言VHDL完成程序的編寫。
3.1 W5100 程序設(shè)計
通過設(shè)置W5100的寄存器和存儲器,W5100就可以和上位機連接。W5100軟件程序設(shè)計流程主要為W5100的復(fù)位、公共寄存器的初始化、端口寄存器初始化和W5100的讀寫[8]。本系統(tǒng)中采用UDP網(wǎng)絡(luò)協(xié)議,本系統(tǒng)與上位機一對一連接,負荷小、數(shù)據(jù)的丟失的可能性小、端口不需要建立連接就可以進行數(shù)據(jù)傳輸,故其傳輸速率也比TCP模式高出許多。
W5100工作流程如圖4所示,系統(tǒng)上電后,首先進行W5100的復(fù)位,復(fù)位引腳低電平有效,低電平持續(xù)時間不小于2 μs。復(fù)位結(jié)束后系統(tǒng)對W5100公共寄存器和端口寄存器進行初始化[9]。在本系統(tǒng)中只選用Socket0進行通信,并分配8kbit的存儲空間給Socket0,使W5100有足夠大的接收和發(fā)送存儲空間,避免因數(shù)據(jù)量太大而導(dǎo)致數(shù)據(jù)的覆蓋和丟失。
圖4 W5100工作流程圖
采用ISE14.7的IP核中的單端口只讀ROM來進行公共寄存器和端口寄存器的初始化配置,將公共寄存器和端口寄存器的地址和相應(yīng)的初始化值生成coe文件,將該coe文件加載到FPGA自帶的IP核搭建的ROM中,其配置過程如圖5所示[10]。首先生成1個txt的文本文檔,其文本內(nèi)容首先定義數(shù)據(jù)的進制,memory_initialization_radix=16,即數(shù)據(jù)為16進制;另一部分是定義寄存器地址及寄存器的值,不同寄存器地址和值之間用逗號分離,將生成好的txt文本修改后綴名為coe文件,以后用記事本打開修改內(nèi)容。之后在ISE軟件中新建1個IP core核,深度為64,寬度為16,讀取方式為只讀,將建立的coe文件載入此核中,生成rom。最后編寫VHDL程序讀取IP核中的數(shù)據(jù)。對W5100的公共寄存器和端口寄存器的初始化過程就是FPGA將初始化后的ROM里的值讀出來并寫入到W5100中。
圖5 ROM的初始化配置
表1中體現(xiàn)了W5100部分寄存器的地址和初始化值,圖5中的Memory Values里的值要與W5100寄存器的地址和初始化值一一對應(yīng)。
表1 W5100部分寄存器配置
W5100的讀寫過程要嚴(yán)格遵守W5100芯片手冊中的時序要求,時序不對應(yīng)可能會導(dǎo)致數(shù)據(jù)的丟失和出錯[7]。由于FPGA無總線接口,W5100中 Add、CS#、WR#、RD#、Data等信號只能由FPGA的I/O引腳直接控制,因此必須在程序中采取模擬總線時序的方法。
為驗證W5100是否初始化成功,可以使用W5100 提供的自動Ping響應(yīng)和處理的命令,若W5100初始化成功,就可以自動響應(yīng)Ping請求。Windows系統(tǒng)中提供了DOS命令ping,通過ping可以檢查,在Windows系統(tǒng)中點擊“開始”、“運行”,輸入命令ping 192.168.0.2,回車后,出現(xiàn)如圖6所示的結(jié)果,證明W5100初始化成功,ping通了。
圖6 使用ping命令檢驗W5100初始化成功
3.2 Flash程序設(shè)計
NAND Flash控制器完成的基本操作包括:壞塊檢測、Flash擦除、Flash寫、Flash讀[11]。為了避免數(shù)據(jù)讀寫過程受到壞塊干擾,必須首先對FLASH進行壞塊檢測。對于固有壞塊,利用FPGA對NAND Flash進行初始化,檢查塊標(biāo)志4096列的值是否為FFH,當(dāng)該塊為非OxFF時,表明該塊是壞塊。獲取壞塊信息后,進行壞塊統(tǒng)計并建立并更新壞塊表;對于進行操作時隨機產(chǎn)出新的壞塊,當(dāng)對NAND Flash 進行寫操作或擦除操作時,可以根據(jù)狀態(tài)寄存器判斷 Flash 的運行是否成功,當(dāng)狀態(tài)寄存器接收到錯誤信息時,即認定此時正在使用的塊是壞塊,需要用好塊進行替換,以保證數(shù)據(jù)的可靠性。
圖7 Flash操作狀態(tài)轉(zhuǎn)換
FLASH操作流程圖如圖7所示,在每次上電之后,FPGA對NAND Flash發(fā)起訪問時,通過壞塊表控制訪問地址實現(xiàn)壞塊的屏蔽[12]。之后,執(zhí)行寫命令0x80,進入寫狀態(tài),寫相應(yīng)的有效塊地址,將FIFO中的數(shù)據(jù)寫入,寫命令0x10,等待R/B變?yōu)?,寫數(shù)據(jù)完成;執(zhí)行讀命令0x00,進入讀狀態(tài),寫入要讀數(shù)據(jù)的地址,寫命令0x30,按照讀時序?qū)?shù)據(jù)讀出。每一次壞塊判斷成功后,其對應(yīng)FIFO地址加一。
運行網(wǎng)絡(luò)調(diào)試助手,對網(wǎng)絡(luò)進行初步的設(shè)置,協(xié)議類型設(shè)置為UDP,本地IP地址最終設(shè)置為192.168.10.106。本地端口號設(shè)置為5 000,如圖8所示通過該網(wǎng)絡(luò)調(diào)試助手向系統(tǒng)發(fā)送一組數(shù)據(jù),系統(tǒng)成功將發(fā)送來的數(shù)據(jù)傳送回上位機,表明系統(tǒng)通信正常。
圖8 系統(tǒng)測試結(jié)果
本系統(tǒng)采用FPGA控制W5100對數(shù)據(jù)進行傳輸和NAND Flash對數(shù)據(jù)進行備份。給出了W5100接口電路設(shè)計和NAND Flash接口電路設(shè)計和測試結(jié)果。本文的創(chuàng)新點是加入了數(shù)據(jù)備份,確保了數(shù)據(jù)的安全,使系統(tǒng)能廣泛的應(yīng)用于惡劣的環(huán)境。
[1] 祖靜,申湘南,張文棟. 存儲測試技術(shù)[J]. 測試技術(shù)學(xué)報,1994.8(2):25-31.
[2] 瞿鑫,吳云峰,李華棟,等. 基于FPGA的千兆以太網(wǎng)數(shù)據(jù)傳輸?shù)脑O(shè)計與實現(xiàn)[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的以太網(wǎng)通信系統(tǒng)設(shè)計[J]. 通信技術(shù)2010,11(43):95-97.
[5] 鄒坤,石云波,焦佳偉,等. 基于以太網(wǎng)的加速度傳感器數(shù)據(jù)采集傳輸系統(tǒng)設(shè)計[J]. 傳感器與微系統(tǒng),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控制接口電路設(shè)計[J]. 計算機科學(xué)與工程,2010.32(7).
[8] 陳實,王琪,張鐵軍,等. 一種基于W5100的數(shù)據(jù)傳輸系統(tǒng)[J]. 電子技術(shù)應(yīng)用2010,29(12):54-60.
[9] 王炳義,劉爽,張偉,等. 基于硬件協(xié)議棧W5100的圖像采集傳輸系統(tǒng)[J]. 電子技術(shù)應(yīng)用,2009,35(3):92-96.
[10] 劉東華. Xilinx系列FPGA芯片IP核詳解[M]. 北京:電子工業(yè)出版社,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
項目來源:國家自然科學(xué)基金項目(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