文獻標識碼: A
文章編號: 0258-7998(2011)01-0038-04
近年來,隨著可編程邏輯器件(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.