《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于ARM和FPGA的便攜人工地震數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)
基于ARM和FPGA的便攜人工地震數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)
來(lái)源:電子技術(shù)應(yīng)用2011年第1期
李從慶1,2,王夫運(yùn)2,薛 兵3
(1.中國(guó)地震局地球物理研究所,北京100081;2.中國(guó)地震局地球物理勘探中心,河南 鄭州4500
摘要: 介紹了一種基于Atmel AT91SAM9G20(ARM926EJ-S核)低功耗微處理器和Actel AGL600(低功耗Flash-based FPGA)并融合嵌入式Linux技術(shù)的便攜式人工地震數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)原理和實(shí)現(xiàn)方法。該設(shè)計(jì)引入動(dòng)態(tài)電源管理技術(shù),根據(jù)系統(tǒng)負(fù)載自動(dòng)進(jìn)行微處理器工作頻率調(diào)節(jié)和外圍I/O設(shè)備的工作模式調(diào)整。本數(shù)據(jù)采集系統(tǒng)功耗低、體積小,野外使用安裝便捷,對(duì)降低數(shù)據(jù)采集成本、延長(zhǎng)系統(tǒng)有效工作時(shí)間、提高野外工作效率有著積極意義。
中圖分類(lèi)號(hào): TP29
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 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


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

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

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

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