鄒姍蓉,李 杰,王麗平,郝曉明
(電子測試技術(shù)重點(diǎn)實(shí)驗(yàn)室,太原030051)
基于FPGA的智能分區(qū)存儲系統(tǒng)設(shè)計(jì)*
鄒姍蓉,李 杰*,王麗平,郝曉明
(電子測試技術(shù)重點(diǎn)實(shí)驗(yàn)室,太原030051)
常規(guī)炮彈于惡劣環(huán)境下,內(nèi)部信號采集處理系統(tǒng)存在意外瞬時(shí)掉電的情況。針對掉電情況下數(shù)據(jù)存儲錯(cuò)誤的問題,提出了一種基于FPGA的智能分區(qū)存儲方法,在研究NAND Flash讀寫、擦除和存儲的特點(diǎn)的基礎(chǔ)上,設(shè)計(jì)了一種智能分區(qū)存儲系統(tǒng),實(shí)現(xiàn)了存儲數(shù)據(jù)開始地址的智能檢測及斷電自動(dòng)跳址開始下一次數(shù)據(jù)的續(xù)存。實(shí)彈試驗(yàn)證明,該系統(tǒng)提高了FLASH存儲區(qū)域的利用率,有效的解決了數(shù)據(jù)存儲系統(tǒng)在常規(guī)彈藥制導(dǎo)化應(yīng)用過程中的實(shí)際問題。
存儲器;智能分區(qū);數(shù)據(jù)續(xù)存;FPGA
彈丸在飛行過程中速度、位置、姿態(tài)角等關(guān)鍵彈道參數(shù)的準(zhǔn)確測量、可靠存儲是常規(guī)炮彈制導(dǎo)化,提高彈藥打擊精度重要環(huán)節(jié),彈載采集存儲系統(tǒng)可用于飛行姿態(tài)參數(shù)的采集和存儲。NAND Flash(非易失性數(shù)據(jù)存儲器)是一種以大容量為訴求的文件存儲器,更適合彈載采編器的數(shù)據(jù)存儲[1]。分析以往大量實(shí)彈試驗(yàn)數(shù)據(jù)可知,發(fā)射過載炮射導(dǎo)彈實(shí)驗(yàn)環(huán)境惡劣以致出現(xiàn)少數(shù)偶然瞬間掉電情況,從而造成存儲的數(shù)據(jù)混亂、覆蓋。
以往采集存儲系統(tǒng)對于瞬時(shí)斷電數(shù)據(jù)保護(hù)采取的措施是對固態(tài)存儲器存儲區(qū)域劃分固定模塊,在一定程度上解決了掉電后數(shù)據(jù)存儲覆蓋的問題,但仍存在難以合理劃分,存儲資源浪費(fèi),存儲區(qū)域利用率低等問題[2-3]。
本文將智能分區(qū)存儲技術(shù)引入到彈載采編器中,提出了基于FPGA的智能分區(qū)存儲系統(tǒng),節(jié)省研制費(fèi)用,縮短研制周期,提高研制效率。
智能分區(qū)存儲系統(tǒng)總體設(shè)計(jì)分為以下4個(gè)模塊:信號調(diào)理轉(zhuǎn)換模塊、FPGA控制模塊、FLASH存儲模塊和上位機(jī)顯示模塊。系統(tǒng)總體設(shè)計(jì)圖如圖1所示。
圖1 系統(tǒng)總體設(shè)計(jì)圖
智能分區(qū)存儲系統(tǒng)是以FPGA為控制核心,控制采集存儲電路進(jìn)行數(shù)據(jù)采集存儲的系統(tǒng)[4]。慣性敏感元件所測量的動(dòng)態(tài)參數(shù)經(jīng)過信號調(diào)理電路傳輸給A/D進(jìn)行模數(shù)轉(zhuǎn)換,F(xiàn)PGA將轉(zhuǎn)換后的數(shù)據(jù)存儲于固態(tài)存儲器。
1.1 硬件電路設(shè)計(jì)
1.1.1 信號調(diào)理轉(zhuǎn)換模塊
信號調(diào)理電路用來處理模擬信號,可對輸入的模擬信號進(jìn)行放大、濾波。在本設(shè)計(jì)中采用芯片OPA4340來增強(qiáng)輸入信號以及來自AD的參考電壓的驅(qū)動(dòng)能力[5]。
模/數(shù)轉(zhuǎn)換部分的主控芯片是ADS8365,功能是完成數(shù)據(jù)采集及轉(zhuǎn)換。另外,芯片正常工作時(shí)功耗低,為200 mW[6]。工作原理是:AD內(nèi)部產(chǎn)生高精度參考電壓與采集的6路信號分別輸入給AD的正、反向輸入通道,形成差分模式。6路模擬信號打包分成3對信號,分別由(HOLDA,HOLDB,HOLDC)來控制2個(gè),4個(gè)還是6個(gè)通道同時(shí)采樣。將每個(gè)通道所采集的數(shù)據(jù)轉(zhuǎn)換為16位二進(jìn)制數(shù),由FPGA控制數(shù)據(jù)從AD傳出,首先是低8 bit后是高8 bit依次傳出給FPGA內(nèi)部FIFO緩存。
圖2 信號調(diào)理轉(zhuǎn)換流程圖
1.1.2 FPGA控制模塊
該控制模塊采用的FPGA是Xilinx公司生產(chǎn)的Spartan-ⅡE系列產(chǎn)品中的一款名為XC2S30E的芯片,其采用了低內(nèi)核電壓,從根本上減小芯片功耗,從而解決高速工作狀態(tài)下發(fā)熱量大的問題。同時(shí)其豐富的門陣列資源,也為復(fù)雜的邏輯控制提供了可能[7-8]。
炮彈在測試時(shí),需要對全彈道中的動(dòng)態(tài)參量進(jìn)行存儲,本文選擇FPGA作為核心控制芯片,F(xiàn)PGA與FLASH的接口配置如圖3所示。FPGA內(nèi)部控制,當(dāng)R/B為低電平時(shí),即FLASH處于忙碌狀態(tài)時(shí),F(xiàn)PGA將寫命令字80H和地址寫入FLASH中,然后將采集到的數(shù)據(jù)按幀格式寫入,在數(shù)據(jù)加載完成后寫入結(jié)束命令字10H,F(xiàn)LASH內(nèi)部自動(dòng)編程控制將頁寄存器中的數(shù)據(jù)寫入到存儲陣列目標(biāo)地址中,存儲完成后R/B信號再次被置成高電平。
圖3 FPGA與FLASH接口配置
FPGA通過內(nèi)部軟件編程,控制讀寫信號和不同指令的選擇實(shí)現(xiàn)對數(shù)據(jù)的寫入、讀取和擦除操作[9]。
1.1.3 FLASH存儲模塊
數(shù)據(jù)存儲模塊主芯片選用SAMSUNG公司的NAND型K9K8GU0E芯片。該芯片具有大容量、低功耗、訪問速度快等特點(diǎn),其容量為8 448 Mbit,可以記錄全彈道中采集的各種動(dòng)態(tài)參量;電壓供電范圍為2.7 V~3.6 V,根據(jù)系統(tǒng)中電壓本文選用3.3 V供電;該FLASH是按頁寫入與讀取,按塊擦除,大大方便了數(shù)據(jù)的操作。該款芯片由8192 Blocks組成,而每個(gè)Block包含64 page,每頁有2 kbyte+64 byte,其中,主存儲區(qū)容量大小為2 kbyte,用來保護(hù)用戶數(shù)據(jù);輔助存儲區(qū)容量大小為64 byte,用來保存無效塊標(biāo)志位等狀態(tài)信息[9]。FLASH內(nèi)部存儲結(jié)構(gòu)如圖4所示。FLASH引腳功能如表1所示。
表1 FLASH引腳功能
如表1中所示:當(dāng)R/B高電平時(shí),表示處于空閑狀態(tài),低電平時(shí),表示處于忙碌狀態(tài);當(dāng)RE下降沿,數(shù)據(jù)可以讀?。划?dāng)CS處于低電平時(shí),器件被片選中;當(dāng)WE信號上升沿時(shí),數(shù)據(jù)、命令和地址可以寫入;當(dāng)CLE為高電平時(shí),命令在寫信號的上升沿被鎖存入命令寄存器。當(dāng)ALE高電平時(shí),寫信號的上升沿時(shí)地址被鎖存。WP為低電平時(shí),禁止寫或擦除操作。編程時(shí)序圖[10]如圖5所示。
圖4 FLASH內(nèi)部存儲結(jié)構(gòu)
圖5 Flash頁操作時(shí)序圖
1.2 上位機(jī)軟件設(shè)計(jì)
為節(jié)省智能分區(qū)存儲系統(tǒng)資源,降低功耗,將系統(tǒng)中的數(shù)據(jù)讀取、擦除等功能分離出來,集成到彈載數(shù)據(jù)回讀系統(tǒng)中[11]。回讀系統(tǒng)配套使用的上位機(jī)軟件主要模塊有:數(shù)據(jù)讀取、擦除和停止讀數(shù)。軟件如圖6所示。
存儲在FLASH內(nèi)的數(shù)據(jù)經(jīng)由FPGA內(nèi)部FIFO與上位機(jī)通訊之前,上位機(jī)與下位機(jī)系統(tǒng)間需制定通信協(xié)議。依據(jù)通信協(xié)議,F(xiàn)PGA響應(yīng)上位機(jī)發(fā)送的命令,從而實(shí)現(xiàn)數(shù)據(jù)的讀取和擦除。
FPGA與上位機(jī)約定的握手信號[12]為:
數(shù)據(jù)擦除:&25&5E&44&A3
數(shù)據(jù)讀?。?25&5E&77&A6
停止讀數(shù):&25&5E&66&A5
當(dāng)需要對FLASH內(nèi)數(shù)據(jù)進(jìn)操作時(shí),由數(shù)據(jù)回讀系統(tǒng)連接彈載數(shù)據(jù)采集存儲系統(tǒng)和上位機(jī),由上位機(jī)發(fā)出命令,下位機(jī)系統(tǒng)根據(jù)協(xié)議執(zhí)行響應(yīng)操作。
圖6 上位機(jī)軟件圖
該類型閃存以頁(page)為單位進(jìn)行讀/寫操作,以塊為單位進(jìn)行擦除操作。每次寫入數(shù)據(jù)前存儲單元內(nèi)必須為空,也就是內(nèi)部數(shù)據(jù)均為FF,另由于工藝本身問題,F(xiàn)LASH內(nèi)部可能帶有壞塊,故需配套使用的數(shù)據(jù)回讀系統(tǒng),在彈載存儲系統(tǒng)上電前,利用數(shù)據(jù)回讀系統(tǒng)檢查所有內(nèi)存區(qū)域的壞塊,在程序中做出跳過相應(yīng)的壞塊的處理,并進(jìn)行數(shù)據(jù)擦除操作。
本文智能分區(qū)功能的實(shí)現(xiàn)是依靠細(xì)化分區(qū)理念,以平面(plane)為單位進(jìn)行4平面分區(qū),也可以塊(block)為單位,進(jìn)行8 192塊分區(qū),還可進(jìn)行(page)頁分區(qū),進(jìn)而實(shí)現(xiàn)數(shù)據(jù)無斷點(diǎn)的智能分區(qū)功能,由于無斷點(diǎn)存儲功能的實(shí)現(xiàn)需要耗費(fèi)太長時(shí)間,丟漏大量有效信息[13],本文主要針對彈載數(shù)據(jù)采集存儲,選擇塊(block)分區(qū)理念,原因?qū)⒃谙挛膶?shí)用性分析中具體描述。
以下將主要討論根據(jù)塊分區(qū)實(shí)現(xiàn)的智能分區(qū),具體流程圖如圖7所示。
圖7 智能分區(qū)流程圖
圖7中r_data承載來自FLASH內(nèi)一個(gè)字節(jié)的數(shù)據(jù),w_countbmn表示塊地址,w_countbytemn表示頁內(nèi)字節(jié)地址。
實(shí)現(xiàn)智能分區(qū)要解決的問題就是如何準(zhǔn)確確定上次存儲結(jié)尾地址。系統(tǒng)上電,給w_countbmn賦初值后,將從FLASH內(nèi)讀取第一個(gè)字節(jié)數(shù)據(jù)存儲于r_data內(nèi),判斷r_data是否為十六進(jìn)制數(shù)據(jù)FF,如果是FF則將繼續(xù)判斷接下來的9個(gè)字節(jié)數(shù)據(jù)是否同為FF,若是,則判定該塊為空地址,可將數(shù)據(jù)寫入;如果有非FF數(shù)據(jù),則判斷該塊已有數(shù)據(jù),此時(shí)將w_countbmn的值加1,進(jìn)行下一塊的判斷,依此規(guī)律進(jìn)行數(shù)據(jù)存儲。
炮射導(dǎo)彈試驗(yàn)過程中,數(shù)據(jù)采集系統(tǒng)為記錄三維飛行姿態(tài)信息需要存儲大量數(shù)據(jù),但有效數(shù)據(jù)只是從上電裝膛到飛行落地期間,因此智能分區(qū)系統(tǒng)設(shè)計(jì)時(shí)要注意的兩點(diǎn)是:(1)分析系統(tǒng)在什么時(shí)間有斷電可能。(2)盡量減少系統(tǒng)初始化時(shí)間,避免有效信息大量流失。
實(shí)驗(yàn)過程中,在高過載、高旋的炮射導(dǎo)彈實(shí)彈飛行環(huán)境下,彈體裝膛瞬間、炮彈發(fā)射瞬間、落地瞬間以及高速飛行期間都有可能導(dǎo)致系統(tǒng)瞬時(shí)斷電,出現(xiàn)數(shù)據(jù)存儲覆蓋情況。上述的瞬間斷電3種情況可忽略系統(tǒng)重新上電后的初始化時(shí)間,但飛行期間掉電要酌情考慮系統(tǒng)初始化時(shí)間長短對飛行信息的遺漏情況,如果按照頁(page)分區(qū)的理念,每塊(block)有64頁(page),最多檢測地址次數(shù)多達(dá)64次,那么,重上電后用來尋址時(shí)間過長,丟漏大量有效信息來換取的高存儲區(qū)利用率就顯得得不償失,工程應(yīng)用價(jià)值較低。
經(jīng)計(jì)算,檢查8 192個(gè)塊(block)前10個(gè)字節(jié)是否為“FF”塊所用最多時(shí)間T為:
其中,tR、tRR為對FLASH操作時(shí)所必須的延時(shí),tWC為寫地址循環(huán)時(shí)間,tRC為讀數(shù)據(jù)所需時(shí)間[14]。
彈載數(shù)據(jù)采集存儲系統(tǒng)1 min內(nèi)的采集數(shù)據(jù)量為6.7 Mbyte,在瞬時(shí)斷電后初始化的時(shí)間內(nèi)丟失數(shù)據(jù)量為0.023 220 Mbyte。根據(jù)計(jì)算可知初始化時(shí)間最多為0.207 933 440 s,滿足實(shí)際工程需求。智能分區(qū)技術(shù)能夠取得預(yù)想的效果。
圖8為實(shí)驗(yàn)中的數(shù)據(jù)截圖,顯示了第1次和第2次存儲數(shù)據(jù),其中,每列的前8 bit 16進(jìn)制數(shù)據(jù)為地址信息;EB EB為幀頭,其后的3 byte數(shù)據(jù)是幀計(jì)數(shù)。由第1行地址信息可知每行23 byte數(shù)據(jù),存儲最終地址為16進(jìn)制000a0fe9h,由此可知第1次數(shù)據(jù)占用多于5塊(block)少于 6(block)塊,第 2次數(shù)據(jù)地址為000c0000h,也就是第6(block)塊開始存儲,兩次數(shù)據(jù)間有123 kbyte的空區(qū),少于1(block)塊存儲空白區(qū),滿足預(yù)期目標(biāo),由此可知,該設(shè)計(jì)成功實(shí)現(xiàn)地址的智能檢測,根據(jù)幀計(jì)數(shù)可判斷沒有不覆蓋原數(shù)據(jù)的情況下完成了智能分區(qū)存儲數(shù)據(jù)的功能。
圖8 實(shí)驗(yàn)數(shù)據(jù)截圖
基于FPGA的智能分區(qū)存儲系統(tǒng)已成功應(yīng)用于某型常規(guī)炮射導(dǎo)彈實(shí)彈試驗(yàn)中。通過對固態(tài)存儲器存儲區(qū)域進(jìn)行智能分區(qū),實(shí)現(xiàn)了斷點(diǎn)續(xù)存功能,并且,掉電后初始化時(shí)間內(nèi)丟失數(shù)據(jù)量不會損失姿態(tài)、位置信息精確度,解決了常規(guī)彈藥制導(dǎo)化應(yīng)用過程中的實(shí)際問題,達(dá)到最優(yōu)化設(shè)計(jì)目的。
[1]李晴.高速大容量NAND FLASH存儲系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].北京:北京理工大學(xué),2015.
[2]陳寶毅.MEMS慣性器件的數(shù)據(jù)采集與誤差分析技術(shù)研究[D].哈爾濱:哈爾濱工程大學(xué),2009.
[3]李杰,馬幸,劉俊.小型慣導(dǎo)系統(tǒng)數(shù)據(jù)實(shí)時(shí)采集處理與存儲設(shè)計(jì)[J].中國慣性技術(shù)學(xué)報(bào),2008,16(3):274-277.
[4]于雪蓮.基于FPGA的高速數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)[D].保定:河北大學(xué),2014.
[5]祝敬德,李杰,馮凱強(qiáng).基于FT245RL和FPGA的6路數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)測量與控制,2015,23(1):187-190.
[6]胡陳君.彈載小型抗高過載微慣性測量系統(tǒng)設(shè)計(jì)[D].太原:中北大學(xué),2015.
[7]緱麗敏,景德勝,許少尉.基于DSP+FPGA的彈載綜合控制計(jì)算機(jī)設(shè)計(jì)與實(shí)現(xiàn)[J].電子技術(shù),2013,14(7):43-45.
[8]孫永來.基于FPGA控制的串行通信接口設(shè)計(jì)與實(shí)現(xiàn)[D].北京:中國科學(xué)院大學(xué),2014.
[9]鄭文靜,李明強(qiáng),舒繼武.Flash存儲技術(shù)[J].計(jì)算機(jī)研究與發(fā)展,2010,47(4):716-726.
[10]孟祥志.FPGA的靜態(tài)時(shí)序分析研究與設(shè)計(jì)[D].上海:復(fù)旦大學(xué),2012.
[11]孔令振,穆建文.基于NAND Flash大容量數(shù)據(jù)存儲器的設(shè)計(jì)[J].微型機(jī)與應(yīng)用,2014,33(9):25-27.
[12]柯艷,李杰,孔祥雷.基于USB2.0的多路數(shù)據(jù)采集系統(tǒng)上位機(jī)軟件設(shè)計(jì)[J].測試技術(shù)學(xué)報(bào),2010,24(4):351-356.
[13]菅少坤,張會新.具有斷電續(xù)存功能固態(tài)存儲器的設(shè)計(jì)[J].電子器件,2015,38(3):592-596.
[14]郝曉明,李杰,胡陳君.基于FPGA的彈載數(shù)據(jù)回讀系統(tǒng)設(shè)計(jì)[J].傳感技術(shù)學(xué)報(bào),2015,28(7):1023-1027.
鄒姍蓉(1991-),女,漢族,河北省唐山市人,現(xiàn)為中北大學(xué)在讀碩士研究生,主要研究方向?yàn)閭鞲衅鲬?yīng)用技術(shù)及旋轉(zhuǎn)調(diào)制式微慣導(dǎo)系統(tǒng),469904780@qq.com;
李 杰(1976-),男,漢族,山西省太原市人,教授,博士生導(dǎo)師?,F(xiàn)在中北大學(xué)電子測試技術(shù)國家重點(diǎn)實(shí)驗(yàn)室工作,目前的主要研究方向?yàn)槲⑾到y(tǒng)集成理論與技術(shù)、慣性感知與控制技術(shù)、組合導(dǎo)航理論、計(jì)算幾何及智能信息處理等,Lijie@nuc.edu.cn。
Designing of Intelligent Control for Data Acquisition System Based on FPGA*
ZOU Shanrong,LI Jie*,WANG Liping,HAO Xiaoming
(Science and Technology on Electronic Test and Measurement Laboratory,Taiyuan 030051,China)
If conventional projectile in the harsh conditions,data errors would happen when editorial system instan?taneous power off in accident,so an intelligence partition storage technology of recorder in ammunition was presented based on FPGA.Memory read and write,erase,storage characteristics of NAND FLASH were studied at previous,the function is realized,which intelligent detection of address for data storage every time and automatic jump to next address without manual operation was brought about at this system.It has proved in projectile experiments,the sys?tem improved storage area utilization of FLASH memory effectively and solved the practical problems in the process of application of data storage in conventional munitions guidance.
flash memory;intelligent control;data adaptation;FPGA
TP333.1
A
1005-9490(2016)06-1402-05
1265A
10.3969/j.issn.1005-9490.2016.06.024
項(xiàng)目來源:國家自然科學(xué)基金項(xiàng)目(51575500)
2015-12-23 修改日期:2016-01-14