摘 要:主要介紹基于FPGA實現多路模擬信號自適應采集系統的設計。該系統主要包括軟件和硬件兩部分:硬件主要采用FPGA芯片,AD7982-1,ADG406和運放AD824來搭建硬件平臺;軟件包括FPGA程序和事后數據處理程序。系統采用動態8位量化方式克服了固定8位量化對信號采集精度的影響,目前已成功用于產品中。
關鍵詞:FPGA; 模擬信號; 自適應采集; A/D轉換器
中圖分類號:TP368.1文獻標識碼:A
文章編號:1004-373X(2010)08-0027-03
Multi-channel Analog Signal Self-adaptive Acquisition System Based on FPGA
JIANG Xue-dong
(China Airborne Missile Academy,Luoyang 471009,China)
Abstract:Thedesign of the multi-channel analog signal self-adaptive acquisition system based on FPGA is introduced, which is mainly composed of software and hardware. The hardware platform is built with FPGA, AD7892-1, ADG406, AD824 and so on. The software includes FPGA and expost data processing programs. The inflccence of the 8 bit fixed quantification on the signal acquisition accuracy was overcome by the system with 8 bit dynamic quantification. The system has been applied in the relative products successfully.
Keywords:FPGA; analog signal; self-adaptive acquisition; A/D convertor
0 引 言
目前,在PCM/FM遙測體系中模擬信號采集普遍采用8位量化,全部模擬信號均歸一化到0~5 V范圍內,隨著需要采集的模擬信號的類型多樣化,勢必增加信號調理電路的多樣性,不利于系統的簡化和模塊化。在量化位數一定的系統中,被衰減處理的信號中實際量化誤差等于N倍(N是信號被衰減的倍數)的最小量化誤差,因此合理的信號調理電路和A/D取值是保證量化精度的關鍵。本文提供的方式有效地解決了這個問題,既簡化了前端信號調理電路的復雜度,又充分利用了A/D轉換器的輸入電壓動態范圍和量化位數優勢,實現了對多路模擬信號的自適應采集,對其他信號采集系統也具有一定的借鑒意義。
1 系統設計[1-3]
該系統主要由信號調理電路、采集電路和時序控制等幾部分組成。被測模擬信號經過信號調理電路后,經多路選擇器的快速切換,按需求依次送入A/D轉換器進行采樣,采樣后的數據送入FPGA中處理,系統框圖如圖1所示。
系統設計的主要指標:模擬信號通道數為46路;系統采樣率大于300 Kb/s;量化位數為8位;頻率響應范圍為DC~1 kHz;通道采樣率為100 Hz,200 Hz,400 Hz,500 Hz,800 Hz,1 kHz,2 kHz,4 kHz可選;A/D轉換器允許輸入信號的最大幅度為±10 V。
圖1 多路模擬信號自適應采集系統框圖
2 系統各部分功能及實現
2.1 信號調理電路[4]
信號調理電路主要完成被測信號的阻抗匹配和電壓變換,設計時信號調理電路均采用差分輸入電路形式。針對不同類型的信號,通過調整電阻阻值即可實現信號的衰減、放大或者阻抗匹配,有利于電路形式的模塊化和標準化。信號調節電路如圖2所示。
整個信號調理電路采用±12 V供電,根據信號類型將全部模擬信號調理到合適的范圍內,以便充分利用A/D的輸入動態范圍來實現自適應采集。
圖2 信號調節電路形式
2.2 采集電路[5-6]
采集電路主要包括多路選擇器和A/D轉換器等,多路選擇器采用ADG406,通過級聯可以形成46路模擬信號通道,采用±12 V供電,保證調理后的信號不失真通過,12根地址線用來控制模擬信號的切換;A/D轉換器采用AD7892-1,其具有±10 V的輸入電壓動態范圍和12位的量化能力,信號輸入范圍設置為±10 V,控制線用來控制A/D轉換器的工作狀態,并將轉換后的12位數據全部接入FPGA中進行處理。
2.3 時序控制[7-8]
時序控制通過FPGA程序來實現,主要完成多路選擇器的切換,A/D轉換器的控制和自適應采集邏輯等功能。對于多路選擇器的切換和A/D轉換器的控制邏輯,只要注意多路選擇器的開關穩定時間和A/D轉換器的采樣時刻即可完成數據采集。自適應采集就是根據已知模擬信號的類型自動選擇A/D的轉換器輸出碼位來實現的。為了便于對后文的理解,表1給出AD7892-1輸入/輸出對應碼表和處理后的碼表。
表1 輸入/輸出對應碼表
模擬輸入 /V原始數字碼表符號位取反后的碼表
10011111111111111111111111
5001111111111101111111111
0000000000000100000000000
-0111111111111011111111111
-5101111111111001111111111
-10100000000000000000000000
前面信號調理電路根據模擬信號的類型把信號分別調理到0~5 V,-5~-0 V,-5~+5 V,0~+10 V,-10~-0 V,-10~+10 V等范圍內,結合表1的內容即可實現對模擬信號的自適應采集,保證信號的采集精度。數據自動轉換模塊的FPGA程序示例如下:
ENTITY DATACONV IS
PORT
( CLK: IN STD_LOGIC; --系統時鐘
ADdata: IN STD_LOGIC_VECTOR (11 DOWNTO 0); --A/D數據
ADDR: IN STD_LOGIC_VECTOR (8 DOWNTO 0);--多路選擇器地址
OUTdata : OUT STD_LOGIC_VECTOR (7 DOWNTO 0)--自適應處理后數據
);
END DATACONV;
ARCHITECTURE A OF DATACONV IS
SIGNAL temp: STD_LOGIC_VECTOR (11 DOWNTO 0);--中間變量
BEGIN
PROCESS(CLK,ADdata,temp,ADDR)
BEGIN
temp<=ADdata;--AD數據賦予中間變量
IF CLK′event AND CLK=′0′ THEN
IF(ADDR=1 ) THEN--假設此地址模擬信號范圍0~5 V
IF temp(11)=′0′ THEN --判斷符號位為′0′,′0′表示為負數
OUTdata<=\"00000000\";--強制輸出0 V
ELSIF temp(10)=′1′ THEN --判斷次高位為′1′,′1′表示幅度超過5 V
OUTdata<=\"11111111\" --強制輸出5 V
ELSE
OUTdata<=temp(9 downto 2); --取舍棄符號位和次高位的高8位
END IF;
ELSIF (ADDR=2 ) THEN --假設此地址模擬信號范圍-5~-0 V
IF temp(11)=′1′ THEN --判斷符號位為′1′,′1′表示為正數
OUTdata<=\"11111111\"; --強制輸出-0 V
ELSIF temp(10)=′0′ THEN--判斷次高位為′0′,′0′表示幅度低于-5 V
OUTdata<=\"00000000\" --強制輸出5 V
ELSE
OUTdata<=temp(9 downto 2); --取舍棄符號位和次高位的高8位
END IF;
ELSIF (ADDR=3 ) THEN --假設此地址模擬信號范圍-5~+5 V
IF temp(11)=′1′ AND temp(10)=′1′ THEN--判斷符號位為′1′且次高位為′1′,表示幅度超過5 V
OUTdata<=\"11111111\"; --強制輸出5 V
ELSIF temp(11)=′0′ AND temp(10)=′0′ THEN-判斷符號位為′1′且次高位為′1′,表示幅度低于-5 V
OUTdata<=\"00000000\" --強制輸出-5 V
ELSE
OUTdata<=temp(11)temp(9 downto 3); --取符號位+舍棄次高位的高7位
END IF;
ELSIF (ADDR=4 ) THEN --假設此地址模擬信號范圍0~10 V
IF temp(11)=′0′ THEN --判斷符號位為′0′,′0′表示為負數
OUTdata<=\"00000000\"; --強制輸出0 V
ELSE
OUTdata<=temp(10 downto 3);--取舍棄符號位的高8位
END IF;
ELSIF (ADDR=5 ) THEN --假設此地址模擬信號范圍-10~0 V
IF temp(11)=′1′ THEN --判斷符號位為′1′,′1′表示為正數
OUTdata<=\"11111111\"; --強制輸出0 V
ELSE
OUTdata<=temp(9 downto 2); --取舍棄符號位的高8位
END IF;
ELSE
OUTdata<=temp(11 downto 4); --其余地址模擬信號范圍-10~+10 V,直接取高8位
END IF;
END IF;
END PROCESS;
END A;
通過測試驗證,該法是可行的。在不改變任何硬件電路的情況下,通過FPGA程序可有效實現模擬信號的動態量化,確保信號的量化精度。通過數據處理軟件即可恢復原始信號,如圖3所示。
圖3 數據處理軟件恢復后數據
3 結 語
設計的基于FPGA的多路模擬信號自適應采集系統,在有限的量化位數限制下,充分利用信號調理電路、A/D轉換器的輸入電壓動態范圍和12位的位寬,在相同的量化位數下提高了大部分模擬信號的采樣精度,具有一定的參考價值。
參考文獻
[1]鄭儉鋒. 多路高速信號并行采樣及實時存儲解決方案[J]. 電子設計應用, 2007(3): 98-101.
[2]許錦峰, 陳炳泉. 雙通道邏輯控制高速實時數據采集系統的設計[J]. 電子技術應用, 2007(11): 77-79.
[3]趙紅梅, 米啟超. 基于DSP和CPLD的信號采集與編碼系統設計[J]. 礦山機械, 2007(6): 43-45.
[4]吳居娟, 齊娟. 基于可編程增益放大器的多路高速數據采集系統設計[J]. 煤礦現代化, 2007(5): 54-55.
[5]張志剛. 常用A/D、D/A器件手冊\\. 北京: 電子工業出版社, 2008.
[6]吳巍, 李相平, 段魯生, 等. 一種基于A/D和DSP的高速數據采集技術[J]. 單片機與嵌入式系統應用, 2007(3): 26-28.
[7]李洪偉, 袁斯華. 基于QuartusⅡ的CPLD/FPGA設計[M]. 北京: 電子工業出版社, 2006.
[8]侯伯亨, 顧新. VHDL硬件描述語言與數字邏輯電路設計[M]. 西安: 西安電子科技大學出版社, 2006.
[9]皮代軍, 張海勇, 葉顯陽. 基于FPGA的高速實時數據采集系統設計[J]. 現代電子技術, 2009, 32(6): 12-14.
[10]孫炎輝, 丁紀峰. 基于FPGA的數據采集控制模塊設計\\. 現代電子技術, 2009, 32(22): 189-191.
[11]孫德瑋, 李石亮. 基于FPGA和DSP的高速數據采集系統的設計\\. 現代電子技術, 2008, 31(21): 174-177.