郭 淳,李錦明*,朱 平,張虎威,高文剛
(1.中北大學(xué)電子測(cè)試國(guó)家重點(diǎn)實(shí)驗(yàn)室,太原 030051;2.中北大學(xué)儀器科學(xué)與動(dòng)態(tài)測(cè)試教育部重點(diǎn)實(shí)驗(yàn)室,太原 030051)
基于FPGA+W5100的數(shù)據(jù)傳輸系統(tǒng)設(shè)計(jì)*
郭 淳1,2,李錦明1,2*,朱 平1,2,張虎威1,2,高文剛1,2
(1.中北大學(xué)電子測(cè)試國(guó)家重點(diǎn)實(shí)驗(yàn)室,太原 030051;2.中北大學(xué)儀器科學(xué)與動(dòng)態(tài)測(cè)試教育部重點(diǎn)實(shí)驗(yàn)室,太原 030051)
為提高存儲(chǔ)測(cè)試系統(tǒng)的實(shí)時(shí)性和穩(wěn)定性,并考慮到數(shù)據(jù)量較大和數(shù)據(jù)存儲(chǔ)安全的特點(diǎn),設(shè)計(jì)了一種新型無(wú)線數(shù)據(jù)傳輸系統(tǒng)。該系統(tǒng)采用FPGA+W5100架構(gòu)的以太網(wǎng)接口設(shè)計(jì)方法,外圍電路采用NAND Flash存儲(chǔ)器來(lái)作數(shù)據(jù)備份,引入了片外存儲(chǔ)壞塊地址的方法對(duì)Flash的壞塊進(jìn)行檢測(cè),并給出了系統(tǒng)的結(jié)構(gòu)組成、硬件連接和軟件實(shí)現(xiàn)方法。該系統(tǒng)增強(qiáng)了數(shù)據(jù)存儲(chǔ)安全性,滿足了遠(yuǎn)程和復(fù)雜環(huán)境下數(shù)據(jù)通信的要求。
數(shù)據(jù)傳輸;以太網(wǎng);W5100;FPGA;NAND Flash;壞塊檢測(cè)
現(xiàn)代數(shù)據(jù)存儲(chǔ)領(lǐng)域中,數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)采集、黑匣子記錄系統(tǒng)等工作過程中要求數(shù)據(jù)能夠準(zhǔn)確、安全傳輸存儲(chǔ),并且經(jīng)常要利用計(jì)算機(jī)進(jìn)行數(shù)據(jù)處理與計(jì)算,所以越來(lái)越多的現(xiàn)場(chǎng)采集設(shè)備需要擴(kuò)展網(wǎng)絡(luò)功能以實(shí)現(xiàn)遠(yuǎn)程控制和數(shù)據(jù)傳輸[1]。以太網(wǎng)以其開放性、可靠性、價(jià)格低、速度高、傳輸距離遠(yuǎn)、多種傳輸介質(zhì)可選、連接方式靈活多變、易于組網(wǎng)應(yīng)用等優(yōu)勢(shì)得到廣泛應(yīng)用。而基于WIZnet的W5100解決了傳統(tǒng)以太網(wǎng)需軟件實(shí)現(xiàn)TCP/IP協(xié)議棧開發(fā)周期長(zhǎng)、難度大的問題,同時(shí)也增強(qiáng)了系統(tǒng)數(shù)據(jù)傳輸穩(wěn)定性[2]。由于在惡劣和苛刻的環(huán)境條件下,數(shù)據(jù)的采集和回收處理經(jīng)常受到外界環(huán)境的干擾而導(dǎo)致重要數(shù)據(jù)的損壞和丟失,所以還需要對(duì)實(shí)時(shí)數(shù)據(jù)進(jìn)行備份。
鑒于動(dòng)態(tài)測(cè)試技術(shù)特點(diǎn)要求,設(shè)計(jì)了基于FPGA、W5100和NAND Flash的數(shù)據(jù)傳輸系統(tǒng)。采用W5100實(shí)現(xiàn)可靠穩(wěn)定運(yùn)行的數(shù)據(jù)通信,并利用NAND Flash實(shí)現(xiàn)對(duì)實(shí)時(shí)數(shù)據(jù)的備份,通過FPGA強(qiáng)大的并行處理能力,使得W5100對(duì)數(shù)據(jù)的通信和NAND Flash對(duì)數(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ù)存儲(chǔ)的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(jī)的同時(shí)存儲(chǔ)到NAND Flash中用于數(shù)據(jù)分析和備份。

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

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

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

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

圖5 ROM的初始化配置
表1中體現(xiàn)了W5100部分寄存器的地址和初始化值,圖5中的Memory Values里的值要與W5100寄存器的地址和初始化值一一對(duì)應(yīng)。

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

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

圖7 Flash操作狀態(tài)轉(zhuǎn)換
FLASH操作流程圖如圖7所示,在每次上電之后,FPGA對(duì)NAND Flash發(fā)起訪問時(shí),通過壞塊表控制訪問地址實(shí)現(xiàn)壞塊的屏蔽[12]。之后,執(zhí)行寫命令0x80,進(jìn)入寫狀態(tài),寫相應(yīng)的有效塊地址,將FIFO中的數(shù)據(jù)寫入,寫命令0x10,等待R/B變?yōu)?,寫數(shù)據(jù)完成;執(zhí)行讀命令0x00,進(jìn)入讀狀態(tài),寫入要讀數(shù)據(jù)的地址,寫命令0x30,按照讀時(shí)序?qū)?shù)據(jù)讀出。每一次壞塊判斷成功后,其對(duì)應(yīng)FIFO地址加一。
運(yùn)行網(wǎng)絡(luò)調(diào)試助手,對(duì)網(wǎng)絡(luò)進(jìn)行初步的設(shè)置,協(xié)議類型設(shè)置為UDP,本地IP地址最終設(shè)置為192.168.10.106。本地端口號(hào)設(shè)置為5 000,如圖8所示通過該網(wǎng)絡(luò)調(diào)試助手向系統(tǒng)發(fā)送一組數(shù)據(jù),系統(tǒng)成功將發(fā)送來(lái)的數(shù)據(jù)傳送回上位機(jī),表明系統(tǒng)通信正常。

圖8 系統(tǒng)測(cè)試結(jié)果
本系統(tǒng)采用FPGA控制W5100對(duì)數(shù)據(jù)進(jìn)行傳輸和NAND Flash對(duì)數(shù)據(jù)進(jìn)行備份。給出了W5100接口電路設(shè)計(jì)和NAND Flash接口電路設(shè)計(jì)和測(cè)試結(jié)果。本文的創(chuàng)新點(diǎn)是加入了數(shù)據(jù)備份,確保了數(shù)據(jù)的安全,使系統(tǒng)能廣泛的應(yīng)用于惡劣的環(huán)境。
[1] 祖靜,申湘南,張文棟. 存儲(chǔ)測(cè)試技術(shù)[J]. 測(cè)試技術(shù)學(xué)報(bào),1994.8(2):25-31.
[2] 瞿鑫,吳云峰,李華棟,等. 基于FPGA的千兆以太網(wǎng)數(shù)據(jù)傳輸?shù)脑O(shè)計(jì)與實(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ì)[J]. 通信技術(shù)2010,11(43):95-97.
[5] 鄒坤,石云波,焦佳偉,等. 基于以太網(wǎng)的加速度傳感器數(shù)據(jù)采集傳輸系統(tǒng)設(shè)計(jì)[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ì)[J]. 計(jì)算機(jī)科學(xué)與工程,2010.32(7).
[8] 陳實(shí),王琪,張鐵軍,等. 一種基于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存儲(chǔ)的壞塊管理方法[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

項(xiàng)目來(lái)源:國(guó)家自然科學(xué)基金項(xiàng)目(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