岳 峰,范文強,劉云學(xué)
(煙臺大學(xué) 山東 煙臺 264003)
基于ARM9與FPGA的高速數(shù)據(jù)記錄模塊設(shè)計
岳 峰,范文強,劉云學(xué)
(煙臺大學(xué) 山東 煙臺 264003)
為滿足空軍某型號雷達對于高速雷達數(shù)據(jù)的記錄需求,本文給出了基于ARM9和V5系列FPGA的記錄模塊設(shè)計方案,通過一種特殊方法,提高了Nandflash異步寫入速度,同時實現(xiàn)了模塊中高效的文件管理、掉電恢復(fù)、數(shù)據(jù)循環(huán)覆蓋記錄等功能。本系統(tǒng)軟硬結(jié)合,充分發(fā)揮了硬件的潛能,成功研制了一種記錄速度達1 GB/s同時具備掉電恢復(fù)、循環(huán)覆蓋功能的記錄模塊,并裝備某型號雷達。
高速記錄;ucos ii;FPGA;嵌入式系統(tǒng)
在雷達數(shù)據(jù)分析、地震預(yù)報、航天等領(lǐng)域,試驗中產(chǎn)生的數(shù)據(jù)往往是試驗中最有價值的結(jié)果,通過分析試驗中產(chǎn)生的數(shù)據(jù),對分析解決問題具有重要意義[1]。數(shù)據(jù)記錄、回放系統(tǒng)可以有效的對試驗過程中產(chǎn)生的數(shù)據(jù)進行記錄,是試驗評估的重要前提和保障,在復(fù)雜系統(tǒng)調(diào)試中發(fā)揮著重要作用[2-34]。為滿足某型號空軍雷達的調(diào)試需要,使用ARM9與FPGA配合,成功實現(xiàn)了一種數(shù)據(jù)記錄速度大于1 GB/s,可以循環(huán)覆蓋記錄,具備掉電恢復(fù)功能,同時存儲空間大于1 000 GB的記錄與回放系統(tǒng)。
結(jié)合實際應(yīng)用需求,本系統(tǒng)分為兩種工作模式,一種是受到人為發(fā)送的網(wǎng)絡(luò)命令控制,另一種受到數(shù)據(jù)處理(后文中簡稱DP)通道命令控制進行自動記錄,工作在多種工作方式下進行高速數(shù)據(jù)記錄,每次記錄形成獨立文件,并能夠完成網(wǎng)絡(luò)下載數(shù)據(jù),光纖上傳與下載數(shù)據(jù)的功能。綜合系統(tǒng)需求,提出整體結(jié)構(gòu)如圖1。
圖1 系統(tǒng)整體結(jié)構(gòu)設(shè)計
整個系統(tǒng)設(shè)置兩個核心,其中一個作為整體控制核心,完成控制命令解析、網(wǎng)絡(luò)傳輸、文件管理以及對數(shù)據(jù)處理核心的模式控制等功能。另外一個作為專用的數(shù)據(jù)處理核心,根據(jù)控制核心的控制完成高速數(shù)據(jù)的處理、存儲以及與PC間的光纖通信功能。
依據(jù)整體結(jié)構(gòu),做出系統(tǒng)硬件構(gòu)架設(shè)計如圖2。
圖2 系統(tǒng)硬件構(gòu)架設(shè)計
由于控制核心需要進行高實時性的任務(wù)管理,而數(shù)據(jù)處理核心具有高速并行的數(shù)據(jù)處理需求、存儲,選用ARM與FPGA作為核心單元,以ARM為整體控制核心,通過千兆網(wǎng)絡(luò)、串口與上位機連接。FPGA作為數(shù)據(jù)處理與數(shù)據(jù)存儲核心控制器與Nandflash數(shù)據(jù)存儲陣列連接,通過雙口RAM,以及通用管腳與ARM進行數(shù)據(jù)、命令的交互。在ARM與FPGA外圍,掛載必要的程序存儲器、運行內(nèi)存、FPGA加載芯片。此外,在FPGA上連接雙片8MB Norflash芯片,由FPGA直接連接到ARM上,用于文件表、壞塊表等信息的存儲、管理,雙片相互備份,保證系統(tǒng)的可靠性。
器件選型方面,根據(jù)系統(tǒng)性能需求,ARM處理器選取ATMEL公司的AT91RM9200,處理器工作在180 MHz的情況下可以達到200 MI/S的性能[5]。具有出色的功耗比,以及豐富的外部接口。為應(yīng)對1 GB/s的高速數(shù)據(jù)流的處理、記錄,F(xiàn)PGA選用xlinx V5系列器件。數(shù)據(jù)存儲介質(zhì),選用72片16 GB Micron NandFlash組成存儲陣列。
圍繞整體構(gòu)架和硬件設(shè)計,為實現(xiàn)系統(tǒng)需要的高實時性的多任務(wù)處理,在控制核心ARM上移植ucos II內(nèi)核[6]。該內(nèi)核為精簡高實時性的操作系統(tǒng),符合航空無線電技術(shù)委員會DO-178B標(biāo)準(zhǔn)[7-89]。此外由于ucos II中并未集成以太網(wǎng)通信功能,在ucos II內(nèi)核中移植入LWIP協(xié)議棧,從而實現(xiàn)系統(tǒng)的網(wǎng)絡(luò)通信功能[10]。在此基礎(chǔ)上,結(jié)合記錄模塊的各項功能需求提出系統(tǒng)軟件構(gòu)架設(shè)計如圖3。
圖3 系統(tǒng)軟件構(gòu)架設(shè)計
在ucos ii和LWIP的基礎(chǔ)上,以ARM作為TCP服務(wù)器,PC為客戶端。在應(yīng)用層建立6個主要任務(wù)按照優(yōu)先級從高到低依次為:TCP命令解析、DP命令解析、壞塊表實時更新、工作模式控制、串口、工作狀態(tài)實時數(shù)傳任務(wù)。各任務(wù)相互配合,完成各項功能。
數(shù)據(jù)記錄系統(tǒng)以PC網(wǎng)絡(luò)控制優(yōu)先,當(dāng)通過PC客戶端網(wǎng)絡(luò)連接系統(tǒng)后,TCP Sever任務(wù)會實時監(jiān)測網(wǎng)絡(luò)數(shù)據(jù),接收到網(wǎng)絡(luò)命令后,向工作模式控制任務(wù)發(fā)送消息,在工作模式控制任務(wù)中ARM控制FPGA進入相應(yīng)工作模式,直到當(dāng)前指令完成。當(dāng)網(wǎng)絡(luò)未連接時,由DP數(shù)據(jù)解析任務(wù)實時監(jiān)控FPGA雙口RAM中DP通道的控制指令信息,向工作模式控制任務(wù)發(fā)送指令消息,從而實現(xiàn)系統(tǒng)的自動控制功能。此外,工作狀態(tài)實時反饋任務(wù)會在網(wǎng)絡(luò)連接的狀態(tài)下,周期性向PC客戶端傳送當(dāng)前模塊的工作狀態(tài)信息,由PC客戶端實時顯示。
壞塊表實時更新任務(wù)分別用于實時監(jiān)控系統(tǒng)工作過程中NandFlash的壞塊并對壞塊表進行更新,保證數(shù)據(jù)記錄的可靠性[11]。
工作模式控制任務(wù)是整個控制系統(tǒng)的核心任務(wù),在該任務(wù)中,ARM會根據(jù)命令解析任務(wù)傳遞的命令消息,控制FPGA、NorFlash等完成相應(yīng)功能,通過TCP與PC端傳輸命令數(shù)據(jù)。
1)NandFlash異步方式高速寫入
在本設(shè)計中,采用的Nandflash芯片,異步最高寫入速度為50 MB/s。整個存儲空間由72片Nandflash組成,為實現(xiàn)較高的寫入速度,同時降低整體壞塊率,設(shè)計上,將所有NandFlash分為3個3行8列的存儲陣列,每列共用數(shù)據(jù)IO口,每個陣列中每行NandFlash芯片共享片選信號CE(后文中簡稱CE),Nandflash陣列結(jié)構(gòu)如圖4。為達到最大數(shù)據(jù)寫入速度,將三組Nandflash并作一組,使數(shù)據(jù)位寬達到192 bit,理論寫入峰值速度為24(片)*50(MB/s)=1200MB/s,但除去flash操作過程中命令檢測、等待、編程完成指令等消耗的時間,平均寫入速度遠不可能達到1 GB/s。
圖4 Nandflash陣列結(jié)構(gòu)
為盡可能提高Nandflash寫入速度,同時實現(xiàn)循環(huán)覆蓋記錄功能,采用邊擦邊寫的記錄方式。首先將整個陣列分為上下兩個半?yún)^(qū),寫入時流水操作只在3個CE上進行,同時另外半?yún)^(qū)的3個CE上進行擦除操作。
其中寫入采取流水加multiplane方式寫入,即在一個CE上同時寫入兩頁數(shù)據(jù),然后兩頁同時編程交替寫入[12]。如圖5,在一個CE內(nèi)寫完兩頁數(shù)據(jù)后發(fā)出頁編程指令,立即去寫下一個CE,而不等待編程完成,待第三個CE寫入完成后,第一個CE內(nèi)頁編程已結(jié)束,可以繼續(xù)寫入數(shù)據(jù)。如此就將NandFlash的寫入速度控制在了峰值,從而使整體寫入速度達到50*24=1 200 MB/s。
圖5 Nandflash數(shù)據(jù)流水寫入方法
為了實現(xiàn)能在全盤寫滿后,不進行格式化的前提下,繼續(xù)記錄數(shù)據(jù),同時保護已記錄數(shù)據(jù)。在高速寫入設(shè)計的基礎(chǔ)上,整個Nandflash陣列人為的在地址上分成128個區(qū)域,每個區(qū)分為上下半?yún)^(qū),每個半?yún)^(qū)大小為9 GB。從第一個區(qū)上半?yún)^(qū)依次向后記錄,當(dāng)寫某個區(qū)時,下一個區(qū)擦除,周而復(fù)始,從而實現(xiàn)循環(huán)覆蓋的數(shù)據(jù)記錄,同時也不會對有效數(shù)據(jù)存儲空間大小,也有效保護了已記錄的數(shù)據(jù)。
2)文件列表
為將每次記錄的數(shù)據(jù)形成獨立的文件,并且實現(xiàn)記錄模塊的掉電恢復(fù)、循環(huán)覆蓋功能,需要在本系統(tǒng)中加入文件系統(tǒng)[13-1415]。但結(jié)合軟硬件框架,現(xiàn)有的文件系統(tǒng)并不適用于本系統(tǒng),根據(jù)實際需要作出文件列表設(shè)計如圖6。
圖6 文件列表結(jié)構(gòu)
每個文件條目由兩部分組成,文件頭和文件尾,每個條目長度64字節(jié),由ARM寫入NorFlash中進行存儲。記錄開始寫入文件頭,記錄結(jié)束后寫入文件尾。文件頭中依次包含起始標(biāo)志,文件號,通道號,文件名,起始地址,文件頭結(jié)束標(biāo)志。文件尾中包含結(jié)束地址,各通道長度,CRC32校驗,文件有效標(biāo)志,文件尾結(jié)束標(biāo)志。其中新記錄形成的文件頭起始標(biāo)志為HEADh,已有文件被覆蓋后形成的文件條目文件頭起始標(biāo)志為hEADh。
文件列表遵循一個原則,從NorFlash文件表區(qū)域不斷往后記錄,錯誤或無效記錄通過將其標(biāo)志位置零實現(xiàn)文件條目的刪除。只有格式化時才能擦除文件列表。形成一個新的文件記錄的流程如圖7。
圖7 記錄文件流程
首先通過從后向前遍歷文件列表,查詢到最后一個起始為HEADh且正確有效的文件,即為上次記錄形成的文件記錄,從而得出下一個新文件的起始地址、文件號等元素。通道號、文件名則通過上位機、控制端獲取,將新文件頭信息寫入文件表,然后向FPGA發(fā)出記錄指令,記錄結(jié)束后,根據(jù)FPGA返回的文件結(jié)束地址、大小信息一同形成CRC校驗碼,寫入文件尾,從而形成一個新的文件條目。
3)掉電數(shù)據(jù)恢復(fù)
由于文件條目是分兩步被寫入文件列表,因此可以依據(jù)最后一個文件條目是否完整來判斷記錄過程中是否發(fā)生掉電,然后由FPGA在NandFlash中進行數(shù)據(jù)查詢,配合ARM進行文件恢復(fù),其流程如圖8。
圖8 掉電數(shù)據(jù)恢復(fù)流程
系統(tǒng)每次上電先文件列表尾部向前查詢各個文件條目是否完整有效,若無效則判斷文件頭是否完整,頭不完整則直接標(biāo)記該條目為無效。文件頭完整,說明可能已經(jīng)有數(shù)據(jù)被記錄,此時在文件列表結(jié)尾處復(fù)制該文件頭形成新的文件條目,并請求FPGA查詢該數(shù)據(jù)的結(jié)束地址,完成后,讀取FPGA反饋的結(jié)束地址和文件大小,寫入文件尾。
若在掉電恢復(fù)過程中再次出現(xiàn)掉電,則出現(xiàn)多個不完整條目,造成恢復(fù)后文件條目重復(fù),因此在恢復(fù)完成后繼續(xù)向前遍歷文件表,將與文件表最后一個文件記錄文件號相同的所有記錄標(biāo)記為無效。此外,還需考慮恰好恢復(fù)完一個文件條目,還未將之前的不完整條目標(biāo)記為無效的情況,為此,在上電后,先查詢文件表最后一個文件的完整性,若完整,則將之前與其文件號相同的文件條目全部標(biāo)記為無效即可。
4)循環(huán)覆蓋文件查詢管理
FPGA采用的高速寫入方式,造成數(shù)據(jù)在NandFlash中存儲的地址并不是單純的連續(xù)遞增,因此通過新紀(jì)錄文件的結(jié)束地址進行判斷是否對前面的文件發(fā)生覆蓋,是無法實現(xiàn)的。由于文件記錄時物理存儲結(jié)構(gòu)上是遞增的,且NandFlash中每一頁內(nèi)都記錄著當(dāng)前頁內(nèi)數(shù)據(jù)所屬的文件號。因此只需找到當(dāng)前擦除區(qū)域下一個區(qū)域第一頁上的文件號,即可得出當(dāng)前已經(jīng)覆蓋到第幾個文件,而該文件之前的數(shù)據(jù)必定已全部被覆蓋。
被部分覆蓋的文件,當(dāng)前擦除區(qū)域下一個區(qū)域起始地址即為該文件現(xiàn)存數(shù)據(jù)的起始地址,形成新文件條目將原有條目置為無效,由于所有文件條目是依次向后記錄的,為將其與正常記錄的文件區(qū)分,保證其對新起記錄時計算新起始地址不產(chǎn)生影響,將其文件條目頭標(biāo)志寫為hEADh。
本系統(tǒng)設(shè)計闡述的 Nandflash流水式寫入方式,將Nandflash的最大平均寫入速度控制在1 175 MB/s,接近理論計算數(shù)值1 200 MB/s,是整個高速數(shù)據(jù)記錄的基礎(chǔ),另外采用的邊擦編寫的方式也完好實現(xiàn)了循環(huán)覆蓋寫入方式,盡可能的使數(shù)據(jù)記錄操作變得簡易,此外,針對性的文件管理系統(tǒng)也高效地實現(xiàn)了掉電恢復(fù)、循環(huán)覆蓋管理等功能,對于整個系統(tǒng)的實用性以及對于數(shù)據(jù)保護就有重要意義,充分達到某型號雷達的實際需求。在實際雷達調(diào)試中起到至關(guān)重要的作用。對于高速數(shù)據(jù)記錄系統(tǒng)具有指導(dǎo)意義。
[1]丁曉偉,應(yīng)波.基于ARM9與FPGA的嵌入式固態(tài)存儲系統(tǒng)[J].現(xiàn)代雷達,2009,31:55.
[2]張斌,李永紅.引信總體試驗中數(shù)據(jù)記錄系統(tǒng)的研究[J].現(xiàn)代防御技術(shù),1997(3):49-52
[3]甄國涌,單彥虎.彈載固態(tài)記錄器高速存儲體系結(jié)構(gòu)設(shè)計[J].計算機工程,2013,39(3):275-278
[4]趙忠文,王魁.基于NAND Flash的高速大容量固態(tài)記錄器設(shè)計[C].全國信號和智能信息處理與應(yīng)用學(xué)術(shù)交流會,2009.
[5]陳敬謙,王璐.基于AT91RM9200微處理器的最小系統(tǒng)設(shè)計[J].電子工程師,2007,33(4):71-73.
[6]夏彬彬,耿光仁.實時嵌入式操作系統(tǒng)uC/OS-II在ARM9上的移植應(yīng)用[J].中國科技信息,2006(3):30-30.
[7]任哲.嵌入式實時操作系統(tǒng)μc/os-ii[M].北京:北京航空航天大學(xué)出版社,2014.
[8]王命延,于愛軍.一種加載在uCOS-II內(nèi)核上的嵌入式文件系統(tǒng)[J].南昌大學(xué)學(xué)報:理科版,2005,29(2):197-199.
[9]劉淼,王田苗.基于uCOS-II的嵌入式數(shù)控系統(tǒng)實時性分析[J].計算機工程,2006,32(22):222-224.
[10]程明,余中華.μC/OSⅡ下LwIP協(xié)議棧的移植和測試[J].微計算機信息,2008,24(23):79-80.
[11]高世杰.基于FPGA的NANDFlash壞塊處理方法[J].計算機工程,2010,36(6):239-240.
[12]邱華,黃少珉.提高Nand Flash性能的方法[J].計算機工程與應(yīng)用,2009,45(8):84-86.
[13]張明亮,張宗杰.淺析FAT32文件系統(tǒng)[J].計算機與數(shù)字工程,2005,33(1):56-59.
[14]陳智育.嵌入式系統(tǒng)中的Flash文件系統(tǒng)[J].單片機與嵌入式系統(tǒng)應(yīng)用,2002(2):5-8.
[15]諶愛文,陳仕許.初探在uCOS-Ⅱ上實現(xiàn)大容量內(nèi)存文件系統(tǒng)[J].懷化學(xué)院學(xué)報:自然科學(xué),2006,25(2):110-112.
Implementation of a high speed data recording system based on ARM9 and FPGA
YUE Feng,F(xiàn)AN Wen-qiang,LIU Yun-xue
(Yantai University,Yantai 264003,China)
In order to meet the needs of a certain type of air force radar that record demand for high speed radar data,this paper gives the module design what based on ARM9 and V5 series FPGA,through a special method,we improve the nandflash asynchronous write speed,at the same time,we also realized file management,power fail recovery and cyclic data covering records.We made the hardware and software combined softly and finally realized a module with not only 1GB/s recording speed but also power fail recovery and cyclic data covering records function.It is equipped in a radar.
High speed recording;UCOS II;FPGA;embedded system
TN959.6
A
1674-6236(2016)09-0156-04
2015-12-23稿件編號:201512229
山東省重點研發(fā)項目(2015GGX101027)
岳 峰(1990—),男,山東萊蕪人,碩士研究生。研究方向:嵌入式系統(tǒng)。