摘要:給出一種具有多種觸發(fā)功能的可編程高速數據采集模塊的設計方法。模塊可以動態(tài)設置觸發(fā)窗長度、觸發(fā)點電平、觸發(fā)極性和觸發(fā)模式;依據觸發(fā)字與存儲在FIFO中的A/D轉換數據比較確定觸發(fā)位置,并根據設置的預觸發(fā)深度實現(xiàn)對A/D轉換數據的存儲和傳輸。由于觸發(fā)電路采用了全數字化設計,與采用模擬電平比較器實現(xiàn)觸發(fā)電平比較相比,無需硬件改動,可以靈活地配置觸發(fā)方式,同時也降低了系統(tǒng)調試難度。
關鍵詞:高速數據采集;數字電路;觸發(fā)窗;先進先出存儲器
引言
在數據采集的過程中,為了不漏掉任何一個既定特征的信號,A/D轉換器必須不斷地采集數據。但是由于存儲器容量的限制,不可能無限制地采集并存儲數據。如何使模塊能自動檢測、采集并存儲有效數據呢?觸發(fā)技術的引入可以解決這一問題。觸發(fā)是為了有效地觀測信號,當被測信號滿足觸發(fā)條件時,啟動一次數據采集,使用戶在屏幕上能觀測到滿足觸發(fā)條件的波形。
觸發(fā)電路在以往的設計中,多采用電平比較器,其缺點是:采用的分立元件多,不利于模塊移植和速度的提升,同時觸發(fā)方式多樣化配置也受到硬件限制,不具備智能化特點。本模塊基于高速A/D轉換器和FPGA,提出了一種全數字化的多種觸發(fā)功能的高速數字采集設計方案。模塊接口易于移植,采集頻率高達50 MHz,具有多種可編程觸發(fā)功能,采用的觸發(fā)窗技術進一步保證了采樣存儲數據的正確性和有效性。
1 高速數據采集模塊結構
高速數據采集模塊由FPGA存儲控制、傳輸電路和AD9057數據采集部分構成。其中FPGA為此次模塊設計的重點。多種觸發(fā)功能的高速數據采集模塊結構框圖如圖1所示。采用Cyclone系列EP1C6Q240C8型號的FPGA控制芯片,其Bank4 I/O口與AD9057相連,有源晶振提供了50 MHz的時鐘頻率。
此模塊通過通信接口動態(tài)設置觸發(fā)極性、觸發(fā)模式、觸發(fā)窗長度、觸發(fā)點電平,觸發(fā)極性可選上升沿觸發(fā)rising_edge和下降沿觸發(fā)falling_edge兩種。觸發(fā)模式可分為前觸發(fā)pre_trigger、中間觸發(fā)mid_trigger、后觸發(fā)post_trigger三種模式。觸發(fā)窗長度設置為0~100的整數,觸發(fā)點電平可設置為0~255的整數。
當連接通信接口的外部顯示控制界面設置好觸發(fā)極性、觸發(fā)模式、觸發(fā)窗長度、觸發(fā)點電平時,開始啟動采集命令,包裝好的40位數據流將被發(fā)送到FPGA;FPGA接收到40位數據后,迅速分離成5個8位數據,即觸發(fā)極性、觸發(fā)模式、觸發(fā)窗長度、觸發(fā)點電平和采集啟動信號,利用FIFO存儲器先進先出的特性以及對AD9057的控制時序,配合觸發(fā)信號存儲A/D數據;當采樣完成后,F(xiàn)IFO中的數據可以被發(fā)送到外部的顯示控制界面直觀地顯示出來。
1.1 觸發(fā)信號的產生
傳感器探測和感知的模擬信號一般都帶有一定干擾,如果僅憑一個觸發(fā)點來決定觸發(fā)的位置則很難控制,在本模塊觸發(fā)位置的設計中采用了三點觸發(fā)窗技術,觸發(fā)窗的設置可以有效地屏蔽模擬信號的抖動,使模塊正常運行。
觸發(fā)極性triggerpolar有上升沿觸發(fā)rising_edge和下降沿觸發(fā)falling_edge兩種模式,在這兩種觸發(fā)極性下,觸發(fā)信號上升沿表示模塊開始存儲A/D轉換數據。模塊設置了觸發(fā)字1和觸發(fā)字2,觸發(fā)字1為觸發(fā)點加上觸發(fā)窗長度,如果結果小于255則觸發(fā)字為兩者相加結果,否則為255;觸發(fā)字2為觸發(fā)點減去觸發(fā)窗長度,如果結果大于0則觸發(fā)字為兩者相減結果,否則為0。
圖2是下降沿觸發(fā)信號產生圖。圖中模塊開始采樣時,A/D轉換數據與觸發(fā)字1和觸發(fā)字2不斷地比較,當A/D數據大于觸發(fā)字1時,觸發(fā)信號輸出為低電平;此后A/D數據與觸發(fā)字2比較,當A/D數據小于觸發(fā)字2,觸發(fā)信號輸出高電平。
compare_standardl、compare_standard2分別是觸發(fā)字1和觸發(fā)字2。flag為標志變量,當A/D數據大于觸發(fā)字1時,flag=1;當A/D數據小于觸發(fā)字2時,flag=0。具體實現(xiàn)的代碼如下:
1.2 觸發(fā)模式的選擇
觸發(fā)模式分為前觸發(fā)、中間觸發(fā)和后觸發(fā)。觸發(fā)模式的選擇決定了觸發(fā)的預觸發(fā)深度N的不同。在一定的存儲深度M下,捕捉的波形在觸發(fā)點P附近被最大化地存儲和顯示。觸發(fā)點前端波形的觀察選擇前觸發(fā)模式,即預觸發(fā)深度占存儲深度的比例要大。觸發(fā)模式如圖3所示。S代表起點,E代表結束點。觸發(fā)點前后波形的觀察選擇中間觸發(fā)模式,觸發(fā)點后端波形的觀察選擇后觸發(fā)模式。
1.3 FIFO讀寫數據控制
FIFO存儲器的讀寫是用狀態(tài)機來實現(xiàn)的。5個狀態(tài)分別為wait、wr_trigger、wr_read、wr_full、read。FIFO控制器流程如圖4所示。模塊開始進入wait狀態(tài)等待啟動信號start上升沿,如果start上升沿到來模塊轉到wr_trigger狀態(tài),否則將在wait狀態(tài)一直等待;當模塊進入wr_trigger狀態(tài)時,F(xiàn)IFO開始寫數據直到滿足觸發(fā)模式的預觸發(fā)深度,此時的寫時鐘等于采樣時鐘;此后模塊進入wr_read狀態(tài),F(xiàn)IFO開始一邊讀數據一邊寫數據,即一直保持FIFO中存儲的數據是最新A/D轉換數據,此時的讀寫時鐘與采樣時鐘是同頻的。直到觸發(fā)信號上升沿的到來,否則FIFO存儲器將一直讀數據和寫數據;當觸發(fā)信號上升沿有效時,模塊進入wr_full狀態(tài),F(xiàn)IFO存儲器停止讀數據,開始寫數據,直到FIFO寫滿數據;當FIFO寫滿數據(full=1)以后,模塊轉到read狀態(tài),F(xiàn)IFO開始讀數據并通過通信接口發(fā)送到顯示控制界面進行直觀的顯示,直到FIFO為空empty=1,此時讀時鐘為顯示時鐘;FIFO讀數據操作完畢,模塊將一直停留在wait狀態(tài)等待下一次采集啟動信號的到來,如此反復執(zhí)行。
1.4 高速數據采集模塊電路設計
AD9057是8位的模數轉換器,可以達到60 MHz的最大采樣頻率。設計中,模塊采用50 MHz的采樣頻率,AD9057帶有2.5V的基準電壓,可以對1 V峰峰值輸入模擬信號進行A/D轉換。通常采用高頻、寬帶運放對模擬信號進行緩沖,本設計中采用AD8041作為放大器,AD9057高速數據采集模塊電路圖電路圖如圖5所示。
2 結論
模塊可以工作在50 MHz的采樣頻率下,并且在模擬信號幅度偏小和有一定干擾的情況下也可以正常地工作。本次設計中采用了VC++6.0編寫的顯示控制界面進行模塊驗證。圖6是數據采集模塊捕捉的頻率為5 MHz、300mVpp交替出現(xiàn)間隔為1 ms的一個脈沖波形圖。
其中,觸發(fā)模式選用中間觸發(fā),觸發(fā)極性為上升沿,采樣頻率為50 MHz。由此可見,本模塊的技術方案可行,具有靈活簡潔的特點,可以應用在程控儀器和自適應信號采集與處理系統(tǒng)中。