ADS8344和FPGA的高精度數(shù)據(jù)采集前端
數(shù)據(jù)采集在工業(yè)測(cè)試系統(tǒng)中是一個(gè)很重要的環(huán)節(jié),其精確性和可靠性是至關(guān)重要的。本文闡述的數(shù)據(jù)采集系統(tǒng)精度高達(dá)16位,能夠?qū)?個(gè)外部模擬通道進(jìn)行A/D采樣,最大模擬輸入信號(hào)范圍達(dá)到-15~+15V。該系統(tǒng)具有限幅保護(hù)功能,程序編寫(xiě)簡(jiǎn)便,能夠?qū)崿F(xiàn)對(duì)遠(yuǎn)端數(shù)據(jù)的采集和傳輸。
本文引用地址:http://butianyuan.cn/article/78875.htm1 系統(tǒng)硬件設(shè)計(jì)
數(shù)據(jù)采集系統(tǒng)框圖如圖1所示。
圖中,A/D轉(zhuǎn)換器采用了TI公司的16位逐次逼近型ADS8344;FPGA主要用于控制ADC的啟動(dòng)、停止和查詢ADC狀態(tài)等,同時(shí)對(duì)數(shù)據(jù)進(jìn)行高速數(shù)據(jù)緩沖、異步數(shù)據(jù)編解碼、無(wú)線信道編解碼等數(shù)據(jù)處理。
1.1 主要芯片ADS8344
ADS8344是一款高性能、低功耗的ADC,采用2.7~5V單電源供電,最大采樣頻率為100 kHz,信噪比達(dá)84dB,自帶采樣/保持電路,包含8個(gè)單端模擬輸入通道(CH0~CH7),也可合成為4個(gè)差分輸入。參考電壓VRFF的范圍為500mV~VCC,相應(yīng)的每個(gè)模擬通道的輸入為0V~VREF,DS8344是通過(guò)三線SPI接口與FPGA相互通信的,數(shù)據(jù)從DIN引腳輸入到8位只寫(xiě)控制寄存器。當(dāng)FPGA讀取完ADC上次轉(zhuǎn)換
結(jié)果時(shí),下一個(gè)轉(zhuǎn)換通道的控制字節(jié)就寫(xiě)到了DIN引腳。一個(gè)完整的控制字節(jié)需要8個(gè)DCLK時(shí)鐘。寫(xiě)完控制字節(jié)的同時(shí),模/數(shù)轉(zhuǎn)換結(jié)束,模/數(shù)轉(zhuǎn)換狀態(tài)輸出引腳BUSY產(chǎn)生一下降沿,數(shù)據(jù)輸出有效,F(xiàn)PGA開(kāi)始接收由DCUT輸出的轉(zhuǎn)換結(jié)果。16位串行數(shù)據(jù)需要16個(gè)DCLK時(shí)鐘,在接收串行數(shù)據(jù)的LSB位時(shí),下一個(gè)通道的控制字開(kāi)始輸入到A/D芯片。ADS8344完成一次完整的數(shù)據(jù)采樣保持、轉(zhuǎn)換和輸出共需要25個(gè)DCLK時(shí)鐘。ADS8344串行接口時(shí)序如圖2所示。
1.2 信號(hào)調(diào)理電路
數(shù)據(jù)采集前端的調(diào)理電路如圖3所示。2個(gè)運(yùn)放選用的是TI公司的精密儀表放大器OPA277。由于輸入模擬電壓信號(hào)為雙極性,范圍為一15~+5 V,而ADX8344模擬輸入通道為O V~VREF(本系統(tǒng)是+5 V),所以必須對(duì)輸入信號(hào)進(jìn)行單極性轉(zhuǎn)換。
其傳遞函數(shù)為:
式中:VOUT為轉(zhuǎn)換后的單極性電壓信號(hào);VREF由電壓基準(zhǔn)源提供,在圖中是+2.5V;VIN為輸入的一15~+15 V電壓信號(hào)。當(dāng)R3=6R1、R4=6R2時(shí),傳遞函數(shù)可化簡(jiǎn)為:
可見(jiàn),傳遞函數(shù)是線性函數(shù)。只要正確選擇精確的電阻值,一15~+15 V電壓信號(hào)可線性轉(zhuǎn)換為O~+5V,從而保證了系統(tǒng)的精度。
1.3 無(wú)線通道
本系統(tǒng)是按用戶的要求設(shè)計(jì)開(kāi)發(fā)的,其中,無(wú)線通道是由用戶提供的。本系統(tǒng)采用的無(wú)線通道是點(diǎn)對(duì)點(diǎn)傳輸,傳輸距離最遠(yuǎn)達(dá)40 km,傳輸速率最高達(dá)11 Mbps,對(duì)標(biāo)準(zhǔn)異步串口數(shù)據(jù)是透明傳輸。A/D電路輸出的數(shù)據(jù)經(jīng)FPGA高速數(shù)據(jù)緩沖、異步數(shù)據(jù)編碼、無(wú)線信道編碼等數(shù)據(jù)處理后,送到無(wú)線通道進(jìn)行無(wú)線傳輸。遠(yuǎn)端的無(wú)線接收機(jī)接收到數(shù)據(jù)后送到FPGA進(jìn)行無(wú)線信道解碼、異步數(shù)據(jù)解碼等處理,恢復(fù)A/D采樣數(shù)據(jù),然后或者送到D/A電路進(jìn)行模擬量輸出,或者重新進(jìn)行異步數(shù)據(jù)編碼送到PC機(jī),由PC機(jī)對(duì)數(shù)據(jù)做進(jìn)一步的分析處理。
2 軟件設(shè)計(jì)
本系統(tǒng)的軟件設(shè)計(jì)包括了FPGA硬件描述語(yǔ)言編程和PC機(jī)應(yīng)用程序。
2.1 FPGA編程
FPGA編程使用VHDL語(yǔ)言,主要包括對(duì)ADS8344的數(shù)據(jù)讀寫(xiě)、異步數(shù)據(jù)編解碼等。使用FPGA很容易實(shí)現(xiàn)SPI接口間的通信,對(duì)ADS8344的數(shù)據(jù)讀寫(xiě)僅用兩個(gè)進(jìn)程就可以實(shí)現(xiàn)。部分程序如下:
(1)寫(xiě)數(shù)據(jù)進(jìn)程
程序中的8位控制字節(jié)是在另一進(jìn)程中根據(jù)用戶要求進(jìn)行配置的??刂萍拇嫫鞲袷饺缦拢?/p>
控制寄存器各位的功能說(shuō)明如下:
S——控制字節(jié)開(kāi)始位。為高時(shí),才表示輸入的字節(jié)有效。
A2~AO——模擬輸入通道選擇位。
SGL/DIF——模擬通道輸入方式選擇位。為高時(shí),為單端輸入i為低時(shí),為雙端差分輸入。
PDl~DO——功率管理選擇位。
(2)讀數(shù)據(jù)進(jìn)程
ADS8344是多通道A/D轉(zhuǎn)換芯片,所以數(shù)據(jù)要添加通道地址碼。FPGA讀取了16位數(shù)據(jù)后,進(jìn)行高速數(shù)據(jù)緩沖處理,使用速率與低速異步串口速率匹配。由于讀取的數(shù)據(jù)是16位,而異步數(shù)據(jù)是10位(1位起始位,8位數(shù)據(jù)位,l位停止位),因此要對(duì)數(shù)據(jù)重新編碼。用FPGA實(shí)現(xiàn)異步數(shù)據(jù)格式非常簡(jiǎn)單。下面是異步數(shù)據(jù)編碼的部分程序:
在數(shù)據(jù)編碼進(jìn)程中,pdatam(15 downto 0)是A/D轉(zhuǎn)換出來(lái)的16位數(shù)據(jù),分為4個(gè)異步數(shù)據(jù)幀。每幀的低4位是數(shù)據(jù)位,高4位是編碼位,數(shù)據(jù)編碼格式如表l所列。
上位PC機(jī)以指定速率接收到如表l格式的4個(gè)異步數(shù)據(jù)幀后,去掉起始位、停止位,地址位和空閑位,按地址位順序重新排列數(shù)據(jù),就得到D15~D0的16位A/D量化數(shù)據(jù),PC機(jī)對(duì)數(shù)據(jù)可做進(jìn)一步的處理。
2.2 PC機(jī)編程
PC機(jī)端的應(yīng)用程序是在NI公司的LahView環(huán)境下開(kāi)發(fā)的,主要用于對(duì)采集到的數(shù)據(jù)進(jìn)行解封裝,顯示,控制整個(gè)數(shù)據(jù)采集系統(tǒng)的進(jìn)行、停止,設(shè)置一些相應(yīng)的參數(shù),以及進(jìn)行最后的數(shù)據(jù)分析處理。
3 結(jié)論
該系統(tǒng)綜合運(yùn)用了FPGA硬件描述語(yǔ)言改變電路結(jié)構(gòu)、算法技術(shù)和無(wú)線點(diǎn)對(duì)點(diǎn)傳輸技術(shù),將兩者相結(jié)合應(yīng)用在遠(yuǎn)程數(shù)據(jù)采集中。該系統(tǒng)用戶界面友好,操作簡(jiǎn)便,精度、速度以及系統(tǒng)可靠性完全滿足要求。該系統(tǒng)應(yīng)用于某研究所試驗(yàn)中的飛艇與地面間的數(shù)據(jù)采集傳輸。實(shí)踐表明,該系統(tǒng)適合用在要求采集通道多、精度高,但速率要求不高的數(shù)據(jù)采集中。
評(píng)論