陸 鵬,王 晶,臧 越
(中海油田服務(wù)股份有限公司,天津 300450)
在井下儀器項目開發(fā)中,地層響應(yīng)信號較微弱(10~100 nA 級)且環(huán)境噪聲較大,加上對高測速的需求,因此在進(jìn)行信號采樣時需要較高的精度和速度。此外,儀器使用了多頻率的發(fā)射信號和多個接收電極,因而需要使用多通道的采樣電路進(jìn)行信號采集。
為實現(xiàn)高速高精度多通道采樣,需要具有高采樣率和高位數(shù)的ADC 器件以及能夠?qū)崿F(xiàn)高速采樣的多通道接口電路。因FPGA 器件具有高速、可重構(gòu)性、管腳豐富等特點,因此設(shè)計中使用FPGA 來實現(xiàn)ADC 的接口電路。文中基于ADI 公司的ADC——AD7674 進(jìn)行FPGA 并行接口設(shè)計,最終實現(xiàn)多通道的高速高精度數(shù)據(jù)采集。
AD7674 是ADI 公司生產(chǎn)的18 位分辨率、最大非線性積分誤差2.5LSB、最高800 kSps 采樣率的單通道全差分輸入ADC[1]。它采用逐次逼近型(SAR)結(jié)構(gòu),具有低功耗、高精度、無延時等特點。AD7674 有WARP、NORMAL、IMPULSE 3 種轉(zhuǎn)換模式,在WARP模式下采樣率最高可達(dá)800 kSps。
數(shù)據(jù)通信接口有并口模式(8 位、16 位、18 位總線)和SPI 串口模式。采用SPI 串口通信的設(shè)計如文獻(xiàn)[2-3]中所討論,這種方式具有占用管較少、連接簡單等優(yōu)點,但傳輸速度受限于串行時鐘SCLK,如當(dāng)傳輸18 位串行數(shù)據(jù)時需要18 個SCLK 時鐘;而采用并口通信時,18 位采樣數(shù)據(jù)同時出現(xiàn)在并口總線,一個時鐘即可讀取,速度上有明顯優(yōu)勢,而缺點是占用管腳較多、連接較復(fù)雜。
在測量精度方面,當(dāng)參考電壓為2.5 V時,AD7674的最小量化電平為9.5 μV,誤差為±23.8 μV,遠(yuǎn)低于目標(biāo)信號最小幅值,完全滿足測量要求。
為實現(xiàn)高速采樣,文中采用了WARP 轉(zhuǎn)換模式及18 位并口數(shù)據(jù)通信模式。
AD7674 的內(nèi)部結(jié)構(gòu)和轉(zhuǎn)換原理在文獻(xiàn)[1-2]中均有介紹,這里不再贅述。為實現(xiàn)AD7674 的FPGA接口,重點介紹其接口工作原理。設(shè)計中將AD7674的接口分為模數(shù)轉(zhuǎn)換控制和數(shù)據(jù)讀取控制兩個部分進(jìn)行分析[4]。
圖1 模數(shù)轉(zhuǎn)換時序
圖2 從機讀并口時序(轉(zhuǎn)換結(jié)束后讀數(shù)據(jù))
AD7674 使用WARP、IMPULSE 兩根信號線來設(shè)置轉(zhuǎn)換模式,當(dāng)使用WARP 模式時,WARP=1、IMPLUSE=0。使用MODE0、MODE1、D0/OB/、PD等信號線來設(shè)置通信接口模式、數(shù)據(jù)輸出格式、低功耗模式等。當(dāng)使用18 位并口時,MODE0=0、MODE1=0,D0/OB/在此模式下為并口總線的Bit0位,數(shù)據(jù)輸出格式為標(biāo)準(zhǔn)二進(jìn)制格式。這些信號可以通過在AD7674引腳設(shè)置固定電平的方式來配置,也可以將其與FPGA 的引腳相連,通過FPGA 來配置,這樣的優(yōu)點是能夠根據(jù)需要靈活更改ADC 配置。
由于AD7674 為單通道輸入,因此若要實現(xiàn)多通道的信號采集,則需要多片AD7674。ADC 的接口設(shè)計就是對其控制信號的設(shè)計,根據(jù)其工作時序在FPGA 上實現(xiàn)相應(yīng)的信號及邏輯。多通道接口的設(shè)計難點在于如何實現(xiàn)在多個ADC 情況下進(jìn)行有序高效的數(shù)據(jù)讀取[5]。文中根據(jù)AD7674 的特性,采用單獨使能信號輪詢ADC 的方法,進(jìn)行多ADC 的數(shù)據(jù)讀取[6-7,14]。
以兩ADC 并行接口設(shè)計為例,AD7674 的控制信號按照圖3 的方式與FPGA 進(jìn)行連接。
圖3 兩AD7674與FPGA的信號連接
FPGA 設(shè)計實現(xiàn)根據(jù)AD7674 的接口原理亦分為模數(shù)轉(zhuǎn)換和數(shù)據(jù)讀取兩部分進(jìn)行。文中程序代碼使用VHDL 語言[10]。
結(jié)合圖3,SYSCLOCK(系統(tǒng)時鐘)、Din(18 位并行總線)以及ADC_Busy 信號為FPGA 輸入信號,其他信號均為FPGA 輸出信號,模塊的端口代碼如下:
數(shù)據(jù)讀取部分根據(jù)AD7674 的并口時序,當(dāng)檢測到BUSY 信號為低時,將信號置低,開始準(zhǔn)備進(jìn)行數(shù)據(jù)讀取,接著按需要將指定ADC 的信號置低。在信號變低的t12時間后,ADC 會將當(dāng)前的轉(zhuǎn)換結(jié)果輸出到并口總線上,此時FPGA 可以進(jìn)行數(shù)據(jù)的讀取。待完成此ADC 的數(shù)據(jù)讀取后,置高該信號,同時使能下一個ADC 的信號,進(jìn)行下一個ADC 的數(shù)據(jù)讀取。如此循環(huán),實現(xiàn)ADC采樣數(shù)據(jù)的讀取。
以上邏輯采用狀態(tài)機的方式實現(xiàn),狀態(tài)轉(zhuǎn)移圖如 圖4 所 示,分 為ADC_init、ADC_start、ADC_wait、ADC_read等狀態(tài)[13]。數(shù)據(jù)讀取狀態(tài)機實現(xiàn)代碼如下:
圖4 數(shù)據(jù)讀取狀態(tài)轉(zhuǎn)移圖
假設(shè)被測信號頻率為100 kHz,后期處理需要進(jìn)行8 點FFT 計算,則采樣時鐘需要800 kHz,AD7674最大采樣率為800 kSps,因此能夠滿足要求。當(dāng)系統(tǒng)時鐘為32 MHz 時,進(jìn)行40 分頻可得到800 kHz 的采樣時鐘。
在仿真testbench 中,對輸入型信號進(jìn)行如下配置:SYSCLOCK 為32 MHz;Din 采樣輸入值設(shè)定為模擬值;ADC_Busy 信號在下降沿t3時間(35 ns)后產(chǎn)生;脈沖寬度為t4(1 μs)。
使用testbench 在ModelSim 仿真軟件中對FPGA接口程序進(jìn)行仿真[15-16],仿真結(jié)果如圖5、圖6 所示。
圖5 總體仿真波形
圖6 起始部分仿真波形
分析仿真波形可知,SYSCLOCK 頻率為32 MHz,采樣時鐘輸出為800 kHz(占空比為50%)。ADC_Busy 信號在下降沿后35 ns 產(chǎn)生上升沿,RD 讀使能信號則在ADC_Busy 下降沿120 ns 后置低,此時開始準(zhǔn)備讀取AD7674 并口數(shù)據(jù)。RD 置低240 ns 后,開始置低CS0,使能ADC0 數(shù)據(jù)輸出,此時ADC0 的18 位并行數(shù)據(jù)出現(xiàn)在總線上,在請求到數(shù)據(jù)有效45 ns(t12)后,讀取數(shù)據(jù)到FPGA 內(nèi)部的18位Buffer,完成采樣數(shù)據(jù)存儲。CS0 持續(xù)2 μs 后,置低CS1,開始使能ADC1,按同樣方法處理ADC1 的并行數(shù)據(jù)。上述工作均在的一個時鐘周期內(nèi)完成,而且數(shù)據(jù)讀取處理的時間裕度較大,能夠保證程序運行的穩(wěn)定性。
以上結(jié)果表明,程序?qū)崿F(xiàn)了目標(biāo)邏輯,符合AD7674的工作時序要求,能夠有效穩(wěn)定地讀取多ADC 的并口數(shù)據(jù)。將程序綜合編譯并下載到實際的電路中進(jìn)行測試,亦能得到正確的結(jié)果。
文中首先介紹了AD7674 的特點和接口工作原理,然后詳細(xì)分析了其接口工作時序,通過采用單獨使能信號輪詢ADC 的方法,實現(xiàn)多通道的并口數(shù)據(jù)讀取。文中給出了基于該思路下兩ADC 并行轉(zhuǎn)換接口的FPGA 代碼,并給出了仿真結(jié)果。
設(shè)計中需要注意的是,F(xiàn)PGA 輸出信號的時間要求應(yīng)符合ADC 的工作時序,否則會出現(xiàn)數(shù)據(jù)讀取異常錯誤。另外,如果將文中方法應(yīng)用在其他ADC,則需注意其信號是否對轉(zhuǎn)換有影響,當(dāng)禁止時,ADC 會停止轉(zhuǎn)換,則文中方法不適用。
文中介紹的FPGA 接口設(shè)計方法可應(yīng)用到逐次逼近型ADC 的采集驅(qū)動中,適用于多通道高速高精度的信號采集等場景。