李 申,張 萍,應 波
(南京電子技術(shù)研究所 江蘇 南京 210039)
數(shù)據(jù)記錄回放系統(tǒng)廣泛應用于雷達、航空航天、環(huán)境監(jiān)測、交通等多個軍用和民用領域,除完成數(shù)據(jù)的實時記錄外,還可以進行事后回放用于歷史數(shù)據(jù)的檢索、處理和分析,在雷達等大型復雜電子設備的調(diào)試、算法分析、系統(tǒng)性能提升等過程中發(fā)揮著重要作用。隨著半導體技術(shù)的迅速發(fā)展,具備高性能、低功耗、體積小、重量輕等優(yōu)勢的固態(tài)存儲器件在數(shù)據(jù)記錄回放系統(tǒng)中的應用也越來越廣。VPX總線由VME總線發(fā)展而來,在保留原有VME某些特性的基礎上引入高速串行互聯(lián),突破了原有并行總線的帶寬瓶頸,為高速實時嵌入式系統(tǒng)的搭建提供了解決方案,已成為新一代的工業(yè)總線標準[1]。
隨著雷達數(shù)字化的發(fā)展,陣列化天線、數(shù)字T/R和DBF等新技術(shù)普遍得以應用,雷達回波數(shù)據(jù)在天線組件級或單元級已經(jīng)實現(xiàn)數(shù)字化,在送到信號處理機之前多采用光纖傳輸。數(shù)字陣列雷達通道數(shù)多,回波數(shù)據(jù)量大,速度高,對雷達數(shù)據(jù)記錄系統(tǒng)提出了更高的要求。本文結(jié)合我所某型雷達研制需求,基于ARM-FPGA架構(gòu)以大容量固態(tài)存儲器件構(gòu)建存儲陣列,設計并實現(xiàn)了該多通道VPX總線固態(tài)數(shù)據(jù)記錄回放系統(tǒng)。
為滿足雷達系統(tǒng)在線實時記錄和回放的需求,該系統(tǒng)采用VPX總線形式,安裝在雷達插箱內(nèi),通過以太網(wǎng)遠程控制。雷達開機工作過程中,接收機A/D后的回波數(shù)據(jù)送信號處理完成實時處理的同時,還要送給數(shù)據(jù)記錄回放系統(tǒng)進行實時記錄;對于歷史數(shù)據(jù)可以通過回放送給信號處理,供事后分析處理。系統(tǒng)工作框圖如圖1所示。
圖1 系統(tǒng)工作框圖Fig.1 System working diagram
該系統(tǒng)由VPX總線固態(tài)記錄回放模塊和接口模塊組成,前者作為系統(tǒng)主體基于ARM-FPGA架構(gòu)進行設計,采用NAND Flash存儲芯片構(gòu)建了4個固態(tài)存儲陣列分別對應4個光纖通道,以實現(xiàn)多通道數(shù)據(jù)的記錄和回放。ARM通過嵌入式軟件負責與控制計算機的網(wǎng)絡通信,完成系統(tǒng)管理和操作控制;FPGA邏輯完成光纖數(shù)據(jù)的串并轉(zhuǎn)換以及對于存儲陣列的讀寫等。接口模塊作為記錄回放系統(tǒng)的對外接口,提供網(wǎng)口、串口和光口,分別用于對外網(wǎng)絡通信和系統(tǒng)狀態(tài)監(jiān)控以及工作過程中數(shù)據(jù)的光電轉(zhuǎn)換。
系統(tǒng)硬件組成框圖如圖2所示。VPX總線固態(tài)記錄回放模塊設計為VPX 6U負載板,其硬件主要由微控制器及其外圍電路、FPGA及NAND Flash存儲陣列組成。接口模塊是為滿足雷達機柜后出線要求專門設計的系統(tǒng)對外數(shù)據(jù)接口,主要包括網(wǎng)口、串口和光口等。下面僅對VPX總線固態(tài)記錄回放模塊的硬件設計做詳細介紹。
圖2 系統(tǒng)硬件組成框圖Fig.2 Composition block diagram of system hardware
微控制器選用ATMEL公司的AT91RM9200[2],該芯片內(nèi)嵌ARM920T處理器核,主頻為180MHz,功耗低,性價比高。芯片提供的外部總線接口 (EBI)集成了多種存儲控制器以及豐富的對外接口。在該系統(tǒng)中,微控制器作為整個系統(tǒng)的大腦,主要完成以下功能:
1)通過以太網(wǎng),接收并解析來自控制計算機的操作指令完成數(shù)據(jù)記錄、回放等操作,動態(tài)上報系統(tǒng)工作狀態(tài),并可將記錄的數(shù)據(jù)下載到計算機。
2)控制FPGA完成對于存儲陣列的讀寫等操作,完成存儲陣列物理地址映射表的創(chuàng)建與更新,通過FPGA提供的雙口RAM實現(xiàn)與FPGA的數(shù)據(jù)交互。
3)工作過程中,負責文件列表的創(chuàng)建更新,數(shù)據(jù)記錄、下載和回放的調(diào)度管理等。
其外圍電路主要包括網(wǎng)絡接口芯片、Flash、串口芯片和SDRAM等,網(wǎng)絡接口芯片選用MARVELL公司的88E1111,配合ARM9工作在MII模式;NOR Flash選用INTEL公司的JS28F128,用于存儲BIOS、嵌入式linux系統(tǒng)鏡像以及根文件;另一片NOR Flash選用AMD公司的AM29LV065D,用于存儲文件列表和陣列物理地址映射表,通過數(shù)據(jù)線與FPGA相連,方便FPGA對陣列物理地址映射表的實時訪問。
FPGA選用Xilinx公司的XC2VP70[3],該芯片內(nèi)置RocketIO硬核,具有豐富的邏輯資源、大量的I/O引腳以及738KByte的內(nèi)部RAM,滿足系統(tǒng)設計需求。作為整個記錄回放系統(tǒng)的心臟,F(xiàn)PGA直接完成對于存儲陣列的讀寫,控制高速數(shù)據(jù)流的實時收發(fā)。FPGA程序用Verilog語言遵循自上而下模塊化思想進行設計,完成復雜的邏輯控制、狀態(tài)轉(zhuǎn)換、數(shù)據(jù)緩存等電路。主要邏輯模塊包括指令解析與通道選擇模塊、RocketIO數(shù)據(jù)收發(fā)模塊和固態(tài)存儲陣列操控模塊,各模塊的主要功能如下[4]:
1)指令解析與通道選擇模塊,接收ARM通過數(shù)據(jù)線送來的指令及相關(guān)參數(shù),選擇需要記錄或回放的通道并切換至相應工作狀態(tài),更新相關(guān)參數(shù)寄存器供ARM查詢。
2)RocketIO數(shù)據(jù)收發(fā)模塊,采用16位Custom方式工作,參考時鐘125 MHz,MGT核負責高速數(shù)據(jù)流的收發(fā)和串并轉(zhuǎn)換。數(shù)據(jù)記錄時,根據(jù)MGT核輸出的K碼標志、數(shù)據(jù)有效標志等信號接收并行數(shù)據(jù)存入64KBytes記錄FIFO區(qū);數(shù)據(jù)回放時,把K碼標志、數(shù)據(jù)有效標志以及64KBytes發(fā)送FIFO區(qū)的并行數(shù)據(jù)等信號送至MGT核輸人端。
3)固態(tài)存儲陣列操控模塊,是該系統(tǒng)的核心功能模塊,主要完成邏輯地址-物理地址轉(zhuǎn)換,并行加流水操作的方式對存儲陣列進行讀寫操作。數(shù)據(jù)記錄時,利用記錄FIFO區(qū)32Kbytes可編程滿標志計數(shù)值控制數(shù)據(jù)緩存、分發(fā)和寫入;數(shù)據(jù)回放時,利用發(fā)送FIFO區(qū)32Kbytes可編程滿標志計數(shù)值控制數(shù)據(jù)讀取、匯總和緩存。
選用三星公司的NAND Flash閃存芯片K9MDG08U5D[5]構(gòu)建固態(tài)存儲陣列,該芯片封裝4個4GB存儲顆粒,存儲容量達16 GB,的命令、地址和數(shù)據(jù)分時復用8位數(shù)據(jù)線,各顆粒狀態(tài)和控制線互相獨立。最小可編程單元稱為1頁,大小為4 kB,128頁構(gòu)成一塊,每個4 GB顆粒由8 192塊構(gòu)成。該系統(tǒng)共采用96片K9MDG08U5D構(gòu)建4個存儲陣列,每個存儲陣列24片,對應一路光纖數(shù)據(jù)通道。
NAND Flash頁寫入分為頁加載和頁編程兩個階段,頁編程可自動進行,無需外部干預?;诖颂攸c可用并行加流水的操作方式構(gòu)建存儲陣列,實現(xiàn)數(shù)據(jù)的高速實時記錄。單個存儲陣列24片NAND Flash設計為3行8列的結(jié)構(gòu)形式,并行加流水操作框圖如圖3所示。8列將數(shù)據(jù)位擴展為并行64位,3行共12個片選可實現(xiàn)12級流水操作。寫時鐘選用20 MHz,單個存儲陣列可實現(xiàn)160 MB/s的記錄速率,系統(tǒng)總記錄速率高達640 MB/s。數(shù)據(jù)回放的過程則與記錄相反,是以并行加流水的方式對存儲陣列進行讀操作。
圖3 存儲陣列并行加流水操作框圖Fig.3 Parallel-pipeline operating block diagram of flash array
該系統(tǒng)的軟件由遠程控制界面軟件和嵌入式linux軟件組成,兩者以網(wǎng)絡為媒介進行通信。遠程控制界面軟件通過以太網(wǎng)對系統(tǒng)進行操控,并動態(tài)顯示系統(tǒng)狀態(tài),從而實現(xiàn)人機交互;嵌入式linux軟件接收控制界面操作指令,經(jīng)解析后調(diào)用相應的嵌入式程序模塊完成具體操作。
系統(tǒng)控制界面軟件是基于VC++和BCGControlBar設計的Win32應用程序,如圖4所示。由數(shù)據(jù)記錄頁、調(diào)試工具頁、參數(shù)配置頁和數(shù)據(jù)分析頁共四部分組成。數(shù)據(jù)記錄頁主要包括數(shù)據(jù)記錄、數(shù)據(jù)回放、數(shù)據(jù)下載、格式化、板卡狀態(tài)顯示和單板文件列表顯示等程序模塊,是整個界面軟件的核心部分;其他3部分分別完成系統(tǒng)輔助調(diào)試、系統(tǒng)參數(shù)配置和簡單的數(shù)據(jù)分析功能。
圖4 控制界面Fig.4 User interface
為便于系統(tǒng)擴展,操作指令由控制計算機通過UDP組播的形式發(fā)送給記錄回放系統(tǒng)。UDP組播消息結(jié)構(gòu)體包括消息頭msg_head和消息參數(shù)msg_parameter及文件名等信息,消息頭也是一個結(jié)構(gòu)體,其中包括操作指令和發(fā)往板卡的IP地址等,消息參數(shù)定義為一個長度為20的整型數(shù)組,用于存放與操作指令配合的參數(shù)信息。界面還能夠動態(tài)顯示由嵌入式計算機送回的系統(tǒng)當前的工作狀態(tài)及持續(xù)時長、當前記錄容量、剩余容量、下載進度和回放進度等信息。
linux操作系統(tǒng)因其源碼開放,可自由裁剪,實時性能好等優(yōu)點,廣泛應用于在嵌入式系統(tǒng)。該系統(tǒng)基于linux2.6內(nèi)核構(gòu)建嵌入式操作系統(tǒng)鏡像并開發(fā)了FPGA驅(qū)動程序[4],在RedHat9.0環(huán)境下使用交叉編譯工具arm-linux-gcc開發(fā)了多任務嵌入式應用軟件[6-7]。
嵌入式linux應用軟件主函數(shù)創(chuàng)建并初始化消息隊列、網(wǎng)絡接收和發(fā)送套接字,用函數(shù)pthread_create和pthread_join創(chuàng)建并啟動網(wǎng)絡接收任務和處理任務[8]。網(wǎng)絡接收任務循環(huán)接收控制計算機送來的操作指令,存入消息隊列,并通過msgsnd將消息發(fā)送給處理任務,處理任務對指令消息進行解析,調(diào)用相應的程序模塊,通過ioctl和read函數(shù)和FPGA進行指令和數(shù)據(jù)交互,完成具體操作,同時通過以太網(wǎng)將系統(tǒng)狀態(tài)送到控制界面動態(tài)顯示。軟件工作流程如圖5所示。
該多通道VPX總線固態(tài)數(shù)據(jù)記錄回放系統(tǒng),存儲容量大,記錄速率高,可擴展性強,穩(wěn)定可靠,技術(shù)指標符合設計要求,已在我所多個型號的雷達中得以應用,在加快雷達整機調(diào)試進度、提升信號處理算法性能等方面發(fā)揮了重要作用。
圖5 嵌入式linux軟件工作流程圖Fig.5 Flow chart of the embedded linux software
[1]包利民,潘奇.VPX總線技術(shù)及其實現(xiàn) [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的嵌入式固態(tài)存儲系統(tǒng)[J].現(xiàn)代雷達,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嵌入式系統(tǒng)設計基礎教程[M].北京:北京航空航天大學出版社,2008.
[7]羅蕾.嵌入式實時操作系統(tǒng)及應用開發(fā)[M].北京:北京航空航天大學出版社,2011.
[8]施先旺,王鵬武.發(fā)動機工況實時調(diào)節(jié)軟件設計[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.