吳 偉 郝建新 盧 力
摘 要:論述一種基于ARM與FPGA的高速高空實驗數(shù)據(jù)采集系統(tǒng)的實現(xiàn)。其ARM芯片采用Samsumg公司的S3C2410,FPGA采用Altera公司Stratix Ⅱ系列的EP2S15器件。ARM通過接受地面指令控制實驗運行,觸發(fā)后通過 FPGA采集實驗?zāi)繕藬?shù)據(jù)并傳回地面。介紹了系統(tǒng)的硬件結(jié)構(gòu)和接口設(shè)計,并著重討論了軟件系統(tǒng)的設(shè)計與實現(xiàn),在高速高空數(shù)據(jù)采集系統(tǒng)的設(shè)計與實現(xiàn)上,體現(xiàn)出了新穎的構(gòu)建方法。
關(guān)鍵詞:嵌入式系統(tǒng);ARM;FPGA;高空數(shù)據(jù)采集
中圖分類號:TP273 文獻標識碼:B
文章編號:1004-373X(2009)01-126-03
Implement of High Speed and High Altitude Data Acquisition System Based on ARM and FPGA
WU Wei,HAO Jianxin,LU Li
(College of Electrical Science and Engineering,National University of Defence Technology,Changsha,410073,China)
Abstract:A high speed high altitude experimental data acquisition system based on ARM and FPGA is introduced.The ARM processor is S3C2410 produced by Samsung,while the FPGA is EP2S15 which belongs to Stratix II serial and produced by Altera.ARM controls the experiment process by receiving the command send by PC on ground,and itsends back the collected target experimental data after the system triggered.The system hardware architecture and connectionswere are discussed,with the emphasis on design and implement of the software system.It′s a new system designing and building experience introduced in this paper on high speed and high altitude data collection.
Keywords:embedded system;ARM;FPGA;high altitude data collection
隨著人們對高空的興趣發(fā)展和研究需要,越來越多的科學實驗被科研人員搬到了空中進行,氣球探空和無人機實驗是比較典型的方法。這些科學實驗往往需要在一定的實驗條件到達時觸發(fā)某特定實驗現(xiàn)象,從而對發(fā)生時間非常短促且不具備可重復再現(xiàn)性的實驗?zāi)繕藬?shù)據(jù)進行高速采集。日前,筆者參與的項目中需要完成的任務(wù)是:通過無線通信實現(xiàn)對高空實驗設(shè)備進行控制,對整個實驗過程進行實時觀察分析(其中的實驗條件數(shù)據(jù)通過GPS接收機,紅外虛擬邏輯分析儀等設(shè)備實時采集),待實驗到達觸發(fā)條件時,通過手動(或自動可選)的方法實施觸發(fā),再對觸發(fā)后的實驗?zāi)繕藬?shù)據(jù)進行采集并傳回地面PC進行后續(xù)的分析處理。該項目采用ARM和FPGA分別作為主從處理器設(shè)計嵌入式采集系統(tǒng),采用多通道A/D并行采樣實驗?zāi)繕藬?shù)據(jù),
系統(tǒng)通過基于串口的無線數(shù)傳模塊與地面實時通信。
1 系統(tǒng)硬件設(shè)計
系統(tǒng)的硬件結(jié)構(gòu)原理圖如圖1所示。
在該系統(tǒng)設(shè)計方案中,ARM采用Samsung公司基于ARM920T的S3C2410,其主要技術(shù)指標如:支持 32 b ARM指令集和16 b Thumb指令集;支持32 b的高速AMBA總線接口;帶有MMU(內(nèi)存管理單元),可以進行Linux操作系統(tǒng)的移植;MPU支持實時操作系統(tǒng);采用五級流水線和哈佛結(jié)構(gòu),獨立的16 KB指令Cache和16 KB數(shù)據(jù)Cache,具有更高的指令和數(shù)據(jù)處理能力;支持TFT的LCD控制器、NAND閃存控制器、3路UART、4路帶PWM的Timer、8路10位ADC、觸摸屏接口、I2C總線接口,以及2個USB主設(shè)備接口和1個USB從設(shè)備接口等豐富的外圍設(shè)備和接口。FPGA采用Altera公司Stratix Ⅱ系列的EP2S15器件,EP2S15現(xiàn)場可編程門陣列系列速度快容量高,它采用1.2 V,90 nm全銅層SRAM工藝和創(chuàng)新的適應(yīng)邏輯模塊(ALM)結(jié)構(gòu),有最大化的性能,器件密度可達到15 600等效邏輯元(LE),能提供419 Kb片內(nèi)TriMatrix存儲器,多達12個DSP區(qū)塊有48(18 b× 18 b)乘法器,用來實現(xiàn)高性能濾波器和其他DSP功能,支持各種高速外接存儲器接口,支持各種標準的 I/O,高速差分I/O,具有豐富的外部資源以及支持多種高性能標準。
在該系統(tǒng)中,ARM主要負責核心處理和控制,總線實現(xiàn)ARM與FPGA之間的通信,存儲器負責程序和數(shù)據(jù)的存儲,其中FLASH存儲程序和文件,SDRAM存儲系統(tǒng)運行時的程序和數(shù)據(jù),ARM通過GPIO連接實驗中的相關(guān)繼電器、觸發(fā)設(shè)備、輸出電壓控制設(shè)備、以及特定設(shè)備采樣A/D并進行驅(qū)動,通過FPGA擴展RS 232串口分時控制和讀取GPS接收機、紅外虛擬邏輯分析儀等設(shè)備數(shù)據(jù),通過總線連接FPGA并控制FPGA動作來啟動和完成數(shù)據(jù)采集,通過RS 232通信接口負責與地面PC的交互。本系統(tǒng)充分發(fā)揮了ARM芯片的強大處理能力和FPGA的高速并行能力,成功實現(xiàn)實驗?zāi)康摹?/p>
ARM和FPGA的總線接口如圖2所示。
S3C2410通過讀寫總線上的地址來進行指令和數(shù)據(jù)的傳輸以控制EP2S15的所有動作。FPGA主要實現(xiàn)通過控制A/D實現(xiàn)數(shù)據(jù)采集,并保存至SDRAM,對ARM的讀寫信號進行譯碼以將實驗?zāi)繕藬?shù)據(jù)讀回ARM并傳回地面。將EP2S15直接連在S3C2410的存儲器總線上,S3C2410可以通過存儲器指令訪問EP2S15,ARM與FPGA之間的連接除了數(shù)據(jù)、地址和讀寫控制外,還有中斷信號和DMA控制信號,使ARM可接受FPGA產(chǎn)生的中斷和實現(xiàn)DMA數(shù)據(jù)傳輸。另外為了擴展S3C2410的串口,將串口連接到FPGA實現(xiàn)對多個設(shè)備的分時控制。
2 系統(tǒng)軟件設(shè)計
系統(tǒng)的軟件結(jié)構(gòu)圖如圖3所示。
2.1 PC機控制程序
(1) 通過自定義協(xié)議和無線數(shù)傳模塊,對下位機發(fā)出各種命令控制實驗的進行。
(2) 對實時的實驗條件數(shù)據(jù)進行相關(guān)處理和顯示,以實現(xiàn)對實驗運行情況實時監(jiān)控。
(3) 根據(jù)實驗者要求,定義實驗觸發(fā)條件和方式,并在條件到達時發(fā)出警報。
(4)對實驗?zāi)繕藬?shù)據(jù)進行采集和保存,待下一步實驗分析使用。
2.2 下位機系統(tǒng)程序
下位機程序包括FPGA模塊子程序和ARM主體控制程序。
FPGA模塊程序又包括對ARM讀寫指令的譯碼,對A/D的驅(qū)動來采集實驗?zāi)繕藬?shù)據(jù),對SDRAM驅(qū)動以保存實驗數(shù)據(jù),對中斷信號和DMA信號的支持,對串口的設(shè)備切換支持。
ARM主體程序包括操作系統(tǒng)和應(yīng)用程序:為了最大程度利用系統(tǒng)硬件資源,并且保證實時性,在ARM上移植了Linux多任務(wù)實時操作系統(tǒng),內(nèi)核版本為2.6,完美支持多線程以并行完成實驗中的多個控制任務(wù),并且通過修改啟動參數(shù)以實現(xiàn)控制程序的自動運行;為了方便系統(tǒng)開發(fā)調(diào)試,該系統(tǒng)移植了基于Linux USB Gadget的USB從設(shè)備驅(qū)動,實現(xiàn)了把ARM連接的FLASH當成海量存儲設(shè)備進行讀寫,大大提高了開發(fā)過程中燒寫FLASH的速度,提高了開發(fā)效率,并對于地面進行試驗性實驗的大數(shù)據(jù)量高速讀寫提供了支持;設(shè)計并實現(xiàn)了用來支持FPGA,A/D設(shè)備、相關(guān)繼電器、觸發(fā)設(shè)備、輸出電壓控制設(shè)備的驅(qū)動;并實現(xiàn)了主體應(yīng)用程序以完成各主要任務(wù)。
驅(qū)動模塊實現(xiàn)中,均采用字符設(shè)備方法,對于FPGA的驅(qū)動通過IOCTL方法以實現(xiàn)對多端口變長字節(jié)數(shù)的讀寫;對A/D設(shè)備則通過對連接的GPIO端口(時鐘信號和數(shù)據(jù)引腳)完全按照設(shè)備時序進行操作,考慮到實驗中特定電壓變化并不會驟變,為了數(shù)據(jù)準確采取多次讀取求均值的方法進行;對輸出電壓控制設(shè)備則對內(nèi)核實現(xiàn)的s3c2410_gpio_set函數(shù)進行參考,實現(xiàn)一次調(diào)用對多個GPIO端口進行設(shè)置,以保證輸出電壓的精確跳變和控制。
主體應(yīng)用程序主要包括初始化模塊、通信模塊、充電控制模塊、實驗參數(shù)設(shè)備數(shù)據(jù)讀取模塊(GPS等)、實驗?zāi)繕藬?shù)據(jù)采集模塊。下面是幾個主要模塊的實現(xiàn)過程。
(1) 通信模塊
由于采用基于串口的無線數(shù)傳與PC機進行通信,項目中采用自定義協(xié)議方式,定義了相關(guān)的命令字、數(shù)據(jù)字、參數(shù)字的數(shù)據(jù)格式以及糾錯算法和握手協(xié)議,對PC機發(fā)送的命令進行解析和響應(yīng),并啟動調(diào)用其他實驗控制模塊,最后將實驗所需的數(shù)據(jù)實時傳回地面。
(2) 實驗參數(shù)設(shè)備數(shù)據(jù)讀取模塊
在初始化模塊中把各實驗參數(shù)設(shè)備配置為PUSH模式,以項目中采用的GPS接收機為例,可以配置成以5 Hz的速率定時發(fā)送符合NMEA協(xié)議的GPGGA等數(shù)據(jù)的模式,每隔一定時間切換串口至GPS接收機讀取數(shù)據(jù),按照NMEA協(xié)議對試驗中所需的數(shù)據(jù)進行解析處理,并保存至指定緩沖區(qū)以讓通信模塊實時發(fā)送回地面,其他設(shè)備類似操作。
(3) 實驗?zāi)繕藬?shù)據(jù)采集模塊
在接收到觸發(fā)命令后,啟動FPGA進行采樣,通過輪詢或中斷方式判斷FPGA已經(jīng)采集完畢后,將實驗?zāi)繕藬?shù)據(jù)讀至指定緩沖區(qū),進行相關(guān)處理后傳回地面,為了保證數(shù)據(jù)準確,可采用重復發(fā)方法或較好的糾錯方法。
初始化模塊主要完成上電后對各實驗設(shè)備進行初始化,讀取PC發(fā)送的參數(shù)進行設(shè)置,其他實驗控制模塊按照實驗規(guī)程完成。
3 結(jié) 語
介紹一種采用ARM與FPGA相結(jié)合的設(shè)計,實現(xiàn)了適用于高空高速實驗數(shù)據(jù)采集的系統(tǒng),采用S3C2410作為主控芯片,實時地將實驗數(shù)據(jù)傳輸?shù)降孛鍼C控制平臺,地面PC實時控制高空實驗過程并進行實驗?zāi)繕藬?shù)據(jù)采集?,F(xiàn)場可編程門陣列(FPGA)采用Altera公司Stratix Ⅱ系列的EP2S15器件,在控制 4塊A/D轉(zhuǎn)換芯片的同時,將數(shù)據(jù)存貯在SDRAM中,并與S3C2410通過總線傳輸數(shù)據(jù)。由于主從處理器都采用功能強大且資源豐富的芯片,為以后的系統(tǒng)升級預留了大量空間。開發(fā)過程中可得的豐富資料,減輕了研發(fā)任務(wù),提高研發(fā)速度,在較短的時間內(nèi)得到性能優(yōu)秀的目標系統(tǒng),目前該系統(tǒng)已投入實際應(yīng)用,取得了理想的效果。該論文的創(chuàng)新之處在于以新穎的設(shè)計結(jié)構(gòu)同時實現(xiàn)了復雜實驗過程的控制和高速的數(shù)據(jù)采集,對S3C2410這款處理器強大的處理能力和豐富的I/O資源充分利用,同時以EP2S15的高速并行處理能力彌補了ARM的不足之處。該系統(tǒng)中的整體設(shè)計結(jié)構(gòu)和流程都可以為嵌入式數(shù)控行業(yè)提供很好的借鑒作用。
參考文獻
[1]Sumsung S3C2410 Data Sheet[Z].
[2]Altera Stratix II Device Handbook[Z].
[3]Corbet J.Linux設(shè)備驅(qū)動程序[M].魏永明,耿岳,鐘書毅,譯.北京:中國電力出版社,2005.
[4]郭文秀,董永貴,孫照焱,等.高速連續(xù)數(shù)據(jù)流記錄系統(tǒng)中并行處理接口的研究[J].計算機工程與應(yīng)用,2002,38(6): 67-69.
[5]吳小明,葉朝暉,楊士元.基于ARM的快速原型化平臺的實現(xiàn)[J].微計算機信息,2006,22(23):156-158.
[6]肖金球,劉傳洋,仲嘉霖.基于FPGA的高速實時數(shù)據(jù)采集系統(tǒng)[J].電路與系統(tǒng)學報,2005,10(6):128-134.
[7]楊志方,王澤成,涂坦,等.基于FPGA的多路高速數(shù)據(jù)采集系統(tǒng)的實現(xiàn)[J].武漢化工學院學報,2006,28(3):58-61.
[8]崔俊杰,郭宏.基于FPGA的實時數(shù)據(jù)采集與遠程傳輸系統(tǒng)設(shè)計[J].數(shù)據(jù)采集與處理,2005,20(3):366-370.
[9]成潔,路欣.嵌入式Linux平臺的GPS數(shù)據(jù)采集研究[J].江西理工大學學報,2006,27(3):24-26.
[10]周維,陳默.基于S3C2410的ARM開發(fā)平臺[J].電子技術(shù),2004,31(7):4-6
作者簡介吳 偉 男,1983年出生,湖南漣源人,工學碩士。主要從事嵌入式系統(tǒng)、ARM應(yīng)用與電子控制技術(shù)等的研究。
郝建新 男,1960年出生,湖南長沙人,教授。主要從事圖形、圖像與計算機可視化的研究。