《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 基于ARM和FPGA的便攜人工地震數據采集系統(tǒng)設計
基于ARM和FPGA的便攜人工地震數據采集系統(tǒng)設計
來源:電子技術應用2011年第1期
李從慶1,2,王夫運2,薛 兵3
(1.中國地震局地球物理研究所,北京100081;2.中國地震局地球物理勘探中心,河南 鄭州4500
摘要: 介紹了一種基于Atmel AT91SAM9G20(ARM926EJ-S核)低功耗微處理器和Actel AGL600(低功耗Flash-based FPGA)并融合嵌入式Linux技術的便攜式人工地震數據采集系統(tǒng)的設計原理和實現方法。該設計引入動態(tài)電源管理技術,根據系統(tǒng)負載自動進行微處理器工作頻率調節(jié)和外圍I/O設備的工作模式調整。本數據采集系統(tǒng)功耗低、體積小,野外使用安裝便捷,對降低數據采集成本、延長系統(tǒng)有效工作時間、提高野外工作效率有著積極意義。
中圖分類號: TP29
文獻標識碼: 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ā)展,可編程邏輯器件在數據采集、邏輯接口設計、電平接口轉換和高性能數字信號處理等領域取得越來越廣泛的應用。CPLD/FPGAD不僅可以解決電子系統(tǒng)小型化、低功耗、高可靠性等問題,而且開發(fā)周期短、投入少,同時不斷下降的芯片價格極大推動了CPLD/FPGA器件在廣泛應用領域的使用。本文介紹一種ARM微處理器+FPGA的硬件設計,融合嵌入式Linux技術,實現一種小型化、移動性強、網絡耦合度高的便攜式人工地震數據采集系統(tǒng)。該系統(tǒng)以滿足人工地震觀測的需要、減小儀器尺寸和重量、降低功耗、降低野外工作強度和提高數據采集工作效率為目標。
1 系統(tǒng)硬件設計
    采集系統(tǒng)由CPU核心板、A/D數據采集板和電源板組成,系統(tǒng)原理如圖1所示。CPU板以Atmel  AT91SAM9G20微處理器為核心,通過總線和GPIO分別與64 MB SDRAM、16 MB Norflas和FPGA A3P250接口。板上大容量CF卡安裝有FAT文件系統(tǒng),用于地震波形數據的本地存儲。網絡接口提供遠程登錄、數據傳輸及系統(tǒng)控制功能,包括實時數據流傳輸。LCD屏顯示系統(tǒng)工作參數,如溫度、經緯度、高程、系統(tǒng)網絡IP地址等信息。串口用于輸出調試信息,也被SAM-BA軟件用來下載燒寫引導加載程序U-boot和嵌入式Linux操作系統(tǒng)內核映像文件。A/D采集板上有三路模數轉換數據采集通道,標定信號發(fā)生器和檢波器控制信號調理電路。高效的電源轉換電路是實現系統(tǒng)低功耗的基礎。電源板主要提供CPU等數字電路+3.3 V/+1.8 V電源,地震計反饋電路供電±12 V、±4 V,參考電壓±2.5 V,標定電路和檢波器控制電路供電。GPS系統(tǒng)提供時間服務和地理位置信息。

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

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

此內容為AET網站原創(chuàng),未經授權禁止轉載。