菅少坤,張會新*
(1.電子測試技術國家重點實驗室(中北大學),太原030051; 2.儀器科學與動態測試教育部重點實驗室,太原030051)
?
具有斷電續存功能固態存儲器的設計*
菅少坤1,2,張會新1,2*
(1.電子測試技術國家重點實驗室(中北大學),太原030051; 2.儀器科學與動態測試教育部重點實驗室,太原030051)
摘要:針對飛行器飛行過程中因偶然瞬時斷電而導致已存儲的數據會被覆蓋記錄的問題而提出了具有斷電續存功能固態存儲器的設計方案。以FPGA作為主控芯片,RS-422與LVDS作為硬件通信手段,NAND型FLASH為存儲核心,著重在交替雙平面存儲方式的基礎上通過編程實現了斷電續存功能。經大量實測數據的科學分析表明,具有斷電續存功能固態存儲器的設計已成功實現,解決了瞬時斷電后數據會被覆蓋記錄的問題,滿足某型號飛行器的需要。
關鍵詞:固態存儲器;斷電續存; FPGA; LVDS; FLASH
項目來源:航天一院一部項目
隨著科技的發展,飛行器的結構更加的復雜,飛行器飛行過程中出現偶然瞬時斷電的概率越來越高,而偶然瞬時斷電會導致已存儲的數據被覆蓋記錄的問題,這種情況極其不利于科研。為此,設計了一種斷電并恢復供電后在不覆蓋原數據的基礎上繼續記錄的固態存儲器,同時可記錄斷電次數并通過斷電次數拆分出相應瞬時斷電后所記錄的數據。在科研調試階段,多次測試后只需重新供電一次即可讀取全部數據,可以減輕供配電系統工作負擔,減少科研資金,縮短科研時間。
總體結構設計主要分4個模塊,分別為:供電模塊、采集模塊、緩存模塊、存儲模塊。供電模塊中因采集圖像數據速度過快易受干擾,故需要單獨供電;采集模塊主要采集PCM數據和圖像數據,采集的PCM數據經電平轉換后緩存到FPGA內部8KFIFO中,圖像數據經數據隔離器后將數字信號緩存到FPGA內部45KFIFO中[1-2];緩存模塊主要緩存PCM數據和圖像數據,以便存儲模塊混編存儲。總體結構如圖1所示。

圖1 總體結構框圖
PCM數據接收模塊采用技術非常成熟的RS-422通信接口,主控芯片為DS26C32,電平轉換芯片為SN74LV4245,電平轉換為5 V~3.3 V;圖像數據接收模塊采用速度遠快于RS-422的LVDS通信,主控芯片為SN65LV1224,采集的數據經ADUM1400進行模數隔離,隔離后將數字信號發給FPGA。中心程序處理器采用XILINX生產的XC3S1400,總內存空間為72 kbyte,給PCM數據分配8 kbyte緩存空間,圖像數據分配45 kbyte緩存空間,所以不需要配置外部FIFO即可實現數據的緩存[3-4]。
數據存儲模塊采用三星公司生產的K9WBG08U1M,該芯片內部封裝了2個完全相同單元,各有一個片選信號CE控制,每個單元有4個plane,每個plane有2 048個block,每個block有64 個page,每個page存儲空間為4 kbyte及128 byte的擴展存儲區。所以每片K9WBG08U1M共8個plane,每排共8個block,共2×8192block塊,4 Gbyte的存儲空間。K9WBG08U1M平面結構示意圖如圖2所示。

圖2 K9WBG08U1M平面結構示意圖
3.1邊擦邊寫設計
為實現斷電續存功能,必須解決兩個問題,第1:如何找到上次斷電時數據存儲的最后地址; 第2:如何確定斷電次數。存儲器每次執行擦除命令時,有效數據和斷電次數歸零,所以為解決這兩個問題,必須從數據存儲特點入手。根據K9WBG08U1M雙片選的結構特點(每片FLASH 有8個Plane),采用雙片選interleave two-plane頁編程方式存儲數據,這樣就形成了每8個平面的8個塊為一個操作排列。block擦除操作時如果結合對片選信號的切換,那么即可實現雙片選雙平面block擦除的操作方式,這樣就實現了一次擦除一排8塊的特點[5-8]。雙片選雙平面block擦除的時序圖如圖3所示。

圖3 雙片選雙平面block擦除時序圖
對FLASH頁編程時,根據擦除方式對interleave two-plane頁編程方式進行改進,加入片選后即實現了雙片選交替雙平面頁編程的特點,編程的平面示意圖如圖4所示。一般的邊擦編寫順序為檢查第N塊,擦除第N塊,頁編程第N塊;采用雙片選邊擦邊寫流程后,一次擦除8個block,然后采用圖4所示的頁編程方式,這樣保證了每次頁編程的數據塊之后總有至少8個block的“FF”塊。

圖4 雙片選交替雙片面頁編程平面示意圖
3.2斷電續存功能的實現
根據斷電后數據存儲的結尾處有“FF”塊的特點,可以解決查找斷電時所存儲到的block塊地址問題。為了方便查找斷電次數,在Flash頁編編程時每頁數據的第1個字節(頁計數之前)存儲斷電次數,然后采用檢查無效塊的方式來確定首段“FF”塊的地址。最后,要找到“FF”塊,只需根據雙片選交替雙平面頁編程特別,查找第1個plane的每塊的第1頁的前一百個字節即可以完全確定斷電地址和斷電次數。由于無效塊的初始數據也可能為FF,所以為了確保查找“FF”塊的準確性,查找前應確定該塊為有效塊。需要注意的是:檢查無效塊時是檢查所有block塊,而查找“FF”塊則是在有效塊的基礎上僅檢查第1個 plane的所有block塊。具體流程圖如圖5所示。
圖5中FF_CNT表示FF字節計數器; POWER_ CNT_BUF用來緩存該塊第1個字節的數據,即緩存斷電次數; POWER_CNT用來存儲本次斷電次數; FLASHDO表示從FLASH中讀出的數據; COUNTB為塊地址計數器,提供檢查無效塊地址; COUNTB_ BUF用來緩存斷電地址。

圖5 查找斷電地址與斷電次數流程圖
當FF_CNT= 0時表示從設定的塊地址的首頁讀出來了第1個數據,將該值賦給POWER_CNT_ BEF是為了保持斷電次數實時更新,且暫存以前斷電次數。因存儲的數據格式設定為每頁第1個字節記錄的是斷電次數,所以讀出來的第1個數據其值表示存儲該塊數據時的斷電次數或者為FF,若該值不為FF則表示為斷電次數。將緩存在POWER_ CNT_BUF的值賦給POWER_CNT,表示該值為存儲該塊數據時的斷電次數,那么FF_CNT歸零同時塊地址計數器COUNTB加2(因同一個plane里連續block塊地址值差2,如圖2所示)進入下一個循環;若該值為FF則可能為所要查找的“FF”塊,那么FF _CNT加1然后返回繼續讀該頁的下一個字節,當連續讀出了100個FF時,即可確定找到了“FF”塊。找到“FF”塊后,斷電計數器POWER_CNT加1和FF_CNT歸零,POWER_CNT加1后表示第幾次斷電并在本次存儲數據的每頁的第1個字節寫入該值,為下次查找斷電次數做準備。同時將查找到的“FF”塊的塊地址COUNTB賦給COUNTB_BUF作為本次存儲數據的起始地址。
根據本設計頁編程的特點,斷電時每次FLASH中正在進行頁編程的block塊一般不能全部編程完成,而重新上電后會在下一塊開始存儲,所以兩次連續斷電所記錄的數據之間一般存在一段“FF”數據,“FF”數據的頁數為0~512(8×64)之間。因存儲的有效數據為PCM數據和圖像數據,且在FLASH中存儲的方式為混編存儲,所以回讀上的數據需進行拆分處理,上位機根據不同的斷電計數器的值將PCM數據和圖像數據拆分到不同的數據包中,且數據包的文件名中顯示了為第幾次斷電存儲的數據。處拆分后的數據中不包含斷電次數。根據拆分數據的結果也可以判斷出斷電續存功能是否完成,更可以直觀的判斷出存儲數據期間存儲器斷電的次數。
3.3斷電續存功能可靠性分析
固態存儲器每次上電時首先進行初始化,初始化工作主要是找出并記錄斷電次數和存儲的初始地址。為了不影響對固態存儲器的正常操作,初始化固態存儲器的時間必須在短時間內執行完,并且保存最后的斷電記錄地址和斷電次數。
初始化所用時間計算。每個block檢查2個page,一排block無效塊檢查所用時間Tb為: Tb= (tWB+tR+tRR+N×T)×8個block塊×2個page = (194.46 ns+25 μs+20 ns+27×13.89 ns)×2×8 = 409 431.84 ns=0.41 ms;
檢查一個block塊是否為“FF”塊所用時間Tf為:

tWB、tR、tRR對FLASH操作時所必須的延時,T為所選時鐘晶振的周期,晶振為72 MHz,N為運行該程序所必須的時鐘個數。所以查“FF”塊所用時間最多為:

根據計算可知初始化時間最多為0.891 s,滿足實際需求。
以4次斷電記錄為例,4次斷電應有5組數據(每組均包括一個圖像數據包和一個PCM數據包),將回讀數據經拆分處理后結果如圖6所示。圖中顯示的第1個數據包為回讀上來的原始數據,經過圖中“拆分原始數據”指令后出現下面的5組數據。第1個括號里的數據表示回讀數據的時間和數據編號,第2個括號里的值表示存儲本文件中的數據時的斷電次數,最后的數據表示為第幾次記錄的數據,以P開題的文件表示PCM數據,以T開頭的文件表示圖像數據。從圖中所示結果與理論結果完全相同可知,該設計成功的實現了存儲器的斷電計數功能。

圖6 4次斷電存儲后數據拆分結果
圖7為第3次斷電記錄的結尾與第4次斷電記錄的開始,圖中每行數據為28 672 byte(7×4 096數據),方框中的數據表示頁計數,可知每行數據之間差值為7,橢圓中標注的為第3次斷電和第4次斷電的計數,箭頭表示第4次斷電的起始點,從頁計數的值也可知斷電計數功能的成功實現。圖中兩次數據之間有55頁(每次的數據間隔可能不一樣,但在0~512之間變化)的“FF”數據,這和理論情況完全相符。根據數據結果可知,該設計成功的查到了上次斷電的地址并在不覆蓋原數據的情況下完成了繼續存儲數據的功能。

圖7 實測數據片段
具有斷電續存功能固態存儲器已經應用到了某型號飛行器中,成功的解決了固態存儲器記錄數據時因偶然瞬時斷電且恢復供電后重新記錄會覆蓋原有數據的問題。經實際測試表明,兩次斷電時間間隔至少在0.2 ms才可使系統準確的記錄斷電次數并查找到斷電地址,而掉電時間在存儲器使用年限之內(根據所選的FLASH而定,理論時間為8年)均可使系統完成預期目的。
參考文獻:
[1]李大鵬.基于FPGA的高速LVDS接口實現[J].航空計算技術,2012(9) : 46-47.
[2]任偉.基于LVDS的高速數據傳輸裝置的設計[J].科學技術與工程,2012(10) : 100-103.
[3]郭錚,張會新.基于FPGA的飛控系統數據存儲器的設計與實現[J].計算機測量與控,2013(1) : 304-305.
[4]孫其瑞,熊繼軍,梁庭.基于MEGA2560的低成本飛控系統雙存儲方案的設計[J].電子器件,2014,37(3) : 45-46.
[5]丁海飛.基于雙平面技術的固態存儲器的設計與實現[D].太原:中北大學,2012: 5.
[6]郭鵬翔,祖靜.基于FPGA與NAND閃存的固態存儲系統設計[J].電子測試,2011(12) : 201-204.
[7]石亮.閃存存儲系統的性能優化研究[D].中國科學技術大學,2013: 5.
[8]史玉健.基于FLASH的高速記錄器的研究與實現[J].計算機測量與控制,2011(12) : 147-148.

菅少坤(1988-),男,漢族,河南省安陽市內黃縣人,現就讀于中北大學碩士研究生,主要研究方向為測試計量技術及儀器,976651004@ qq.com;

張會新(1980-),男,漢族,山西省太原市人,現就讀于北京理工博士學位,主要研究方向為測試計量技術及儀器,52167135@ qq.com。
Applications of Two-Dimensional FFT Algorithm in Radar Signal Processing of LFMCW Based on FPGA*
LIU Wenbin1,ZHU Mingri1*,ZHENG Danping2,PAN Kai1,YAO Xin1
(1.School of Electronic Engineering and Automation,Guilin University of Electronic Technology,Guilin Guangxi 541004,China; 2.School of Computer Science and Engineering,Guilin University of Electronic Technology,Guilin Guangxi 541004,China)
Abstract:There is a certain degree of difficulty to detect moving targets by linear frequency modulated continuous wave(LFMCW),two-dimensional FFT target echo signal processing techniques to extract phase information,which can effectively suppress the fixed clutter,achieve the detection of moving targets.The implementation of signal processing for Doppler velocity radar with a FPGA chip and LFMCW Doppler radar signal processing principles are introduced.The data buffer,fast algorithm for the FFT sequence of real numbers,Hilbert transform,etc of the FPGA are described.Finally,the test results show that the two-dimensional FFT algorithm can extract the distance and speed of the target.
Key words:FPGA; FFT; LFMCW; target detection
中圖分類號:TP333.1
文獻標識碼:A
文章編號:1005-9490(2015) 03-0592-05
收稿日期:2014-06-25修改日期: 2014-08-08
doi:EEACC: 7210G10.3969/j.issn.1005-9490.2015.03.024