岳 峰,范文強,劉云學
(煙臺大學 山東 煙臺 264003)
基于ARM9與FPGA的高速數據記錄模塊設計
岳 峰,范文強,劉云學
(煙臺大學 山東 煙臺 264003)
為滿足空軍某型號雷達對于高速雷達數據的記錄需求,本文給出了基于ARM9和V5系列FPGA的記錄模塊設計方案,通過一種特殊方法,提高了Nandflash異步寫入速度,同時實現了模塊中高效的文件管理、掉電恢復、數據循環覆蓋記錄等功能。本系統軟硬結合,充分發揮了硬件的潛能,成功研制了一種記錄速度達1 GB/s同時具備掉電恢復、循環覆蓋功能的記錄模塊,并裝備某型號雷達。
高速記錄;ucos ii;FPGA;嵌入式系統
在雷達數據分析、地震預報、航天等領域,試驗中產生的數據往往是試驗中最有價值的結果,通過分析試驗中產生的數據,對分析解決問題具有重要意義[1]。數據記錄、回放系統可以有效的對試驗過程中產生的數據進行記錄,是試驗評估的重要前提和保障,在復雜系統調試中發揮著重要作用[2-34]。為滿足某型號空軍雷達的調試需要,使用ARM9與FPGA配合,成功實現了一種數據記錄速度大于1 GB/s,可以循環覆蓋記錄,具備掉電恢復功能,同時存儲空間大于1 000 GB的記錄與回放系統。
結合實際應用需求,本系統分為兩種工作模式,一種是受到人為發送的網絡命令控制,另一種受到數據處理(后文中簡稱DP)通道命令控制進行自動記錄,工作在多種工作方式下進行高速數據記錄,每次記錄形成獨立文件,并能夠完成網絡下載數據,光纖上傳與下載數據的功能。綜合系統需求,提出整體結構如圖1。

圖1 系統整體結構設計
整個系統設置兩個核心,其中一個作為整體控制核心,完成控制命令解析、網絡傳輸、文件管理以及對數據處理核心的模式控制等功能。另外一個作為專用的數據處理核心,根據控制核心的控制完成高速數據的處理、存儲以及與PC間的光纖通信功能。
依據整體結構,做出系統硬件構架設計如圖2。

圖2 系統硬件構架設計
由于控制核心需要進行高實時性的任務管理,而數據處理核心具有高速并行的數據處理需求、存儲,選用ARM與FPGA作為核心單元,以ARM為整體控制核心,通過千兆網絡、串口與上位機連接。FPGA作為數據處理與數據存儲核心控制器與Nandflash數據存儲陣列連接,通過雙口RAM,以及通用管腳與ARM進行數據、命令的交互。在ARM與FPGA外圍,掛載必要的程序存儲器、運行內存、FPGA加載芯片。此外,在FPGA上連接雙片8MB Norflash芯片,由FPGA直接連接到ARM上,用于文件表、壞塊表等信息的存儲、管理,雙片相互備份,保證系統的可靠性。
器件選型方面,根據系統性能需求,ARM處理器選取ATMEL公司的AT91RM9200,處理器工作在180 MHz的情況下可以達到200 MI/S的性能[5]。具有出色的功耗比,以及豐富的外部接口。為應對1 GB/s的高速數據流的處理、記錄,FPGA選用xlinx V5系列器件。數據存儲介質,選用72片16 GB Micron NandFlash組成存儲陣列。
圍繞整體構架和硬件設計,為實現系統需要的高實時性的多任務處理,在控制核心ARM上移植ucos II內核[6]。該內核為精簡高實時性的操作系統,符合航空無線電技術委員會DO-178B標準[7-89]。此外由于ucos II中并未集成以太網通信功能,在ucos II內核中移植入LWIP協議棧,從而實現系統的網絡通信功能[10]。在此基礎上,結合記錄模塊的各項功能需求提出系統軟件構架設計如圖3。

圖3 系統軟件構架設計
在ucos ii和LWIP的基礎上,以ARM作為TCP服務器,PC為客戶端。在應用層建立6個主要任務按照優先級從高到低依次為:TCP命令解析、DP命令解析、壞塊表實時更新、工作模式控制、串口、工作狀態實時數傳任務。各任務相互配合,完成各項功能。
數據記錄系統以PC網絡控制優先,當通過PC客戶端網絡連接系統后,TCP Sever任務會實時監測網絡數據,接收到網絡命令后,向工作模式控制任務發送消息,在工作模式控制任務中ARM控制FPGA進入相應工作模式,直到當前指令完成。當網絡未連接時,由DP數據解析任務實時監控FPGA雙口RAM中DP通道的控制指令信息,向工作模式控制任務發送指令消息,從而實現系統的自動控制功能。此外,工作狀態實時反饋任務會在網絡連接的狀態下,周期性向PC客戶端傳送當前模塊的工作狀態信息,由PC客戶端實時顯示。
壞塊表實時更新任務分別用于實時監控系統工作過程中NandFlash的壞塊并對壞塊表進行更新,保證數據記錄的可靠性[11]。
工作模式控制任務是整個控制系統的核心任務,在該任務中,ARM會根據命令解析任務傳遞的命令消息,控制FPGA、NorFlash等完成相應功能,通過TCP與PC端傳輸命令數據。
1)NandFlash異步方式高速寫入
在本設計中,采用的Nandflash芯片,異步最高寫入速度為50 MB/s。整個存儲空間由72片Nandflash組成,為實現較高的寫入速度,同時降低整體壞塊率,設計上,將所有NandFlash分為3個3行8列的存儲陣列,每列共用數據IO口,每個陣列中每行NandFlash芯片共享片選信號CE(后文中簡稱CE),Nandflash陣列結構如圖4。為達到最大數據寫入速度,將三組Nandflash并作一組,使數據位寬達到192 bit,理論寫入峰值速度為24(片)*50(MB/s)=1200MB/s,但除去flash操作過程中命令檢測、等待、編程完成指令等消耗的時間,平均寫入速度遠不可能達到1 GB/s。

圖4 Nandflash陣列結構
為盡可能提高Nandflash寫入速度,同時實現循環覆蓋記錄功能,采用邊擦邊寫的記錄方式。首先將整個陣列分為上下兩個半區,寫入時流水操作只在3個CE上進行,同時另外半區的3個CE上進行擦除操作。
其中寫入采取流水加multiplane方式寫入,即在一個CE上同時寫入兩頁數據,然后兩頁同時編程交替寫入[12]。如圖5,在一個CE內寫完兩頁數據后發出頁編程指令,立即去寫下一個CE,而不等待編程完成,待第三個CE寫入完成后,第一個CE內頁編程已結束,可以繼續寫入數據。如此就將NandFlash的寫入速度控制在了峰值,從而使整體寫入速度達到50*24=1 200 MB/s。

圖5 Nandflash數據流水寫入方法
為了實現能在全盤寫滿后,不進行格式化的前提下,繼續記錄數據,同時保護已記錄數據。在高速寫入設計的基礎上,整個Nandflash陣列人為的在地址上分成128個區域,每個區分為上下半區,每個半區大小為9 GB。從第一個區上半區依次向后記錄,當寫某個區時,下一個區擦除,周而復始,從而實現循環覆蓋的數據記錄,同時也不會對有效數據存儲空間大小,也有效保護了已記錄的數據。
2)文件列表
為將每次記錄的數據形成獨立的文件,并且實現記錄模塊的掉電恢復、循環覆蓋功能,需要在本系統中加入文件系統[13-1415]。但結合軟硬件框架,現有的文件系統并不適用于本系統,根據實際需要作出文件列表設計如圖6。

圖6 文件列表結構
每個文件條目由兩部分組成,文件頭和文件尾,每個條目長度64字節,由ARM寫入NorFlash中進行存儲。記錄開始寫入文件頭,記錄結束后寫入文件尾。文件頭中依次包含起始標志,文件號,通道號,文件名,起始地址,文件頭結束標志。文件尾中包含結束地址,各通道長度,CRC32校驗,文件有效標志,文件尾結束標志。其中新記錄形成的文件頭起始標志為HEADh,已有文件被覆蓋后形成的文件條目文件頭起始標志為hEADh。
文件列表遵循一個原則,從NorFlash文件表區域不斷往后記錄,錯誤或無效記錄通過將其標志位置零實現文件條目的刪除。只有格式化時才能擦除文件列表。形成一個新的文件記錄的流程如圖7。

圖7 記錄文件流程
首先通過從后向前遍歷文件列表,查詢到最后一個起始為HEADh且正確有效的文件,即為上次記錄形成的文件記錄,從而得出下一個新文件的起始地址、文件號等元素。通道號、文件名則通過上位機、控制端獲取,將新文件頭信息寫入文件表,然后向FPGA發出記錄指令,記錄結束后,根據FPGA返回的文件結束地址、大小信息一同形成CRC校驗碼,寫入文件尾,從而形成一個新的文件條目。
3)掉電數據恢復
由于文件條目是分兩步被寫入文件列表,因此可以依據最后一個文件條目是否完整來判斷記錄過程中是否發生掉電,然后由FPGA在NandFlash中進行數據查詢,配合ARM進行文件恢復,其流程如圖8。

圖8 掉電數據恢復流程
系統每次上電先文件列表尾部向前查詢各個文件條目是否完整有效,若無效則判斷文件頭是否完整,頭不完整則直接標記該條目為無效。文件頭完整,說明可能已經有數據被記錄,此時在文件列表結尾處復制該文件頭形成新的文件條目,并請求FPGA查詢該數據的結束地址,完成后,讀取FPGA反饋的結束地址和文件大小,寫入文件尾。
若在掉電恢復過程中再次出現掉電,則出現多個不完整條目,造成恢復后文件條目重復,因此在恢復完成后繼續向前遍歷文件表,將與文件表最后一個文件記錄文件號相同的所有記錄標記為無效。此外,還需考慮恰好恢復完一個文件條目,還未將之前的不完整條目標記為無效的情況,為此,在上電后,先查詢文件表最后一個文件的完整性,若完整,則將之前與其文件號相同的文件條目全部標記為無效即可。
4)循環覆蓋文件查詢管理
FPGA采用的高速寫入方式,造成數據在NandFlash中存儲的地址并不是單純的連續遞增,因此通過新紀錄文件的結束地址進行判斷是否對前面的文件發生覆蓋,是無法實現的。由于文件記錄時物理存儲結構上是遞增的,且NandFlash中每一頁內都記錄著當前頁內數據所屬的文件號。因此只需找到當前擦除區域下一個區域第一頁上的文件號,即可得出當前已經覆蓋到第幾個文件,而該文件之前的數據必定已全部被覆蓋。
被部分覆蓋的文件,當前擦除區域下一個區域起始地址即為該文件現存數據的起始地址,形成新文件條目將原有條目置為無效,由于所有文件條目是依次向后記錄的,為將其與正常記錄的文件區分,保證其對新起記錄時計算新起始地址不產生影響,將其文件條目頭標志寫為hEADh。
本系統設計闡述的 Nandflash流水式寫入方式,將Nandflash的最大平均寫入速度控制在1 175 MB/s,接近理論計算數值1 200 MB/s,是整個高速數據記錄的基礎,另外采用的邊擦編寫的方式也完好實現了循環覆蓋寫入方式,盡可能的使數據記錄操作變得簡易,此外,針對性的文件管理系統也高效地實現了掉電恢復、循環覆蓋管理等功能,對于整個系統的實用性以及對于數據保護就有重要意義,充分達到某型號雷達的實際需求。在實際雷達調試中起到至關重要的作用。對于高速數據記錄系統具有指導意義。
[1]丁曉偉,應波.基于ARM9與FPGA的嵌入式固態存儲系統[J].現代雷達,2009,31:55.
[2]張斌,李永紅.引信總體試驗中數據記錄系統的研究[J].現代防御技術,1997(3):49-52
[3]甄國涌,單彥虎.彈載固態記錄器高速存儲體系結構設計[J].計算機工程,2013,39(3):275-278
[4]趙忠文,王魁.基于NAND Flash的高速大容量固態記錄器設計[C].全國信號和智能信息處理與應用學術交流會,2009.
[5]陳敬謙,王璐.基于AT91RM9200微處理器的最小系統設計[J].電子工程師,2007,33(4):71-73.
[6]夏彬彬,耿光仁.實時嵌入式操作系統uC/OS-II在ARM9上的移植應用[J].中國科技信息,2006(3):30-30.
[7]任哲.嵌入式實時操作系統μc/os-ii[M].北京:北京航空航天大學出版社,2014.
[8]王命延,于愛軍.一種加載在uCOS-II內核上的嵌入式文件系統[J].南昌大學學報:理科版,2005,29(2):197-199.
[9]劉淼,王田苗.基于uCOS-II的嵌入式數控系統實時性分析[J].計算機工程,2006,32(22):222-224.
[10]程明,余中華.μC/OSⅡ下LwIP協議棧的移植和測試[J].微計算機信息,2008,24(23):79-80.
[11]高世杰.基于FPGA的NANDFlash壞塊處理方法[J].計算機工程,2010,36(6):239-240.
[12]邱華,黃少珉.提高Nand Flash性能的方法[J].計算機工程與應用,2009,45(8):84-86.
[13]張明亮,張宗杰.淺析FAT32文件系統[J].計算機與數字工程,2005,33(1):56-59.
[14]陳智育.嵌入式系統中的Flash文件系統[J].單片機與嵌入式系統應用,2002(2):5-8.
[15]諶愛文,陳仕許.初探在uCOS-Ⅱ上實現大容量內存文件系統[J].懷化學院學報:自然科學,2006,25(2):110-112.
Implementation of a high speed data recording system based on ARM9 and FPGA
YUE Feng,FAN 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
山東省重點研發項目(2015GGX101027)
岳 峰(1990—),男,山東萊蕪人,碩士研究生。研究方向:嵌入式系統。