劉建梁, 季 偉
(1.天津訊聯(lián)科技有限公司,天津 300308;2.天津航天中為數(shù)據(jù)系統(tǒng)科技有限公司,天津 300458)
遙測是監(jiān)視航天器工作狀態(tài)的重要途徑,遙測系統(tǒng)的作用是獲取遙測數(shù)據(jù)。遙測數(shù)據(jù)以工程遙測參數(shù)為主,主要有航天器內(nèi)部各部分溫度、電壓、電流、振動、沖擊以及噪聲等[1]。本項(xiàng)目彈載遙測系統(tǒng)要求采集溫度、壓力等10路緩變信號(采樣率40 Hz,-5 V~+5 V),3路振動信號(采樣率5.12 KHz,-5 V~+5 V)和3 路沖擊信號(采樣率20.48 KHz,-5 V~+5 V)。采樣芯片選用TI公司的16通道、16位分辨率、1 MSPS的A/D 轉(zhuǎn)換器ADS8686S,F(xiàn)PGA 芯片選用Xilinx Zynq7000系列的XC7Z035。
ADS8686S 是TI公司推出的一款基于雙路同步采樣的16 通道、16 位逐次逼近型模數(shù)轉(zhuǎn)換器,其中包含輸入鉗位、1 MΩ 輸入阻抗、獨(dú)立的可編程增益放大器、可編程二階低通濾波器和ADC輸入驅(qū)動器。在數(shù)字接口方面,支持SPI串行接口,16 位或者8 位的并行接口,可靈活適配各種主機(jī)控制器。在采樣速率上,最大支持1 MSPS 的采樣率,可以滿足大部分的采樣速率要求。ADS8686支持硬件和軟件兩種控制模式。設(shè)備在完全復(fù)位狀態(tài)下,根據(jù)HW_RNGSELHW_RNGSEL 管腳的狀態(tài),選擇啟用的控制模式。在硬件模式下,所有器件的配置都由管腳控制和訪問,禁止使用內(nèi)部寄存器。在軟件模式下,管腳只負(fù)責(zé)接口和參考配置,其他配置都通過寄存器完成。采用SPI 串行通信具有占用管較少、連接簡單等優(yōu)點(diǎn),但傳輸速度受限于串行時鐘SCLK;而采用并口通信時,采樣數(shù)據(jù)同時出現(xiàn)在并口總線,一個時鐘即可讀取,速度上有明顯優(yōu)勢,而缺點(diǎn)是占用管腳多、連接復(fù)雜[2]。為簡化軟件設(shè)計(jì)工作,本設(shè)計(jì)數(shù)字接口采用16 位并行接口,又因在設(shè)計(jì)中要使用片上自診斷功能,因此選用軟件控制模式。
ADS8686S 的轉(zhuǎn)換原理在文獻(xiàn)[1]中已有介紹,不再贅述,這里重點(diǎn)介紹其并行接口工作時序。設(shè)計(jì)中將ADS8686S的接口分為寫配置寄存器和模數(shù)轉(zhuǎn)換控制兩個部分進(jìn)行分析。
對于ADS8686S,在啟動采樣轉(zhuǎn)換前,要先對寄存器進(jìn)行配置以實(shí)現(xiàn)特定的功能,例如配置輸入電壓的范圍。ADS8686S 通過片選管腳CS、寫管腳WR 和數(shù)據(jù)管腳DB15~DB0 來實(shí)現(xiàn)寫寄存器操作,圖1是并行寫寄存器時序圖??刂破魇紫壤虲S 管腳,此時芯片的數(shù)據(jù)管腳輸出高阻態(tài)。延遲tSU_CSWR時間后控制器拉低WR 管腳,芯片把數(shù)據(jù)管腳作為數(shù)字輸入管腳。然后控制器把數(shù)據(jù)放到數(shù)據(jù)管腳,等待tSU_DINWR時間后拉高WR 管腳,在WR 上升沿?cái)?shù)據(jù)被成功鎖存到對應(yīng)的寄存器中。
圖1 并行寫寄存器時序
ADS8686S 通過CONVST 來控制模數(shù)轉(zhuǎn)換。首先向寄存器寫入要采集的A/B 通道序號;等待tDZ_CONFIG后控制器拉高CONVST 管腳,開始模數(shù)轉(zhuǎn)換,隨即BUSY 信號變高,表示正在轉(zhuǎn)換;BUSY 由高變低后,表示采樣完成,最小的采樣時間tACQ為480 ns。檢測到BUSY 下降沿后,控制器讀取采樣數(shù)據(jù)。圖2為軟件并行模式下采樣控制時序圖。
圖2 軟件并行模式下采樣轉(zhuǎn)換控制時序
采樣控制器主要由主控模塊、狀態(tài)監(jiān)測模塊、采樣率控制模塊和數(shù)字接口模塊組成。采樣控制器結(jié)構(gòu)框圖如圖3所示。主控模塊是控制器的控制核心,負(fù)責(zé)控制ADS8686S的有序采樣工作;狀態(tài)監(jiān)測模塊用于實(shí)時監(jiān)測ADS8686S的工作狀態(tài);采樣率控制模塊負(fù)責(zé)提供一定頻率的脈沖使能信號,用于控制采樣率;數(shù)字接口模塊負(fù)責(zé)FPGA和ADS8686S的數(shù)字接口通信。
圖3 采樣控制器結(jié)構(gòu)框圖
在數(shù)字電路系統(tǒng)設(shè)計(jì)中,有限狀態(tài)機(jī)是一種十分重要的時序邏輯電路模塊,一般用來描述數(shù)字系統(tǒng)的控制單元,是許多數(shù)字系統(tǒng)的核心部件[3],因此本控制器的核心控制邏輯基于Verilog HDL 有限狀態(tài)機(jī)實(shí)現(xiàn)。本狀態(tài)機(jī)共設(shè)計(jì)了47 個狀態(tài),限于篇幅,這里把47 個狀態(tài)簡化成8 個偽狀態(tài)進(jìn)行描述,圖4 是簡化后的狀態(tài)跳轉(zhuǎn)圖。ADC_INIT 狀態(tài)完成ADS8686S 上電的初始化工作,包括上電復(fù)位和芯片完全復(fù)位兩個過程。在ADC_CONFIG 狀態(tài),分別向RANGE_A1、RANGE_A2、RANGE_B1、RANGE_B2 寄存器寫入0xAA,把16個通道的采集電壓范圍設(shè)置成-5 V~+5 V,其他寄存器使用默認(rèn)值;在START 狀態(tài),表示準(zhǔn)備就緒,等待采樣控制模塊產(chǎn)生的sample_pulse 信號,隨機(jī)展開本次采集工作;在CH_SEL 狀態(tài),向CHANNEL_SEL 寄存器寫入待采集的A/B 通道地址;在CONVST 狀態(tài),拉高CONVST 管腳,啟動轉(zhuǎn)化,此時BUSY管腳變高;在WAIT 狀態(tài),等待BUSY 管腳由高變低,表示轉(zhuǎn)換結(jié)束;在READ_CHA 狀態(tài),讀取A 通道的采樣值;在READ_CHB 狀態(tài),讀取B 通道的采樣值,隨后跳轉(zhuǎn)到START 狀態(tài),開啟一次新的采集。需要注意的是,ADS8686S 是一款兩路同步采樣的ADC,A通道和B通道各有8 路采樣通道,A 通道中的某一路和B 通道中的某一路是同步采樣的,因此每次轉(zhuǎn)換結(jié)束,要分別讀取A通道和B通道的采樣值。
圖4 簡化后的偽狀態(tài)跳轉(zhuǎn)圖
ADS8686S 具有片上自診斷功能,也即當(dāng)通道選擇寄存器CHANNEL_SEL 中地址配置成0xBB 時,會得到固定采樣值0xAAAA(A 通道)和0x5555(B 通道)。借助這個功能,可以實(shí)時監(jiān)測ADS8686S的工作狀態(tài),并把監(jiān)測結(jié)果反饋給狀態(tài)機(jī)模塊,如果出現(xiàn)異常,跳轉(zhuǎn)ADC_INT狀態(tài),進(jìn)行復(fù)位重啟操作。
本模塊用來產(chǎn)生頻率為184.32 KHz 的脈沖使能信號sample_pulse。任務(wù)要求的采樣率有40 Hz、5.12 KHz 和20.48 KHz 共3 種,這里都按照20.48 KHz 進(jìn)行采樣,40 Hz 和5.12 KHz的過采樣信號待后續(xù)抽取得到。由于A/B 通道是同步采樣,每個循環(huán)依次讀取8 個外部通道和1 個內(nèi)部通道(自診斷結(jié)果),因此需要模塊產(chǎn)生20.48 KHz×9=184.32 KHz 的脈沖使能信號sample_pulse。為了便于移植,這里采用DDS 原理[4]產(chǎn)生sample_pulse 信號。系統(tǒng)時鐘頻率110 MHz,NCO 位寬32 位,得到相位增量PINC=2^32×184.32 K/110 M=7197。
數(shù)字接口DB[15∶0]是雙向接口,F(xiàn)PGA 和ADS8686S 都可以對接口進(jìn)行讀寫操作,因此在數(shù)字接口模塊中例化了16 個三態(tài)門,在狀態(tài)機(jī)控制下,完成數(shù)字接口的讀寫操作。
圖5是用直流源提供5 V電壓作為待采信號,通過Vivado Hardware工具在線抓取的實(shí)時采樣數(shù)據(jù)。從圖中看到,A_CH0~A_CH7 和B_CH0~BCH7 都是0x7FFF,由于ADS8686S 采樣值采用二進(jìn)制補(bǔ)碼輸出,因此0x7FFF表示5 V。A通道固定值為0xAAAA,B 通道固定值為0x5555。實(shí)驗(yàn)結(jié)果表明,采樣結(jié)果正確無誤。
圖5 Vivado Hardware工具在線抓取采樣數(shù)據(jù)
本文提出了基于FPGA 的ADS8686S 采樣控制器,實(shí)現(xiàn)了對16 路傳感器信號的采集。測試結(jié)果表明控制器工作穩(wěn)定、性能可靠,對于同類設(shè)計(jì)具有一定的參考價(jià)值。