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