李加超,孟令軍,周之麗,韓朝輝
(中北大學(xué),電子測試技術(shù)國家重點(diǎn)實(shí)驗(yàn)室,太原030051)
?
基于FPGA的斷電續(xù)傳存儲(chǔ)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)*
李加超,孟令軍*,周之麗,韓朝輝
(中北大學(xué),電子測試技術(shù)國家重點(diǎn)實(shí)驗(yàn)室,太原030051)
摘要:針對(duì)遙測領(lǐng)域中數(shù)據(jù)記錄器面臨的高速輸入數(shù)據(jù)連續(xù)存儲(chǔ)和斷電續(xù)傳的技術(shù)難題,詳細(xì)介紹了NAND型Flash交替雙平面頁編程方式,分析了3種常用的NAND型Flash剩余容量檢測方法的特點(diǎn),提出了一種基于二分法和帶系統(tǒng)識(shí)別碼交替雙平面頁編程技術(shù)的NAND型Flash剩余容量快速檢測的方法,檢測結(jié)果高效準(zhǔn)確,檢測誤差可以達(dá)到10-4,并在此基礎(chǔ)上設(shè)計(jì)了具有斷電續(xù)傳功能的數(shù)據(jù)存儲(chǔ)系統(tǒng),設(shè)計(jì)方法簡單可靠,具有較好的應(yīng)用前景。
關(guān)鍵詞:NAND Flash;交替雙平面;頁編程;二分法;存儲(chǔ)系統(tǒng)
項(xiàng)目來源:基金項(xiàng)目:國家自然科學(xué)基金資助項(xiàng)目(51275491)
目前,NAND型Flash是一種在EEPROM基礎(chǔ)上發(fā)展而來的新興的存儲(chǔ)器件,具有非易失性、掉電后數(shù)據(jù)不丟失、存儲(chǔ)容量大等特點(diǎn),比較適合于數(shù)據(jù)存儲(chǔ)設(shè)備,廣泛應(yīng)用于工業(yè)自動(dòng)化、醫(yī)療衛(wèi)生、航空航天等各個(gè)行業(yè)[1]。
隨著遙測領(lǐng)域信息技術(shù)的高速發(fā)展,信息的需求量急劇增加,也對(duì)數(shù)據(jù)存儲(chǔ)系統(tǒng)提出了更高的要求。在一些特殊的應(yīng)用場合中,有時(shí)需要在系統(tǒng)斷電又重新上電的情況下繼續(xù)實(shí)時(shí)地存儲(chǔ)系統(tǒng)接收的關(guān)鍵性的數(shù)據(jù),并最終能夠?qū)崿F(xiàn)數(shù)據(jù)的回放,用于后續(xù)的數(shù)據(jù)分析和處理。因此,在現(xiàn)代數(shù)據(jù)存儲(chǔ)系統(tǒng)研究中,如何檢測存儲(chǔ)系統(tǒng)的剩余容量以實(shí)現(xiàn)數(shù)據(jù)的高速存儲(chǔ)與斷電續(xù)存,已經(jīng)成為研究的熱點(diǎn)問題[2-3]。
該數(shù)據(jù)存儲(chǔ)系統(tǒng)硬件部分主要包括FPGA主控模塊、MAX9250數(shù)據(jù)接收模塊、FLASH存儲(chǔ)器模塊、CY68013A接口模塊、電源模塊、配置電路模塊、下載接口模塊等,圖1為系統(tǒng)結(jié)構(gòu)框圖。FPGA主控模塊負(fù)責(zé)接收遙測設(shè)備下發(fā)的操作指令,將MAX9250接收到的數(shù)據(jù)存儲(chǔ)在FLASH存儲(chǔ)器中,或者將FLASH存儲(chǔ)器中的數(shù)據(jù)經(jīng)過CY68013接口模塊上傳給地面測試設(shè)備,用于數(shù)據(jù)分析處理。
圖1 系統(tǒng)結(jié)構(gòu)框圖
數(shù)據(jù)接收模塊主芯片采用27 bit,速度最高可達(dá)42 MHz的MAX9250 LVDS解串芯片,該芯片可以解串發(fā)送端串化芯片對(duì)應(yīng)引腳上所串化出來的電平特性,其具體數(shù)據(jù)傳輸位數(shù)可以根據(jù)設(shè)計(jì)需求以及發(fā)送端進(jìn)行配置。
CY7C68013A芯片是賽普拉斯半導(dǎo)體公司USB2.0控制器中的產(chǎn)品,支持速率為12 Mbit/s的全速傳輸和速率為480 Mbit/s的高速傳輸,用于數(shù)據(jù)存儲(chǔ)系統(tǒng)與地面測試設(shè)備之間的通信。
存儲(chǔ)器模塊選用SAMSUNG公司的NAND型Flash K9WAG08U1M芯片,其單片容量為2 Gbyte,其內(nèi)部是由兩片容量為1 Gbyte的K9K8G08U0M疊裝而成,并通過兩個(gè)CE端口進(jìn)行選通控制[4-5]。單片K9K8G08U0M由8192個(gè)存儲(chǔ)塊(Block)組成,每個(gè)存儲(chǔ)塊由64個(gè)頁(Page)組成,而每頁是由2k+64 byte組成,其中64個(gè)字節(jié)為空余區(qū),通常可用于錯(cuò)誤檢測和記錄特定信息[6]。
2.1交替雙平面頁編程
K9K8G08U0M芯片內(nèi)部陣列結(jié)構(gòu)如圖2所示,K9WAG08U1M可以看成是兩片K9K8G08U0M組成,分別記為片1與片2,通過芯片的CE1、CE2引腳進(jìn)行選通控制,當(dāng)CE1為低時(shí),可以認(rèn)為是對(duì)片1進(jìn)行讀、寫或者擦除等操作,當(dāng)CE2為低時(shí),可以認(rèn)為是對(duì)片2進(jìn)行相關(guān)操作[7-9]。
圖2 K9K8G08U0M型芯片內(nèi)部陣列結(jié)構(gòu)圖
交替雙平面頁編程是利用芯片內(nèi)部不同平面可以單獨(dú)操作的特性,對(duì)平面進(jìn)行流水線操作能夠大幅度提高單片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所示,在任何一個(gè)時(shí)間片上,總有若干個(gè)操作同時(shí)進(jìn)行,即實(shí)現(xiàn)了時(shí)間片上的復(fù)用,從而實(shí)現(xiàn)高速數(shù)據(jù)的連續(xù)存儲(chǔ),存儲(chǔ)速度達(dá)到35 Mbyte/s。
圖3 流水線工作原理
帶系統(tǒng)識(shí)別碼的交替雙平面頁編程方式為規(guī)定在片1平面0中所有塊的第1頁的第1個(gè)地址作為系統(tǒng)識(shí)別碼地址,在每次交替雙平面頁編程的過程中尋址到系統(tǒng)識(shí)別碼的地址時(shí)寫入系統(tǒng)識(shí)別碼(如0xDB),用來指示與平面0平行的塊中是否已經(jīng)寫入了數(shù)據(jù),因此,已經(jīng)寫入數(shù)據(jù)的存儲(chǔ)單元對(duì)應(yīng)的系統(tǒng)識(shí)別碼的地址存儲(chǔ)的數(shù)據(jù)為0xDB,反之為0xFF,相應(yīng)的交替雙平面頁編程流程圖如圖4所示。
圖4 帶系統(tǒng)識(shí)別碼的頁編程方式
2.2斷電續(xù)傳功能的實(shí)現(xiàn)
要實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)系統(tǒng)的斷電續(xù)傳的功能,系統(tǒng)必須在意外斷電又重新上電時(shí)自動(dòng)準(zhǔn)確識(shí)別出數(shù)據(jù)存儲(chǔ)系統(tǒng)在斷電前一刻記錄的位置,并將有效的編程地址反饋給主控制器,作為連續(xù)記錄時(shí)的首地址。由于數(shù)據(jù)存儲(chǔ)系統(tǒng)的存儲(chǔ)單元為NAND型Flash,因此Flash剩余容量的檢測顯得至關(guān)重要。
2.2.1逐字節(jié)檢測法
實(shí)現(xiàn)Flash剩余容量檢測有多種方法,最簡單的方法是對(duì)Flash內(nèi)存儲(chǔ)的數(shù)據(jù)進(jìn)行逐個(gè)字節(jié)檢測。由于Flash未寫入數(shù)據(jù)時(shí)讀回來的數(shù)據(jù)是0xFF,因此只要檢測Flash內(nèi)從哪個(gè)地址開始到最后一個(gè)地址的數(shù)據(jù)全是0xFF,就可以計(jì)算出剩余容量。這種方法雖然可行,但檢測過程中需要大量讀取Flash內(nèi)的數(shù)據(jù),甚至是所有數(shù)據(jù),檢測效率低。此外,如果由于某種特殊的需要,寫入Flash內(nèi)的數(shù)據(jù)就是0xFF,那么這種方法的檢測結(jié)果是不準(zhǔn)確的。
2.2.2信息記錄法
信息記錄法是規(guī)定Flash的第1塊第1頁中特定的存儲(chǔ)單元用來記錄上次頁編程的最后地址,系統(tǒng)上電后通過讀取該存儲(chǔ)單元的數(shù)據(jù)計(jì)算Flash的剩余容量,并更新下一次的頁編程地址,在數(shù)據(jù)存儲(chǔ)結(jié)束后,再將最后的頁編程地址更新到這個(gè)特定的存儲(chǔ)單元中。相比于逐個(gè)字節(jié)檢測的方法,這種方法不用大量檢測Flash內(nèi)的數(shù)據(jù),只需在每次數(shù)據(jù)記錄結(jié)束后更新第1塊第1頁中特定存儲(chǔ)單元即可,簡單易行。但這種方法也有一個(gè)弊端,如果Flash在斷電前沒有退出數(shù)據(jù)存儲(chǔ)狀態(tài),也就沒有機(jī)會(huì)把最后的頁編程地址更新到特定的存儲(chǔ)單元中,在下一次系統(tǒng)上電后獲取的頁編程地址必然是錯(cuò)誤的,此后的數(shù)據(jù)存儲(chǔ)過程中必然會(huì)出現(xiàn)大范圍誤碼或數(shù)據(jù)丟失。
2.2.3逐行檢測法
逐行檢測法是在帶系統(tǒng)識(shí)別碼的交替雙平面頁編程方法的基礎(chǔ)上進(jìn)行的,設(shè)計(jì)中所使用的NAND 型Flash K9WAG08U1M共2048個(gè)由存儲(chǔ)塊組成的行,共2 048個(gè)系統(tǒng)識(shí)別碼,讀取每個(gè)系統(tǒng)識(shí)別碼的時(shí)間約25 μs,如果Flash為空,檢測過程需要25 μs,如果Flash已寫滿,檢測過程需要51.2 ms,檢測過程需要的時(shí)間由Flash內(nèi)存儲(chǔ)數(shù)據(jù)的量決定。這種方法雖然可行,但略顯笨拙,且檢測過程所需時(shí)間是一個(gè)不確定的值,如果存儲(chǔ)器件由多個(gè)Flash串聯(lián)構(gòu)成,檢測時(shí)間成倍增長。
2.2.4基于二分法的Flash剩余容量檢測
基于二分法的Flash剩余容量檢測方法是在帶系統(tǒng)識(shí)別碼的交替雙平面頁編程基礎(chǔ)上的進(jìn)行的,對(duì)于NAND型Flash K9WAG08U1M芯片,二分法不是從第1行開始檢測系統(tǒng)識(shí)別碼的,而是先從地址為b'10000000000的行(十進(jìn)制為1024,總行數(shù)的一半)開始檢測系統(tǒng)識(shí)別碼。如果檢測結(jié)果為0xDB,表明已寫入數(shù)據(jù)的行地址超過了b'10000000000,下一次檢測系統(tǒng)識(shí)別碼的位置將選擇在從地址為b'10000000000的行到地址為b'11111111111的行的一半,即地址為b'11000000000的行;如果檢測的結(jié)果為0xFF,則表明數(shù)據(jù)未寫入到地址為b' 10000000000的行,下一次檢測系統(tǒng)識(shí)別碼的位置將選擇在從地址為b'00000000000的行到地址為b'10000000000的行的一半,即地址為b'01000000000的行。依次類推,每一次檢測都將檢測范圍縮小一半,不管Flash已寫入多少數(shù)據(jù),只需檢測11次 (275 μs)就能確定其剩余容量,并將有效的編程地址反饋給主控制器,作為連續(xù)記錄時(shí)的首地址,檢測流程如圖5所示。
圖5 二分法檢測流程
NAND型Flash K9WAG08U1M總?cè)萘繛? 048 Mbyte,每行包含8塊,共1 024 kbyte,則已寫入的數(shù)據(jù)量X為:
式中: C為按圖5所示檢測流程檢測后得到的行地址,其剩余存儲(chǔ)容量為:
圖6為用上位機(jī)對(duì)NAND型Flash K9WAG08U1M進(jìn)行剩余容量檢測的結(jié)果。NAND型Flash K9WAG08U1M總?cè)萘繛? Gbyte,每塊的存儲(chǔ)容量是128 kbyte,每一行包含8個(gè)塊(128×8=1 024 kbyte),因此基于二分法的Flash剩余容量檢測方法的最小檢測單位為1 Mbyte,檢測誤差度可以達(dá)到10-4。
圖6 檢測結(jié)果
為了驗(yàn)證該數(shù)據(jù)存儲(chǔ)系統(tǒng)的可行性與穩(wěn)定性,在讀取存儲(chǔ)器中的數(shù)據(jù)時(shí),系統(tǒng)識(shí)別碼(0XDB)也一起讀出,在正式工程中,系統(tǒng)識(shí)別碼是會(huì)被自動(dòng)忽略的。圖7為該數(shù)據(jù)存儲(chǔ)系統(tǒng)在存儲(chǔ)過程中意外斷電,然后重新上電后繼續(xù)記錄時(shí)存儲(chǔ)的數(shù)據(jù),其中圖7(a)為意外斷電時(shí)記錄的數(shù)據(jù),圖7(b)為重新上電后繼續(xù)記錄的數(shù)據(jù),從實(shí)驗(yàn)結(jié)果可以看出該數(shù)據(jù)存儲(chǔ)系統(tǒng)達(dá)到了預(yù)期的目標(biāo)。
圖7 存儲(chǔ)系統(tǒng)存儲(chǔ)的數(shù)據(jù)
本文在基于二分法和帶系統(tǒng)識(shí)別碼交替雙平面頁編程技術(shù)的NAND型Flash剩余容量快速檢測的方法的基礎(chǔ)上設(shè)計(jì)的具有斷電續(xù)傳功能的數(shù)據(jù)存儲(chǔ)系統(tǒng)在數(shù)據(jù)存儲(chǔ)速度和可靠性方面有了很大提高,在系統(tǒng)意外斷電、重新上電的情況下能繼續(xù)工作,完成數(shù)據(jù)的連續(xù)存儲(chǔ),該數(shù)據(jù)存儲(chǔ)系統(tǒng)的實(shí)現(xiàn)將在要求高速、高可靠性的存儲(chǔ)領(lǐng)域有廣泛的應(yī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的應(yīng)用設(shè)計(jì)[J].自動(dòng)化與儀表,2009,24(3) : 53-56.
[3]王順,戴瑜興,段小康.基于FPGA的NAND Flash控制接口電路設(shè)計(jì)[J].計(jì)算機(jī)工程與科學(xué),2010,32(7) : 80-82.
[4]沈浩,付宇卓.NAND Flash存儲(chǔ)控制器的軟硬件劃分設(shè)計(jì)[J].計(jì)算機(jī)工程,2004,30(24) : 168-171.
[5]吳鵬.高速實(shí)時(shí)Flash陣列數(shù)據(jù)采集系統(tǒng)研究與實(shí)現(xiàn)[D].南京:南京理工大學(xué),2007.
[6]唐磊,周旋,吳瑤,等.基于FPGA的K9F4G08 Flash控制器設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2010,36(5) : 57-59.
[7]張勝勇,高世杰,吳志勇,等.基于FPGA的NAND Flash壞塊處理方法[J].計(jì)算機(jī)工程,2010,36(6) : 239-243.
[8]晏敏,龍小奇,章兢,等.開放式大容量NAND Flash數(shù)據(jù)存儲(chǔ)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].微電子學(xué)與計(jì)算機(jī),2009,26(11) :13-16.
[9]舒文麗,吳云峰,孫長勝,等.基于NAND Flash的海量存儲(chǔ)器的設(shè)計(jì)[J].電子器件,2012,35(1) : 107-110.
[10]舒文麗,吳云峰,趙啟義,等.NAND Flash存儲(chǔ)的壞塊管理方法[J].電子器件,2011,34(5),580-583.
[11]劉東海,任勇峰,儲(chǔ)成君.基于FPGA控制的NAND Flash存儲(chǔ)設(shè)計(jì)[J].科學(xué)技術(shù)與工程,2013,13(34) : 10349-10353.
[12]劉泳銳,劉文怡,張彥軍.聲無線傳感網(wǎng)絡(luò)節(jié)點(diǎn)數(shù)據(jù)高速存儲(chǔ)實(shí)現(xiàn)[J].電子器件,2013,36(5) : 696-699.
李加超(1988-),男,漢族,山東臨沂人,碩士研究生,主要研究方向?yàn)槲⒓{儀器及測試技術(shù)、集成測試系統(tǒng)及儀器;
孟令軍(1969-),男,漢族,博士,副教授,碩士生導(dǎo)師,主要研究方向?yàn)閯?dòng)態(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
中圖分類號(hào):TN402
文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1005-9490(2015) 03-0588-04
收稿日期:2014-07-11修改日期: 2014-08-10
doi:EEACC: 6230B10.3969/j.issn.1005-9490.2015.03.023