李加超,孟令軍,周之麗,韓朝輝
(中北大學,電子測試技術(shù)國家重點實驗室,太原030051)
?
基于FPGA的斷電續(xù)傳存儲系統(tǒng)的設計與實現(xiàn)*
李加超,孟令軍*,周之麗,韓朝輝
(中北大學,電子測試技術(shù)國家重點實驗室,太原030051)
摘要:針對遙測領域中數(shù)據(jù)記錄器面臨的高速輸入數(shù)據(jù)連續(xù)存儲和斷電續(xù)傳的技術(shù)難題,詳細介紹了NAND型Flash交替雙平面頁編程方式,分析了3種常用的NAND型Flash剩余容量檢測方法的特點,提出了一種基于二分法和帶系統(tǒng)識別碼交替雙平面頁編程技術(shù)的NAND型Flash剩余容量快速檢測的方法,檢測結(jié)果高效準確,檢測誤差可以達到10-4,并在此基礎上設計了具有斷電續(xù)傳功能的數(shù)據(jù)存儲系統(tǒng),設計方法簡單可靠,具有較好的應用前景。
關(guān)鍵詞:NAND Flash;交替雙平面;頁編程;二分法;存儲系統(tǒng)
項目來源:基金項目:國家自然科學基金資助項目(51275491)
目前,NAND型Flash是一種在EEPROM基礎上發(fā)展而來的新興的存儲器件,具有非易失性、掉電后數(shù)據(jù)不丟失、存儲容量大等特點,比較適合于數(shù)據(jù)存儲設備,廣泛應用于工業(yè)自動化、醫(yī)療衛(wèi)生、航空航天等各個行業(yè)[1]。
隨著遙測領域信息技術(shù)的高速發(fā)展,信息的需求量急劇增加,也對數(shù)據(jù)存儲系統(tǒng)提出了更高的要求。在一些特殊的應用場合中,有時需要在系統(tǒng)斷電又重新上電的情況下繼續(xù)實時地存儲系統(tǒng)接收的關(guān)鍵性的數(shù)據(jù),并最終能夠?qū)崿F(xiàn)數(shù)據(jù)的回放,用于后續(xù)的數(shù)據(jù)分析和處理。因此,在現(xiàn)代數(shù)據(jù)存儲系統(tǒng)研究中,如何檢測存儲系統(tǒng)的剩余容量以實現(xiàn)數(shù)據(jù)的高速存儲與斷電續(xù)存,已經(jīng)成為研究的熱點問題[2-3]。
該數(shù)據(jù)存儲系統(tǒng)硬件部分主要包括FPGA主控模塊、MAX9250數(shù)據(jù)接收模塊、FLASH存儲器模塊、CY68013A接口模塊、電源模塊、配置電路模塊、下載接口模塊等,圖1為系統(tǒng)結(jié)構(gòu)框圖。FPGA主控模塊負責接收遙測設備下發(fā)的操作指令,將MAX9250接收到的數(shù)據(jù)存儲在FLASH存儲器中,或者將FLASH存儲器中的數(shù)據(jù)經(jīng)過CY68013接口模塊上傳給地面測試設備,用于數(shù)據(jù)分析處理。
圖1 系統(tǒng)結(jié)構(gòu)框圖
數(shù)據(jù)接收模塊主芯片采用27 bit,速度最高可達42 MHz的MAX9250 LVDS解串芯片,該芯片可以解串發(fā)送端串化芯片對應引腳上所串化出來的電平特性,其具體數(shù)據(jù)傳輸位數(shù)可以根據(jù)設計需求以及發(fā)送端進行配置。
CY7C68013A芯片是賽普拉斯半導體公司USB2.0控制器中的產(chǎn)品,支持速率為12 Mbit/s的全速傳輸和速率為480 Mbit/s的高速傳輸,用于數(shù)據(jù)存儲系統(tǒng)與地面測試設備之間的通信。
存儲器模塊選用SAMSUNG公司的NAND型Flash K9WAG08U1M芯片,其單片容量為2 Gbyte,其內(nèi)部是由兩片容量為1 Gbyte的K9K8G08U0M疊裝而成,并通過兩個CE端口進行選通控制[4-5]。單片K9K8G08U0M由8192個存儲塊(Block)組成,每個存儲塊由64個頁(Page)組成,而每頁是由2k+64 byte組成,其中64個字節(jié)為空余區(qū),通??捎糜阱e誤檢測和記錄特定信息[6]。
2.1交替雙平面頁編程
K9K8G08U0M芯片內(nèi)部陣列結(jié)構(gòu)如圖2所示,K9WAG08U1M可以看成是兩片K9K8G08U0M組成,分別記為片1與片2,通過芯片的CE1、CE2引腳進行選通控制,當CE1為低時,可以認為是對片1進行讀、寫或者擦除等操作,當CE2為低時,可以認為是對片2進行相關(guān)操作[7-9]。
圖2 K9K8G08U0M型芯片內(nèi)部陣列結(jié)構(gòu)圖
交替雙平面頁編程是利用芯片內(nèi)部不同平面可以單獨操作的特性,對平面進行流水線操作能夠大幅度提高單片F(xiàn)lash的寫入速度[10-12]。如令片1中plane0和plane1為A組;片1中plane2和plane3為B組;片2中plane0和plane1為C組;片2中plane2 和plane3為D組,片內(nèi)寫操作流水線工作原理如圖3所示,在任何一個時間片上,總有若干個操作同時進行,即實現(xiàn)了時間片上的復用,從而實現(xiàn)高速數(shù)據(jù)的連續(xù)存儲,存儲速度達到35 Mbyte/s。
圖3 流水線工作原理
帶系統(tǒng)識別碼的交替雙平面頁編程方式為規(guī)定在片1平面0中所有塊的第1頁的第1個地址作為系統(tǒng)識別碼地址,在每次交替雙平面頁編程的過程中尋址到系統(tǒng)識別碼的地址時寫入系統(tǒng)識別碼(如0xDB),用來指示與平面0平行的塊中是否已經(jīng)寫入了數(shù)據(jù),因此,已經(jīng)寫入數(shù)據(jù)的存儲單元對應的系統(tǒng)識別碼的地址存儲的數(shù)據(jù)為0xDB,反之為0xFF,相應的交替雙平面頁編程流程圖如圖4所示。
圖4 帶系統(tǒng)識別碼的頁編程方式
2.2斷電續(xù)傳功能的實現(xiàn)
要實現(xiàn)數(shù)據(jù)存儲系統(tǒng)的斷電續(xù)傳的功能,系統(tǒng)必須在意外斷電又重新上電時自動準確識別出數(shù)據(jù)存儲系統(tǒng)在斷電前一刻記錄的位置,并將有效的編程地址反饋給主控制器,作為連續(xù)記錄時的首地址。由于數(shù)據(jù)存儲系統(tǒng)的存儲單元為NAND型Flash,因此Flash剩余容量的檢測顯得至關(guān)重要。
2.2.1逐字節(jié)檢測法
實現(xiàn)Flash剩余容量檢測有多種方法,最簡單的方法是對Flash內(nèi)存儲的數(shù)據(jù)進行逐個字節(jié)檢測。由于Flash未寫入數(shù)據(jù)時讀回來的數(shù)據(jù)是0xFF,因此只要檢測Flash內(nèi)從哪個地址開始到最后一個地址的數(shù)據(jù)全是0xFF,就可以計算出剩余容量。這種方法雖然可行,但檢測過程中需要大量讀取Flash內(nèi)的數(shù)據(jù),甚至是所有數(shù)據(jù),檢測效率低。此外,如果由于某種特殊的需要,寫入Flash內(nèi)的數(shù)據(jù)就是0xFF,那么這種方法的檢測結(jié)果是不準確的。
2.2.2信息記錄法
信息記錄法是規(guī)定Flash的第1塊第1頁中特定的存儲單元用來記錄上次頁編程的最后地址,系統(tǒng)上電后通過讀取該存儲單元的數(shù)據(jù)計算Flash的剩余容量,并更新下一次的頁編程地址,在數(shù)據(jù)存儲結(jié)束后,再將最后的頁編程地址更新到這個特定的存儲單元中。相比于逐個字節(jié)檢測的方法,這種方法不用大量檢測Flash內(nèi)的數(shù)據(jù),只需在每次數(shù)據(jù)記錄結(jié)束后更新第1塊第1頁中特定存儲單元即可,簡單易行。但這種方法也有一個弊端,如果Flash在斷電前沒有退出數(shù)據(jù)存儲狀態(tài),也就沒有機會把最后的頁編程地址更新到特定的存儲單元中,在下一次系統(tǒng)上電后獲取的頁編程地址必然是錯誤的,此后的數(shù)據(jù)存儲過程中必然會出現(xiàn)大范圍誤碼或數(shù)據(jù)丟失。
2.2.3逐行檢測法
逐行檢測法是在帶系統(tǒng)識別碼的交替雙平面頁編程方法的基礎上進行的,設計中所使用的NAND 型Flash K9WAG08U1M共2048個由存儲塊組成的行,共2 048個系統(tǒng)識別碼,讀取每個系統(tǒng)識別碼的時間約25 μs,如果Flash為空,檢測過程需要25 μs,如果Flash已寫滿,檢測過程需要51.2 ms,檢測過程需要的時間由Flash內(nèi)存儲數(shù)據(jù)的量決定。這種方法雖然可行,但略顯笨拙,且檢測過程所需時間是一個不確定的值,如果存儲器件由多個Flash串聯(lián)構(gòu)成,檢測時間成倍增長。
2.2.4基于二分法的Flash剩余容量檢測
基于二分法的Flash剩余容量檢測方法是在帶系統(tǒng)識別碼的交替雙平面頁編程基礎上的進行的,對于NAND型Flash K9WAG08U1M芯片,二分法不是從第1行開始檢測系統(tǒng)識別碼的,而是先從地址為b'10000000000的行(十進制為1024,總行數(shù)的一半)開始檢測系統(tǒng)識別碼。如果檢測結(jié)果為0xDB,表明已寫入數(shù)據(jù)的行地址超過了b'10000000000,下一次檢測系統(tǒng)識別碼的位置將選擇在從地址為b'10000000000的行到地址為b'11111111111的行的一半,即地址為b'11000000000的行;如果檢測的結(jié)果為0xFF,則表明數(shù)據(jù)未寫入到地址為b' 10000000000的行,下一次檢測系統(tǒng)識別碼的位置將選擇在從地址為b'00000000000的行到地址為b'10000000000的行的一半,即地址為b'01000000000的行。依次類推,每一次檢測都將檢測范圍縮小一半,不管Flash已寫入多少數(shù)據(jù),只需檢測11次 (275 μs)就能確定其剩余容量,并將有效的編程地址反饋給主控制器,作為連續(xù)記錄時的首地址,檢測流程如圖5所示。
圖5 二分法檢測流程
NAND型Flash K9WAG08U1M總?cè)萘繛? 048 Mbyte,每行包含8塊,共1 024 kbyte,則已寫入的數(shù)據(jù)量X為:
式中: C為按圖5所示檢測流程檢測后得到的行地址,其剩余存儲容量為:
圖6為用上位機對NAND型Flash K9WAG08U1M進行剩余容量檢測的結(jié)果。NAND型Flash K9WAG08U1M總?cè)萘繛? Gbyte,每塊的存儲容量是128 kbyte,每一行包含8個塊(128×8=1 024 kbyte),因此基于二分法的Flash剩余容量檢測方法的最小檢測單位為1 Mbyte,檢測誤差度可以達到10-4。
圖6 檢測結(jié)果
為了驗證該數(shù)據(jù)存儲系統(tǒng)的可行性與穩(wěn)定性,在讀取存儲器中的數(shù)據(jù)時,系統(tǒng)識別碼(0XDB)也一起讀出,在正式工程中,系統(tǒng)識別碼是會被自動忽略的。圖7為該數(shù)據(jù)存儲系統(tǒng)在存儲過程中意外斷電,然后重新上電后繼續(xù)記錄時存儲的數(shù)據(jù),其中圖7(a)為意外斷電時記錄的數(shù)據(jù),圖7(b)為重新上電后繼續(xù)記錄的數(shù)據(jù),從實驗結(jié)果可以看出該數(shù)據(jù)存儲系統(tǒng)達到了預期的目標。
圖7 存儲系統(tǒng)存儲的數(shù)據(jù)
本文在基于二分法和帶系統(tǒng)識別碼交替雙平面頁編程技術(shù)的NAND型Flash剩余容量快速檢測的方法的基礎上設計的具有斷電續(xù)傳功能的數(shù)據(jù)存儲系統(tǒng)在數(shù)據(jù)存儲速度和可靠性方面有了很大提高,在系統(tǒng)意外斷電、重新上電的情況下能繼續(xù)工作,完成數(shù)據(jù)的連續(xù)存儲,該數(shù)據(jù)存儲系統(tǒng)的實現(xiàn)將在要求高速、高可靠性的存儲領域有廣泛的應用前景。
參考文獻:
[1]Qin Xi,F(xiàn)eng Changqing,Zhang Deliang.A Low Dead Time Vernier Delay Line TDC Implemented in an Actel Flash-Based FPGA[J].Nuclear Science and Techniques,2013,24(4) : 61-67.
[2]何劍鋒,李大暉,李祥.基于ARM嵌入式uClinux下NANDFlash的應用設計[J].自動化與儀表,2009,24(3) : 53-56.
[3]王順,戴瑜興,段小康.基于FPGA的NAND Flash控制接口電路設計[J].計算機工程與科學,2010,32(7) : 80-82.
[4]沈浩,付宇卓.NAND Flash存儲控制器的軟硬件劃分設計[J].計算機工程,2004,30(24) : 168-171.
[5]吳鵬.高速實時Flash陣列數(shù)據(jù)采集系統(tǒng)研究與實現(xiàn)[D].南京:南京理工大學,2007.
[6]唐磊,周旋,吳瑤,等.基于FPGA的K9F4G08 Flash控制器設計[J].電子技術(shù)應用,2010,36(5) : 57-59.
[7]張勝勇,高世杰,吳志勇,等.基于FPGA的NAND Flash壞塊處理方法[J].計算機工程,2010,36(6) : 239-243.
[8]晏敏,龍小奇,章兢,等.開放式大容量NAND Flash數(shù)據(jù)存儲系統(tǒng)設計與實現(xiàn)[J].微電子學與計算機,2009,26(11) :13-16.
[9]舒文麗,吳云峰,孫長勝,等.基于NAND Flash的海量存儲器的設計[J].電子器件,2012,35(1) : 107-110.
[10]舒文麗,吳云峰,趙啟義,等.NAND Flash存儲的壞塊管理方法[J].電子器件,2011,34(5),580-583.
[11]劉東海,任勇峰,儲成君.基于FPGA控制的NAND Flash存儲設計[J].科學技術(shù)與工程,2013,13(34) : 10349-10353.
[12]劉泳銳,劉文怡,張彥軍.聲無線傳感網(wǎng)絡節(jié)點數(shù)據(jù)高速存儲實現(xiàn)[J].電子器件,2013,36(5) : 696-699.
李加超(1988-),男,漢族,山東臨沂人,碩士研究生,主要研究方向為微納儀器及測試技術(shù)、集成測試系統(tǒng)及儀器;
孟令軍(1969-),男,漢族,博士,副教授,碩士生導師,主要研究方向為動態(tài)測試技術(shù)與智能儀器、微系統(tǒng)集成、無線傳感器。
The Design of Solid-State Memory Having the Function of Power Down-Surviving*
JIAN Shaokun1,2,ZHANG Huixin1,2*
(1.National Kay Laboratory For Electronic Measurement Technology(North University of China),Taiyuan 030051,China; 2.Kay Laboratory of Instrumentation Science and Dynamic Measurement of Ministry of Education,Taiyuan 030051,China)
Abstract:For aircraft during flight due to accidental instantaneous power-down and led to the stored data being overwritten,so a design of solid-state memory has been forward for holding the function of power down-surviving.Taking FPGA as the main control chip,RS-422 and LVDS as the hardware communication means,NAND FLASH as the memory core.The function of power down-surviving is realized by programming based on the storage mode of interleave two-plane.The large number of scientific analysis of measured data show that the design of solid-state memory having the function of power down-surviving has been realized,solving the problem because of instantaneous power down led to record data being overwritten,meeting the needs of a particular model of aircraft.
Key words:solid-state memory; power down-surviving; FPGA; LVDS; FLASH
中圖分類號:TN402
文獻標識碼:A
文章編號:1005-9490(2015) 03-0588-04
收稿日期:2014-07-11修改日期: 2014-08-10
doi:EEACC: 6230B10.3969/j.issn.1005-9490.2015.03.023