王增剛,常蕾
(山西華澳商貿(mào)職業(yè)學(xué)院,山西晉中,030600)
隨著軍事、工業(yè)、農(nóng)業(yè)的不斷發(fā)展,各種被檢測的數(shù)據(jù)對象越來越多,并且對系統(tǒng)采集數(shù)據(jù)的精度與速度都提出了更高的要求,尤其對多路信號的采集系統(tǒng)的設(shè)計(jì)。傳統(tǒng)的多通道模擬量數(shù)據(jù)采集存儲的控制核心一般采用單片機(jī)、DSP,在分析和比較傳統(tǒng)的數(shù)據(jù)采集模型后,系統(tǒng)采用FPGA作為核心控制器件[1]。
同時(shí)對幅度0V~5V的32路模擬量信號進(jìn)行采集、編幀和存儲,采樣字長16位,單通道采樣率不超過25KHz存儲容量不小于1Gbyte。

圖1 系統(tǒng)結(jié)構(gòu)圖
系統(tǒng)實(shí)現(xiàn)方案如下圖1所示, 32路輸入模擬信號,16路為一組,輸出的信號進(jìn)過調(diào)理輸入給AD7667,F(xiàn)PGA處理AD7667輸出的數(shù)據(jù),并將采集得到的數(shù)據(jù)存儲至flash,同時(shí)也將數(shù)據(jù)上傳至上位機(jī)實(shí)時(shí)監(jiān)測。
信號調(diào)理電路如圖2所示,為了使整個(gè)電路與外界隔離,本設(shè)計(jì)中使用了信號電壓跟隨器[2]。本系統(tǒng)被采集信號的幅值是0~5V, AD7667輸入范圍是0~2.5V,設(shè)計(jì)用了一對10kΩ的高精密電阻對輸入模擬信號進(jìn)行分壓。

圖2 AD7667驅(qū)動電路
AD7667的驅(qū)動放大器需滿足以下條件:
(1)運(yùn)放輸出穩(wěn)定數(shù)據(jù)采集所需時(shí)間必須小于AD7667的采樣時(shí)間,保證轉(zhuǎn)換精確。
(2)選用低噪聲的運(yùn)放,保證AD7667的信噪比。
信噪比降低程度公式:

式中, N為運(yùn)放的噪聲增益,本系統(tǒng) N為1;eN為運(yùn)放的等效電壓噪聲,f-3dB為濾波器的截止頻率;
電路設(shè)計(jì)使用的AD8021的運(yùn)放,具有110V/μs的壓擺率,噪聲為2.0nV/,當(dāng)對其輸入1V的階躍信號時(shí),輸出穩(wěn)定所需的時(shí)間為22ns,完全滿足本設(shè)計(jì)穩(wěn)定時(shí)間要求。
信號在輸入AD7667前,設(shè)計(jì)了一個(gè)RC電路,目的是消除短時(shí)脈沖干擾,經(jīng)過分析計(jì)算,為了確保采樣階段結(jié)束時(shí)采樣電容充電至所需精度范圍內(nèi),最終R取15Ω,C取2.7nF。
在本設(shè)計(jì)中,傳輸?shù)男盘栍蠥D7667的輸出數(shù)據(jù)、flash與DS92LV18的控制時(shí)鐘,為此本設(shè)計(jì)使用FPGA內(nèi)部的雙口RAM,并組成兩個(gè)異步FIFO。內(nèi)部FIFO任何時(shí)候不能被寫滿,否則數(shù)據(jù)將無法存儲。32路的信號采樣率都是50kHz的模擬信號,字長均為16bit,在軟件編程中我們把采集得到數(shù)據(jù)再加上兩字節(jié)的幀標(biāo)志,所以系統(tǒng)傳輸FPGA內(nèi)部為:(32×2+2)×25k=1.6MB, 由此可以計(jì)算出所以傳輸給雙口RAM數(shù)據(jù)量為:1.6M/s × 200μs=330B ,由于本設(shè)計(jì)兩個(gè)異步FIFO寬度為8b,深度為2048b,軟件編程時(shí)間遠(yuǎn)大與數(shù)據(jù)存儲時(shí)間。經(jīng)過實(shí)際測試,設(shè)計(jì)的兩個(gè)異步FIFO完全能夠存儲AD7667采集輸出的數(shù)據(jù)。
系統(tǒng)編程軟件使用的Xilinx ISE7.1,程序流程圖如圖3,主要包括數(shù)據(jù)采集控制模塊、、flash讀寫控制模塊、下發(fā)命令識別與數(shù)據(jù)上傳模塊。
本系統(tǒng)使用了一種稱為中值數(shù)絕對偏差發(fā)的濾波算法,具體流程就是采用一個(gè)移動窗口X0(G),X1(G),……,XN-1(G),利用前N個(gè)數(shù)據(jù)來確定下一個(gè)傳輸個(gè)數(shù)據(jù)的有效性。具體算法[3]為:
(1)先計(jì)算窗口序列X0(G),X1(G),……,XN-1(G)的中值K;
(2)計(jì)算序列|X0-K|,|X1(k)-K|,……,|Xm-1(k)-K|的中值d,令W=1.4826*d;