《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計應(yīng)用 > 基于ARM和FPGA的便攜人工地震數(shù)據(jù)采集系統(tǒng)設(shè)計
基于ARM和FPGA的便攜人工地震數(shù)據(jù)采集系統(tǒng)設(shè)計
來源:電子技術(shù)應(yīng)用2011年第1期
李從慶1,2,王夫運(yùn)2,薛 兵3
(1.中國地震局地球物理研究所,北京100081;2.中國地震局地球物理勘探中心,河南 鄭州4500
摘要: 介紹了一種基于Atmel AT91SAM9G20(ARM926EJ-S核)低功耗微處理器和Actel AGL600(低功耗Flash-based FPGA)并融合嵌入式Linux技術(shù)的便攜式人工地震數(shù)據(jù)采集系統(tǒng)的設(shè)計原理和實(shí)現(xiàn)方法。該設(shè)計引入動態(tài)電源管理技術(shù),根據(jù)系統(tǒng)負(fù)載自動進(jìn)行微處理器工作頻率調(diào)節(jié)和外圍I/O設(shè)備的工作模式調(diào)整。本數(shù)據(jù)采集系統(tǒng)功耗低、體積小,野外使用安裝便捷,對降低數(shù)據(jù)采集成本、延長系統(tǒng)有效工作時間、提高野外工作效率有著積極意義。
中圖分類號: TP29
文獻(xiàn)標(biāo)識碼: A
文章編號: 0258-7998(2011)01-0038-04
The portable artificial seismic data acquisition system based on ARM and FPGA
Li Congqing1,2,Wang Fuyun2,Xue Bing3
1.Institute of Geophysics,CEA,Beijing 100081,China; 2.Geophysical Exploration Center of CEA,Zhengzhou 450002,China; 3.Beijing Gangzhen Mechanical & Electronic Technology Co.,Ltd,Beijing 102628,China
Abstract: This article describes the design principles and implementation methods of an artificial seismic sounding data acquisition system,which is based on ARM926EJ-S core processor(Atmel AT91SAM9G20) and ultra low-power FPGA chip(Actel AGL600) in combination with embedded Linux technology. By making use of existing seismic instruments and embedded technology,design a sounding seismic seismograph equipment that features low power,small size,easy to carry and internet access. Besides, dynamic CPU frequency scaling is introduced in this design to further reduce watt loss.
Key words : embedded Linux;AT91SAM9G20;FPGA;CPU frequency scaling


    近年來,隨著可編程邏輯器件(CPLD/FPGA)的迅猛發(fā)展,可編程邏輯器件在數(shù)據(jù)采集、邏輯接口設(shè)計、電平接口轉(zhuǎn)換和高性能數(shù)字信號處理等領(lǐng)域取得越來越廣泛的應(yīng)用。CPLD/FPGAD不僅可以解決電子系統(tǒng)小型化、低功耗、高可靠性等問題,而且開發(fā)周期短、投入少,同時不斷下降的芯片價格極大推動了CPLD/FPGA器件在廣泛應(yīng)用領(lǐng)域的使用。本文介紹一種ARM微處理器+FPGA的硬件設(shè)計,融合嵌入式Linux技術(shù),實(shí)現(xiàn)一種小型化、移動性強(qiáng)、網(wǎng)絡(luò)耦合度高的便攜式人工地震數(shù)據(jù)采集系統(tǒng)。該系統(tǒng)以滿足人工地震觀測的需要、減小儀器尺寸和重量、降低功耗、降低野外工作強(qiáng)度和提高數(shù)據(jù)采集工作效率為目標(biāo)。
1 系統(tǒng)硬件設(shè)計
    采集系統(tǒng)由CPU核心板、A/D數(shù)據(jù)采集板和電源板組成,系統(tǒng)原理如圖1所示。CPU板以Atmel  AT91SAM9G20微處理器為核心,通過總線和GPIO分別與64 MB SDRAM、16 MB Norflas和FPGA A3P250接口。板上大容量CF卡安裝有FAT文件系統(tǒng),用于地震波形數(shù)據(jù)的本地存儲。網(wǎng)絡(luò)接口提供遠(yuǎn)程登錄、數(shù)據(jù)傳輸及系統(tǒng)控制功能,包括實(shí)時數(shù)據(jù)流傳輸。LCD屏顯示系統(tǒng)工作參數(shù),如溫度、經(jīng)緯度、高程、系統(tǒng)網(wǎng)絡(luò)IP地址等信息。串口用于輸出調(diào)試信息,也被SAM-BA軟件用來下載燒寫引導(dǎo)加載程序U-boot和嵌入式Linux操作系統(tǒng)內(nèi)核映像文件。A/D采集板上有三路模數(shù)轉(zhuǎn)換數(shù)據(jù)采集通道,標(biāo)定信號發(fā)生器和檢波器控制信號調(diào)理電路。高效的電源轉(zhuǎn)換電路是實(shí)現(xiàn)系統(tǒng)低功耗的基礎(chǔ)。電源板主要提供CPU等數(shù)字電路+3.3 V/+1.8 V電源,地震計反饋電路供電±12 V、±4 V,參考電壓±2.5 V,標(biāo)定電路和檢波器控制電路供電。GPS系統(tǒng)提供時間服務(wù)和地理位置信息。

    AT91SAM9G20是Atmel公司推出的一款基于ARM926EJ-S核的低功耗SoC。ARM核工作頻率高達(dá)400 MHz,具有DSP指令擴(kuò)展,支持Java硬件加速,具備全功能的MMU。內(nèi)部集成2個容量為16 KB的高速SRAM,具有豐富的片上I/O設(shè)備,包括以太網(wǎng)MAC、USB主機(jī)和設(shè)備接口、通用同/異步發(fā)送接收器USART、SPI接口、同步串行接口SSC、多媒體存儲接口等。電源管理控制器(PMC)提供了CPU動態(tài)調(diào)頻的硬件支持。
1.1 FPGA邏輯設(shè)計
    FPGA芯片的功能主要包括:(1)采集三個通道的A/D數(shù)據(jù)。當(dāng)三路數(shù)據(jù)準(zhǔn)備就緒,nDRDY1、nDRDY2、nDRDY3信號全部拉低,啟動由FPGA實(shí)現(xiàn)的SPI數(shù)據(jù)傳輸狀態(tài)機(jī),地震波形數(shù)據(jù)被緩沖到FPGA內(nèi)部的16 bit寬的FIFO_2k_ADC_DATA中。當(dāng)FIFO_2k_ADC_DATA中數(shù)據(jù)達(dá)到一個閾值時,向ARM微處理器觸發(fā)AD_INT中斷。在中斷處理程序ad_irq_rx()中,通過系統(tǒng)數(shù)據(jù)總線把FIFO中數(shù)據(jù)轉(zhuǎn)移到內(nèi)存緩沖區(qū)ad_data_buff[]中。之后,調(diào)用schedule_work(&tasklet)把諸如數(shù)字信號濾波等耗時任務(wù)放到中斷下半部中進(jìn)行處理。(2)根據(jù)標(biāo)定數(shù)據(jù)文件,控制DAC生成模擬標(biāo)定波形輸出。標(biāo)定波形類型有正弦波、方波等。(3)檢波器控制電路驅(qū)動地震計調(diào)零電機(jī)動作。(4)IRIG讀碼。生成IRIG-B數(shù)據(jù)幀,通過PPS_interrupt觸發(fā)CPU中斷,pps_irq_handle()中斷處理程序負(fù)責(zé)把IRIG碼存儲到內(nèi)存變量irig_frame中,等待解碼以提取時間、經(jīng)緯度、高程等信息。下面是spi實(shí)體的Top-level行為級VHDL語言描述。
ENTITY spi IS
    PORT (    CLK        :in  STD_LOGIC;--4.096 MHz
            CLK40    :in  STD_LOGIC;--40 MHz
            SYNC    :out STD_LOGIC;--PINMODE模式下,
使用復(fù)位信號同步數(shù)據(jù)采集信號
            DOUT1    :in STD_LOGIC;
            SCLK1    :out STD_LOGIC;--第一通道的
ADS1281模數(shù)轉(zhuǎn)換器的SPI時鐘
            nDRDY1,nDRDY2,nDRDY3:in STD_LOGIC;
--ADS1281數(shù)據(jù)就緒等待采集信號
            spi_clk    :out STD_LOGIC;--擴(kuò)展SPI時鐘
            spi_mosi    :out STD_LOGIC;--擴(kuò)展SPI主機(jī)
發(fā)送從機(jī)接收數(shù)據(jù)信號線
            spi_cs1    :out  STD_LOGIC;--擴(kuò)展SPI片選
信號
            EINT1,EINT2:out STD_LOGIC;--FIFO半滿數(shù)
據(jù)采集中斷信號AD_INT,
和DAC數(shù)據(jù)請求中斷信號INT
            ENABLE1,A2,A3,A4,A5:in STD_LOGIC;
            DATA:inout STD_LOGIC_VECTOR(15 downto 0);
--ARM處理器數(shù)據(jù)總線
            led_drv:out STD_LOGIC;--LED狀態(tài)指示
            PPS_interrupt:out  STD_LOGIC;--1 Hz,
GPS秒脈沖
            nRESET:in STD_LOGIC;
            GPS_IRIGL:in STD_LOGIC;--IRIG碼讀寫
            nRD:in STD_LOGIC;--ARM讀
            nWR:in STD_LOGIC;--ARM寫
            nCS:in STD_LOGIC);--ARM片選
END spi;
1.2 A/D數(shù)據(jù)采集通道
    A/D轉(zhuǎn)換器采用TI公司的ADS1281。該A/D轉(zhuǎn)換器具有高分辨率、高精度特性,內(nèi)置4階穩(wěn)定的ΔΣ調(diào)制器,可配置SINC、FIR和IIR濾波器,數(shù)據(jù)率250 S/s~4 KS/s,特別適合地震數(shù)據(jù)觀測環(huán)境。在本設(shè)計中,模擬地動波形信號經(jīng)差分放大后輸入到AD1281的AINP和AINN端。SCLK由FPGA分頻產(chǎn)生的1.024 MHz的時鐘驅(qū)動,用于串行輸出A/D數(shù)據(jù)到FPGA FIFO。當(dāng)A/D完成數(shù)據(jù)轉(zhuǎn)化后,CH1_DRDY拉低向FPGA表示數(shù)據(jù)準(zhǔn)備就緒,等待讀取。CH1_ DOUT連接至FPGA的DOUT1端口,用于數(shù)據(jù)到FPGA FIFO的串行傳輸。AD_CLK由4.096 MHz時鐘驅(qū)動,是A/D的工作時鐘。A/D轉(zhuǎn)換原理電路如圖2所示。

2 系統(tǒng)軟件設(shè)計概要
    Linux因其源代碼開放性特點(diǎn),成為嵌入式系統(tǒng)中應(yīng)用最為廣泛的操作系統(tǒng)之一。本系統(tǒng)采用嵌入式操作系統(tǒng)Linux-2.6.30內(nèi)核,交叉編譯工具使用arm-none-linux-gnueabi-gcc,底層硬件驅(qū)動和數(shù)字信號FIR/IIR濾波程序使用C語言,部分代碼使用嵌入式匯編語言,上層應(yīng)用程序開發(fā)則使用C、C++。本系統(tǒng)的軟件設(shè)計主要任務(wù)包括操作系統(tǒng)的移植、驅(qū)動程序開發(fā)(包括數(shù)據(jù)采集驅(qū)動、系統(tǒng)控制及標(biāo)定驅(qū)動程序等模塊)以及嵌入式應(yīng)用軟件和上位PC機(jī)應(yīng)用軟件開發(fā)。
2.1 嵌入式操作系統(tǒng)Linux-2.6.30的裁剪
    下載解壓縮內(nèi)核源文件。修改頂層目錄下的Makefile文件,設(shè)定目標(biāo)硬件ARCH=arm,指定交叉編譯環(huán)境路徑CROSS_COMPILE=/usr/locaL/arm-2007q1/bin/arm-none-linux- gnueabi-。使用圖形界面或文本行界面進(jìn)行內(nèi)核配置,根據(jù)硬件電路和軟件系統(tǒng)功能對內(nèi)核模塊進(jìn)行剪裁,完成操作系統(tǒng)鏡像的定制、編譯與調(diào)試,并在此環(huán)境上進(jìn)行應(yīng)用軟件和驅(qū)動程序的開發(fā)。在ARM中植入嵌入式linux平臺,首先根據(jù)目標(biāo)設(shè)備的硬件配置及需要,對linux-2.6.30內(nèi)核進(jìn)行基本定制,開發(fā)并安裝驅(qū)動程序,增加CPU動態(tài)調(diào)頻特性,生成鏡像文件。JTAG將U-boot寫入Flash后,通過網(wǎng)卡將鏡像文件下載到目標(biāo)設(shè)備中進(jìn)行調(diào)試,最終把U-boot、linux-2.6.30內(nèi)核及文件系統(tǒng)映像文件等燒寫入Flash存儲器。
2.2 A/D數(shù)據(jù)采集驅(qū)動
    設(shè)備驅(qū)動程序是操作系統(tǒng)內(nèi)核與硬件之間的接口,屬于內(nèi)核的一部分。根據(jù)功能劃分,設(shè)備驅(qū)動程序代碼有以下幾個部分:(1)驅(qū)動程序的注冊與注銷;(2)設(shè)備的打開與釋放;(3)設(shè)備的讀/寫操作;(4)設(shè)備的控制操作;(5)數(shù)據(jù)采集中斷處理程序和PPS_INTERRUPT中斷處理程序。AD驅(qū)動程序最終實(shí)現(xiàn)一個字符設(shè)備驅(qū)動,為了使該驅(qū)動程序能夠被上層的應(yīng)用程序方便地調(diào)用,需要實(shí)現(xiàn)以下的接口函數(shù):
    (1)open調(diào)用:打開數(shù)據(jù)采集通道,需要注意的是open調(diào)用不應(yīng)該自動啟動AD采樣,而應(yīng)該由ioctl調(diào)用提供顯式的控制接口。
    (2)read調(diào)用:讀取采樣數(shù)據(jù),阻塞式讀取,以字節(jié)數(shù)返回讀取到的數(shù)據(jù)量。
    (3)release調(diào)用:關(guān)閉數(shù)據(jù)采集通道,釋放系統(tǒng)資源。
    (4)ioctl調(diào)用:提供以下一些設(shè)置命令。DS—ADC—START:啟動AD采樣,每次開始都會清空上次未讀走的數(shù)據(jù)。DS—ADC—ST0P:停止AD采樣。DS—ADC—SET—SAMPIE_RATE:設(shè)定采樣率。DS—AdC—GET—COUNT:獲取內(nèi)存環(huán)行緩沖區(qū)中已存儲的采樣數(shù)據(jù)。
2.3 應(yīng)用軟件設(shè)計
    應(yīng)用軟件包括嵌入式應(yīng)用軟件和PC機(jī)應(yīng)用軟件。嵌入式應(yīng)用軟件運(yùn)行在采集器ARM處理器上,具體實(shí)現(xiàn)為一個命令解析服務(wù)器,通過Socket接口連接到上位PC機(jī),并接收PC機(jī)端發(fā)送來的控制命令,執(zhí)行相應(yīng)的操作。PC機(jī)應(yīng)用軟件由主線程和數(shù)據(jù)通信線程組成。主線程為文檔—視圖結(jié)構(gòu),實(shí)現(xiàn)參數(shù)查詢與設(shè)置操作、實(shí)時波形顯示與波形存儲等功能;數(shù)據(jù)通信線程與硬件通信,接收波形數(shù)據(jù)。主要功能包括,(1)實(shí)時接收、存儲波形數(shù)據(jù);(2)實(shí)時瀏覽波形;(3)查詢、設(shè)置系統(tǒng)工作參數(shù);(4)查詢GPS信息;(5)查詢、設(shè)置標(biāo)定參數(shù)、啟動停止標(biāo)定;(6)查詢、設(shè)置觸發(fā)參數(shù);(7)設(shè)置數(shù)據(jù)采集器通信參數(shù)。
3 動態(tài)電源管理
    在本設(shè)計中,從微處理器和A/D等芯片的選型到電源系統(tǒng)設(shè)計都充分考慮低功耗設(shè)計,為了進(jìn)一步降低系統(tǒng)功耗,設(shè)計中引入了CPU動態(tài)調(diào)頻技術(shù)。位于系統(tǒng)內(nèi)核的負(fù)載監(jiān)控器Load Monitor負(fù)責(zé)統(tǒng)計核算負(fù)載信息,并根據(jù)系統(tǒng)負(fù)載輕重,驅(qū)動電源管理控制器Power Controller對CUP工作頻率和相關(guān)設(shè)備能效狀態(tài)做出調(diào)整。該模型對應(yīng)用層程序完全透明,但應(yīng)用程序也可通過proc接口顯式調(diào)整系統(tǒng)狀態(tài)。在開發(fā)板的初步實(shí)驗(yàn)中,在測試程序?yàn)閣hile死循環(huán)情況下,測得系統(tǒng)在三個頻率點(diǎn)上的總功率為169 mA×12 V@400 MHz,133 mA×12 V@
200 MHz,112 mA×12 V@99 MHz,系統(tǒng)存在可觀的降耗空間。值得注意的是,動態(tài)調(diào)頻對系統(tǒng)穩(wěn)定性造成很大挑戰(zhàn),調(diào)頻代碼需進(jìn)一步完善。
    本文主要討論了基于低功耗微處理器AT91SAM9G20和可編程邏輯門陣列器件(FPGA)的地震數(shù)據(jù)采集系統(tǒng)的硬件設(shè)計和嵌入式Linux軟件開發(fā)思路。值得一提的是,在系統(tǒng)中引入動態(tài)調(diào)頻技術(shù),為進(jìn)一步降低系統(tǒng)動態(tài)功耗以至總體功耗做了有益探索。本設(shè)計是在對當(dāng)前地震測量技術(shù)發(fā)展研究的基礎(chǔ)上,提出的一種功耗低、體積小、野外使用安裝便捷的實(shí)現(xiàn)方案,對降低數(shù)據(jù)采集成本、延長系統(tǒng)有效工作時間、提高野外工作效率有著積極意義。
參考文獻(xiàn)
[1] 杜春雷.Arm體系結(jié)構(gòu)與編程[M].北京:清華大學(xué)出版社,2003.
[2] CHARLES H.ROTH,Jr.數(shù)字系統(tǒng)設(shè)計與VHDL[M].北京:電子工業(yè)出版社,2008.
[3] GROUT I著.基于FPGA和CPLD的數(shù)字系統(tǒng)設(shè)計[M].北京:電子工業(yè)出版社,2009.
[4] 劉淼.嵌入式系統(tǒng)接口設(shè)計與Linux驅(qū)動程序開發(fā)[M].北京:北京航空航天出版社,2O06.
[5] 宋寶華.Linux設(shè)備驅(qū)動開發(fā)詳解[M].北京:人民郵電出版社,2008.
[6] Jens Ha kov,著.地震觀測技術(shù)與儀器[M].趙仲,趙建和譯.北京:地震出版社,2007.
[7] 張朋.嵌入式系統(tǒng)在工程地震儀的應(yīng)用研究[J].計算機(jī)與數(shù)字工程,2008,36(2):l37-l39.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。