朱紫萌,于 洵,王 剛,韓 峰
(1.西安工業大學兵器科學與技術學院,陜西西安 710000;2.中國航天空氣動力技術研究院,北京 100071)
隨著彈載設備的不斷發展,對彈載數據采集記錄儀的要求也越來越嚴格。當對巡飛彈載光電吊艙無人機[1]的飛行控制作數據分析時,傳統采集卡的體積過大和可靠性不夠高,雖然能達到高采樣精度和采樣率,但是面臨導彈內部的高沖擊和高過載環境[2],普通采集卡難以滿足需求。文中提出一種高集成度的數據記錄儀設計方法,該記錄儀具有高精度高采樣率,同時具備高可靠性和低功耗以及微小體積和質量,可適配于彈載無人機。傳統采集卡通常不考慮體積大小,通過大規模模擬電路設計達到更高更穩定的采樣;文中通過簡單的電路設計和FPGA 核心采集時序設計優化使采集效率更高,硬件更簡單易調試,軟件更便于移植。傳統彈載數據記錄儀在使用USB 或串口通信時通常會面臨無法實時監測數據或數據傳輸緩慢的問題[3],遙測數據會導致信號傳輸不穩定,故通常采用“先記錄再讀取”的方式;該設計通過FPGA 高速采集算法,同步采集信號和傳輸信號,實現了設備測試期間的實時監測,非測試期間的大容量存儲。
由于彈載系統裝置于無人機的光電系統上,故有如下特殊要求:
1)高采樣率:沖擊信號需達到100 kHz 的采樣頻率,其余信號需達到10 kHz 的采樣頻率,且要求所有通道并行采集和處理。
2)低功耗:該系統用于無人機載光電系統,故需選用低功耗的器件和芯片。
3)高精度:此系統采集數據用于無人機飛行控制和安全性保證,采集精度要求為0.5%FS。
4)多源:要求分析彈內收到的沖擊、振動、過載、溫度信號,其中的力學物理量為正交三軸方向,共采集10 路信號。
系統總體架構如圖1 所示,傳感器將接收到的沖擊、振動、過載、溫度信號先通過信號調理電路,將原始信號經過模擬信號濾波、電荷放大、電荷信號轉電壓信號等操作將其轉化為ADC 模數轉換器能夠采集的電壓范圍[4],ADC 將其轉化為數字信號,進入到FPGA。FPGA對數字信號進行編幀、解碼等操作[5],將數據存入到存儲卡中。當彈上系統回收以后[6],上位機可通過FPGA 讀取存儲卡內的數據,將其有序地顯示出來;同時在地面做實驗時可以直接通過USB 實 時讀取 數據[7]。

圖1 系統總體架構
為滿足低功耗低成本和性能的平衡,該設計選用了XILINX 的Spartan6 系列FPGA 作為控制核心[8],該芯片具有43 661 個邏輯單元、2 088 kb 的Block RAM 空間,支持DDR3,具有218 個I/O 口,完全滿足設計要求。
在ADC 的選型上,為滿足最高單路100 kHz 的要求,設計選用ADI 公司的AD7606 模數轉換芯片[9]。AD7606 內置8 個獨立ADC 通道,可并行采集8 路數據,具有16 bit 精度,最高采樣率可達200 kSPS,屬于SAR 型ADC。
對于通信方式,該設計選擇USB2.0,采用FTDI公司的控制芯片FT232H。FT232H 芯片是一款單通道高速USB 轉UART/FIFO 接口芯片,能夠用于各種串行和并行I/O 配置,包含專有動態雙向數據總線,可通過外部存儲器EEPROM 完成其工作模式的配置。它不僅支持異步串行接口(UART),還通過其內建的多重協議同步串行引擎(MPSSE)支持許多同步I/O 接口,如SPI、I2C、JTAG 及FPGA 接口。
數據存儲部分作為整個系統的數據載體,承擔著存儲由ADC 產生的數據的任務。該設備的存儲系統選用鎂光公司的MTFC16GAPALNA 芯片存儲數據;eMMC 存儲芯片將NAND FLASH 與控制器MMC 接口封裝在一起,控制器負責Flash 的無效塊檢測、讀寫、ECC 校驗等[10],可大幅度提高數據的讀寫速度。
圖2(a)所示為調理電路的電流源設計部分,PSSI2021SAY 芯片為一款標準恒流源驅動器,對R90外置電阻改變阻值可輸出15 μA~50 mA 的穩定輸出電流,為傳感器提供激勵電流。該芯片集成了內部電阻、PNP 三極管和兩個二極管,有助于減少電路板面積。其中,外置電阻和電流輸出的關系為:

圖2(b)所示為對圖2(a)輸出的保護電路和運算放大電路。BAV199 是由內部有兩個二極管的保護電路,其中公共端3 接輸入信號,1 和2 分別接電源正和地,這樣信號線上若出現高于正電源的信號則被釋放到正電源,出現負電壓的信號則被釋放到地線上。OPA2171AIDCUR 芯片為一個運算放大器,該芯片規定輸入為+2.7~+36 V,具有低失調、飄移和低靜態電流的帶寬。在該調理電路中,該芯片主要功能是將原始電壓信號放大至ADC 能夠采集的范圍。

圖2 模擬信號調理電路
如圖3 所示,選取AD8495 芯片作為設計的熱電偶核心調理模塊,基于低功耗、高集成度的設計理念,AD8495 滿足要求。核心器件AD8495 作為一種熱電偶放大器,本身具備的集成溫度傳感器執行冷結補償。①AD8495 對25 ℃環境溫度進行了優化,額定環境溫度范圍為0~25 ℃;②固定增益儀表放大器放大熱電偶的小電壓,已提供5 mV/℃的輸出,AD8495 對K 型熱電偶的儀表放大增益為122.4;③具有高共模抑制性能,能夠抑制熱電偶的長引線帶來的共模噪聲[11]。TC_2 為后端輸出電壓信號,直接被采集卡采集。

圖3 熱電偶溫度補償
兩片AD7606 芯片構成采集電路,圖4 所示為其中一片和FPGA 交互設計圖。由于是同步采樣,故兩片ADC 的控制引腳通過短接接入FPGA,數據端口獨立接入FPGA。

圖4 ADC采集電路設計
兩片公共控制的信號如下:OS0-3 控制ADC 的過采樣倍數;CONVSTAB 將AD 芯片的CONVSTA 和CONVSTB 兩個引腳短接在一起,使得ADC 可以同步采樣;CS 控制片選;BUSY 表示輸出繁忙,CONVSTAB 到達上升沿之后,此引腳變為高電平,直到數據轉換完成,此引腳下降沿表示數據已經被存入寄存器,可以讀取;RANGE 引腳輸入高電平,表示ADC 的輸入電壓范圍是±10 V;RD/SCLK 設置為SPI協議的時鐘。
數據端口如下:DB7/8 為ADC 的串行讀數模式的輸出端口,DB7 輸出為通道V1~V4,DB8 輸出為通道V5~V8。
數據在FPGA 內部經過濾波編碼以后直接通過USB 將數據傳輸到上位機。將FT232H 配置為245同步并行FIFO 模式,傳輸速率為40 MB/s。USB_D0~USB_D7 接口為一個位寬為8 bit 的雙向數據端口,即數據總線。USB_D8~USB_D13 位狀態總線,分別是時鐘、FIFO 數據可讀標志、FIFO 數據可寫標志、輸出使能、讀/寫數據輸出使能6 個控制端口。四線USB 接口線纜直接接入上位機,采用LabView 編寫上位機觀測數據。電路設計接口部分如圖5 所示。

圖5 USB通信電路設計
系統FPGA 內部邏輯設計和數據流如圖6 所示。

圖6 FPGA邏輯流程圖
設計采用Verilog 語言在ISE14.7 平臺上實現了ADC 數據采集、數據緩存、數字信號濾波、數據存儲及通信等功能。
現存的多數采集卡常根據ADC 器件的時序圖直接設計采集邏輯,在設計靈活度上有缺陷,在采集速度上也容易受到FPGA 的門延時以及狀態機等的影響。因此為了系統的靈活性,在器件選型上使用了多功能的AD7606 作為數模轉換芯片。
通常為了控制簡單,便于編寫代碼,會選擇使用AD7606 的并行讀取模式,很少使用串行讀取模式。但AD7606 的最大讀取速度為200 kHz,并行讀取涉及到多個線路的控制,期間的延時會影響最終的效率,且并行讀取模式和FPGA 使用同一個時鐘,容易出現時序難以控制的問題。
為避免并行模式帶來的一系列問題,該設計將AD7606 配置為雙通道高速串行接口,將10 個通道的傳感器模擬電壓值經過A/D 轉換成16 位二進制數,然后發送給FPGA 作后續處理。
AD7606 轉換過程如下:同步采樣信號線CONVSTAB 被激勵,由低電平變為高電平,表示ADC內部正在進行數模轉換,此時外部設備(如FPGA)不能進行讀取。當CONVSTAB 變為高電平以后,經過最多40 ns,BUSY 信號變為高電平,BUSY 信號為高表示正在轉換數據,不能讀取。BUSY 信號的高電平時間為轉換時間,介于3.45 μs 與4.15 μs 之間。當BUSY信號變為低電平時,表示數據已經轉換完畢[13-16];CONVSTAB 在后續也會再次下降,CONVSTAB 高電平脈沖時間為25 ns。片選CS 必須在BUSY 下降沿之后才能使能,CS 有效時FPGA 才能讀取數據。當運行在并行模式時,FIRSTDATA 會在第一個通道讀取期間產生一個高脈沖;當運行在串行模式時,FIRSTDATA 會在讀完第一通道數據后產生一個高脈沖。
為加速采集速率,在電路設計和邏輯設計上采用了一種加速策略,將多余的引腳懸空,不在邏輯里面體現,從而去掉不必要的判斷過程,減小采樣間隔,增大采樣速率[17-20]。如圖4 中的電路設計,系統將FIRSTDATA 引腳和BUSY 引腳懸空,不對其控制。
系統外部使用50 MHz 時鐘頻率,具體控制時序如圖7 所示。根據AD 硬件時序,CONVSTAB 下降沿有效,表示開始啟動AD7606;T1 表示設置的等待時間,此處設計為等待20 個時鐘(0.4 μs),以保證復位效果良好。T2 為開始啟動命令的保持時間,為加速采集,此處判斷下降之后,只等待2 個時鐘便拉高CONVSTAB,表示數據轉換開始。AD7606 的轉換時間典型值為4 μs,因此在此處做一個延時等待,即200 個時鐘;完成以后立即將CS 和SCLK 置低電平。SCLK 為FPGA 通過PLL 產生的一個時鐘,頻率為17 MHz;當CS 保持低電平時,在每一個SCLK 的上升沿時FPGA 讀取一次信號,每次讀1 bit,采用移位寄存器的方式存儲。AD7606 的精度為16 bit,故每個通道要使用16個時鐘,每個讀取周期可以讀取4個通道。如圖7 所示,DOUTA/B_AD1~2 為兩片AD7606拼成的10 通道數據;使用64 個SCLK 可以讀完所有數據。T4 為讀取數據的時間,T5 為下一次采集的等待時間,可以在FPGA 里面縮短T5。

圖7 采集邏輯時序圖
數據寫入過程:在eMMC 進入傳輸模式之后發送CMD16 命令,設置寫數據塊長度;再發送CMD24命令,開始單塊寫操作,將RAM 數據寫入eMMC,依次寫入起始位、數據位、CRC16 校驗碼與結束位。數據發送完畢后,eMMC 器件會根據接收到的數據進行CRC16 校驗比對,校驗成功后才將數據存儲到FLASH 里面,即存儲完成。
數據讀取過程:FPGA 在接收到上位機發出的讀取命令后,主動向eMMC 控制器發送讀數命令。首先判斷eMMC 后端RAM 是否寫滿,若寫滿則繼續向里面寫數據;若未滿,則發送CMD17 命令,開始讀數據操作。當檢測到其為有效時,開始讀數據,并且實時CRC 校驗,并對讀取數據進行計數。當計數到規定數據塊長度時,接收端進行數據接收,并將接收到的數據CRC 校驗與eMMC 的CRC 校驗對比,判斷數據接收是否正確,完成一次數據的讀取操作。
讀數據期間,首先FT232H 拉低RXF#信號,表明FT232H 芯片有數據等待讀出,此時還不能讀數據,總線上的數據并不是真實有效的數據。這個信號相當于一個提示,接收到RXF#信號后,用戶(FPGA)需要拉低OE#,使能FT232H 的數據輸出,大約9 ns 后,總線上開始出現有效數據,此時用戶拉低RD#就可以從FT232H 的FIFO 中讀取數據,這里RD#晚于ОE#一個時鐘周期動作即可,既可以保證數據準確,也保證了速率。
寫數據期間,當FT232H 的數據寫FIFO 未被寫滿時,拉低TXF#,表示FT232H 可以接收FPGA 發送過來的數據。FPGA 拉低WR#,這時數據就能寫到FT232H 中。通過狀態機對FT232H 進行數據讀寫。狀態機實現簡單的讀寫跳轉,上電后程序處于空閑狀態,此狀態下程序首先檢測RXF#是否為0,是則進入READ 讀狀態;RXF#不為0 時,檢測TXE#是否為0,并且判斷FPGA 內部FIFO 是否為非空(即empty=0),同時滿足時進入WRITE 寫狀態。在讀狀態,如果檢測到RXF#拉高則回到空閑狀態,如果檢測到TXE#拉高,或者FPGA 內部FIFO 為空(即empty=1),則回到空閑狀態。
通過USB 讀取功能的上位機對系統的實時采集作驗證,連接相應的傳感器,加一組正弦信號,效果如圖8 所示。上側為沖擊信號實時采集界面,下側為振動、過載和溫度信號的實時采集界面。因沖擊信號要求100 kHz 的采樣率,其余信號為10 kHz 采樣率,故使用兩個窗口觀測,以避免內存溢出造成畫面卡頓。

圖8 實時采集界面
通過模擬信號源分別給采集系統輸入幅值為4 000 mV、頻率100 Hz 的信號和室溫約21 ℃溫度輸入量的值以測試系統指標。為便于驗證數據和分析數據,實驗將采用存儲模式將數據存儲在eMMC 中,通過數據采集系統專用的上位機軟件對數據進行讀取。采集頻率和信號源頻率相對較高,圖9 中展示了每一個傳感器采集10 000個點的采集信號情況。在相同時間采集數量下,沖擊信號得到的信號頻率低于振動、過載、溫度信號頻率的10 倍,驗證了沖擊信號通道采樣率100 kHz,其余通道采樣率10 kHz。

圖9 信號讀取
為測試數據采集精度,將采集到的標準源信號數據作計算和處理,對每個通道的峰值、平均值、誤差等進行計算。
系統要求對模擬電壓的AD 采集精度為0.5%FS,實驗的標準輸入信號為4 000 mV,所以采集卡容許的精度為0.5%·(±4 000 mV)=±20 mV;溫度為0.5%·220 ℃=1.1 ℃。
計算結果如表1 所示。

表1 計算結果
經過實驗驗證,系統采集卡的采樣率和采樣精度已滿足工程要求,對模擬電壓的采集精度比要求的±20 mV 高出大約一倍。
此彈載無人機信號采集系統能夠實現多通道、多種類型信號的并行采集。針對ADC 芯片開發使用的FPGA 采集加速優化方法具有實用價值,為其他芯片的FPGA 控制邏輯設計提供了參考方法。實驗結果表明,該系統滿足采集精度和采樣頻率的要求,且可以以不同的采樣率采集多種信號源。對比傳統的彈載數據采集設備,文中所設計的設備具有以下優勢:實現對4 個傳感器的同時采集;上位機可以直接觀察模擬信號曲線。
不足之處在于文中未針對傳感器自身的精度提升和校準作出說明,在安裝傳感器之前應先對傳感器進行校正。另外,eMMC 存儲設計方面只使用了經典電路設計和時序設計方法,沒有對大數據的存儲空間作優化,后續可在此方面繼續探索研究。