李 申,張 萍,應 波
(南京電子技術研究所 江蘇 南京 210039)
數據記錄回放系統廣泛應用于雷達、航空航天、環境監測、交通等多個軍用和民用領域,除完成數據的實時記錄外,還可以進行事后回放用于歷史數據的檢索、處理和分析,在雷達等大型復雜電子設備的調試、算法分析、系統性能提升等過程中發揮著重要作用。隨著半導體技術的迅速發展,具備高性能、低功耗、體積小、重量輕等優勢的固態存儲器件在數據記錄回放系統中的應用也越來越廣。VPX總線由VME總線發展而來,在保留原有VME某些特性的基礎上引入高速串行互聯,突破了原有并行總線的帶寬瓶頸,為高速實時嵌入式系統的搭建提供了解決方案,已成為新一代的工業總線標準[1]。
隨著雷達數字化的發展,陣列化天線、數字T/R和DBF等新技術普遍得以應用,雷達回波數據在天線組件級或單元級已經實現數字化,在送到信號處理機之前多采用光纖傳輸。數字陣列雷達通道數多,回波數據量大,速度高,對雷達數據記錄系統提出了更高的要求。本文結合我所某型雷達研制需求,基于ARM-FPGA架構以大容量固態存儲器件構建存儲陣列,設計并實現了該多通道VPX總線固態數據記錄回放系統。
為滿足雷達系統在線實時記錄和回放的需求,該系統采用VPX總線形式,安裝在雷達插箱內,通過以太網遠程控制。雷達開機工作過程中,接收機A/D后的回波數據送信號處理完成實時處理的同時,還要送給數據記錄回放系統進行實時記錄;對于歷史數據可以通過回放送給信號處理,供事后分析處理。系統工作框圖如圖1所示。

圖1 系統工作框圖Fig.1 System working diagram
該系統由VPX總線固態記錄回放模塊和接口模塊組成,前者作為系統主體基于ARM-FPGA架構進行設計,采用NAND Flash存儲芯片構建了4個固態存儲陣列分別對應4個光纖通道,以實現多通道數據的記錄和回放。ARM通過嵌入式軟件負責與控制計算機的網絡通信,完成系統管理和操作控制;FPGA邏輯完成光纖數據的串并轉換以及對于存儲陣列的讀寫等。接口模塊作為記錄回放系統的對外接口,提供網口、串口和光口,分別用于對外網絡通信和系統狀態監控以及工作過程中數據的光電轉換。
系統硬件組成框圖如圖2所示。VPX總線固態記錄回放模塊設計為VPX 6U負載板,其硬件主要由微控制器及其外圍電路、FPGA及NAND Flash存儲陣列組成。接口模塊是為滿足雷達機柜后出線要求專門設計的系統對外數據接口,主要包括網口、串口和光口等。下面僅對VPX總線固態記錄回放模塊的硬件設計做詳細介紹。

圖2 系統硬件組成框圖Fig.2 Composition block diagram of system hardware
微控制器選用ATMEL公司的AT91RM9200[2],該芯片內嵌ARM920T處理器核,主頻為180MHz,功耗低,性價比高。芯片提供的外部總線接口 (EBI)集成了多種存儲控制器以及豐富的對外接口。在該系統中,微控制器作為整個系統的大腦,主要完成以下功能:
1)通過以太網,接收并解析來自控制計算機的操作指令完成數據記錄、回放等操作,動態上報系統工作狀態,并可將記錄的數據下載到計算機。
2)控制FPGA完成對于存儲陣列的讀寫等操作,完成存儲陣列物理地址映射表的創建與更新,通過FPGA提供的雙口RAM實現與FPGA的數據交互。
3)工作過程中,負責文件列表的創建更新,數據記錄、下載和回放的調度管理等。
其外圍電路主要包括網絡接口芯片、Flash、串口芯片和SDRAM等,網絡接口芯片選用MARVELL公司的88E1111,配合ARM9工作在MII模式;NOR Flash選用INTEL公司的JS28F128,用于存儲BIOS、嵌入式linux系統鏡像以及根文件;另一片NOR Flash選用AMD公司的AM29LV065D,用于存儲文件列表和陣列物理地址映射表,通過數據線與FPGA相連,方便FPGA對陣列物理地址映射表的實時訪問。
FPGA選用Xilinx公司的XC2VP70[3],該芯片內置RocketIO硬核,具有豐富的邏輯資源、大量的I/O引腳以及738KByte的內部RAM,滿足系統設計需求。作為整個記錄回放系統的心臟,FPGA直接完成對于存儲陣列的讀寫,控制高速數據流的實時收發。FPGA程序用Verilog語言遵循自上而下模塊化思想進行設計,完成復雜的邏輯控制、狀態轉換、數據緩存等電路。主要邏輯模塊包括指令解析與通道選擇模塊、RocketIO數據收發模塊和固態存儲陣列操控模塊,各模塊的主要功能如下[4]:
1)指令解析與通道選擇模塊,接收ARM通過數據線送來的指令及相關參數,選擇需要記錄或回放的通道并切換至相應工作狀態,更新相關參數寄存器供ARM查詢。
2)RocketIO數據收發模塊,采用16位Custom方式工作,參考時鐘125 MHz,MGT核負責高速數據流的收發和串并轉換。數據記錄時,根據MGT核輸出的K碼標志、數據有效標志等信號接收并行數據存入64KBytes記錄FIFO區;數據回放時,把K碼標志、數據有效標志以及64KBytes發送FIFO區的并行數據等信號送至MGT核輸人端。
3)固態存儲陣列操控模塊,是該系統的核心功能模塊,主要完成邏輯地址-物理地址轉換,并行加流水操作的方式對存儲陣列進行讀寫操作。數據記錄時,利用記錄FIFO區32Kbytes可編程滿標志計數值控制數據緩存、分發和寫入;數據回放時,利用發送FIFO區32Kbytes可編程滿標志計數值控制數據讀取、匯總和緩存。
選用三星公司的NAND Flash閃存芯片K9MDG08U5D[5]構建固態存儲陣列,該芯片封裝4個4GB存儲顆粒,存儲容量達16 GB,的命令、地址和數據分時復用8位數據線,各顆粒狀態和控制線互相獨立。最小可編程單元稱為1頁,大小為4 kB,128頁構成一塊,每個4 GB顆粒由8 192塊構成。該系統共采用96片K9MDG08U5D構建4個存儲陣列,每個存儲陣列24片,對應一路光纖數據通道。
NAND Flash頁寫入分為頁加載和頁編程兩個階段,頁編程可自動進行,無需外部干預。基于此特點可用并行加流水的操作方式構建存儲陣列,實現數據的高速實時記錄。單個存儲陣列24片NAND Flash設計為3行8列的結構形式,并行加流水操作框圖如圖3所示。8列將數據位擴展為并行64位,3行共12個片選可實現12級流水操作。寫時鐘選用20 MHz,單個存儲陣列可實現160 MB/s的記錄速率,系統總記錄速率高達640 MB/s。數據回放的過程則與記錄相反,是以并行加流水的方式對存儲陣列進行讀操作。

圖3 存儲陣列并行加流水操作框圖Fig.3 Parallel-pipeline operating block diagram of flash array
該系統的軟件由遠程控制界面軟件和嵌入式linux軟件組成,兩者以網絡為媒介進行通信。遠程控制界面軟件通過以太網對系統進行操控,并動態顯示系統狀態,從而實現人機交互;嵌入式linux軟件接收控制界面操作指令,經解析后調用相應的嵌入式程序模塊完成具體操作。
系統控制界面軟件是基于VC++和BCGControlBar設計的Win32應用程序,如圖4所示。由數據記錄頁、調試工具頁、參數配置頁和數據分析頁共四部分組成。數據記錄頁主要包括數據記錄、數據回放、數據下載、格式化、板卡狀態顯示和單板文件列表顯示等程序模塊,是整個界面軟件的核心部分;其他3部分分別完成系統輔助調試、系統參數配置和簡單的數據分析功能。

圖4 控制界面Fig.4 User interface
為便于系統擴展,操作指令由控制計算機通過UDP組播的形式發送給記錄回放系統。UDP組播消息結構體包括消息頭msg_head和消息參數msg_parameter及文件名等信息,消息頭也是一個結構體,其中包括操作指令和發往板卡的IP地址等,消息參數定義為一個長度為20的整型數組,用于存放與操作指令配合的參數信息。界面還能夠動態顯示由嵌入式計算機送回的系統當前的工作狀態及持續時長、當前記錄容量、剩余容量、下載進度和回放進度等信息。
linux操作系統因其源碼開放,可自由裁剪,實時性能好等優點,廣泛應用于在嵌入式系統。該系統基于linux2.6內核構建嵌入式操作系統鏡像并開發了FPGA驅動程序[4],在RedHat9.0環境下使用交叉編譯工具arm-linux-gcc開發了多任務嵌入式應用軟件[6-7]。
嵌入式linux應用軟件主函數創建并初始化消息隊列、網絡接收和發送套接字,用函數pthread_create和pthread_join創建并啟動網絡接收任務和處理任務[8]。網絡接收任務循環接收控制計算機送來的操作指令,存入消息隊列,并通過msgsnd將消息發送給處理任務,處理任務對指令消息進行解析,調用相應的程序模塊,通過ioctl和read函數和FPGA進行指令和數據交互,完成具體操作,同時通過以太網將系統狀態送到控制界面動態顯示。軟件工作流程如圖5所示。
該多通道VPX總線固態數據記錄回放系統,存儲容量大,記錄速率高,可擴展性強,穩定可靠,技術指標符合設計要求,已在我所多個型號的雷達中得以應用,在加快雷達整機調試進度、提升信號處理算法性能等方面發揮了重要作用。

圖5 嵌入式linux軟件工作流程圖Fig.5 Flow chart of the embedded linux software
[1]包利民,潘奇.VPX總線技術及其實現 [J].電子機械工程,2012,28(2):57-60.BAO Li-min,PAN Qi.VPX bus techniques and its implementation[J].Electro-Mechanical Engineering,2012,28(2):57-60.
[2]Atmel Corporation.AT91RM9200 Data Sheet[M].USA:Atmel Corporation,2003.
[3]Xilinx Inc.Virtex-II Pro Platform FPGAs:Complete DataSheet[EB/OL].(2004-03).USA:Xilinx Inc.
[4]丁曉偉,應波.基于ARM9與FPGA的嵌入式固態存儲系統[J].現代雷達,2009,31(8):55-57.DING Xiao-wei,YING Bo.Embedded solid-state memory sy-stem based on ARM9 and FPGA[J].Modern Radar,2009,31(8):55-57.
[5]Samsung Electronics Corporation.K9MDG08U5D Data Sheet[EB/OL].(2009).Seoul:Samsung Electronics Corporation.
[6]黃智偉,鄧月明,王彥.ARM9嵌入式系統設計基礎教程[M].北京:北京航空航天大學出版社,2008.
[7]羅蕾.嵌入式實時操作系統及應用開發[M].北京:北京航空航天大學出版社,2011.
[8]施先旺,王鵬武.發動機工況實時調節軟件設計[J].火箭推進 ,2012(5):70-76.SHI Xian-wang,WANG Peng-wu.Design of real-time regulation software for engine power[J].Journal of Rocket Propulsion,2012(5):70-76.