郭宗平,王厚軍,戴志堅
(電子科技大學自動化學院,四川 成都 611731)
峰值檢測是示波器中數(shù)據(jù)采集方式之一(另外有取樣方式和平均方式)[1],這種技術(shù)起源于存儲深度不能滿足捕獲毛刺的需要[2]。取樣方式是通過平均的時間間隔對信號進行取樣來進行創(chuàng)建波形,正常取樣方式時,要捕捉窄的毛刺,示波器必須以高的采樣率才能捕捉到窄的毛刺,并且將全部采樣數(shù)據(jù)全部存儲起來。而當信號的頻率比較低時,用示波器去觀察信號需要將示波器時基檔位調(diào)到等效采樣率比較低的檔位,而這時需要等效采樣率很低,利用取樣方式就不能捕捉到毛刺信號,利用峰值檢測技術(shù)就可以解決這個問題。峰值檢測不像正常取樣那樣給出一個詳細的完整波形顯示,而是以最高的采樣率捕捉信號,簡單的忽略某些采樣,只記錄發(fā)生在每個采樣間隔期間內(nèi)的最大和最小值,這樣就不用增加存儲存儲深度還可以捕捉毛刺或偶發(fā)事件[3]。峰值檢測模式下,即使使用的是等效采樣率較低的時基檔位,也能捕捉到可能出現(xiàn)的某些毛刺信號。峰值檢測是數(shù)字示波器的重要技術(shù)指標之一,主要用來實現(xiàn)以下3個功能:(1)波形的毛刺捕捉;(2)包絡(luò)的顯示功能,峰值檢測的方法對于捕捉調(diào)制信號(例如AM波形)是非常有用的;(3)限制混疊的作用[4]。
在峰值檢測模式下,ADC以盡可能高的采樣率進行采樣,這樣可以捕捉更窄的毛刺信號。該項目中把在峰值檢測模式下ADC的采樣率設(shè)為800MS/s,相當于峰值檢測的速率為800MS/s。由于ADC轉(zhuǎn)換后的數(shù)據(jù)速度很快,F(xiàn)PGA難以處理,因此首先利用FPGA內(nèi)部的差分接收機把這些數(shù)據(jù)做串并轉(zhuǎn)換[5],使得數(shù)據(jù)位變?yōu)?4位,相當于8個8位的數(shù)據(jù),這樣就把速度降下來了。當ADC的采樣率為800MS/s時,經(jīng)過降速后時鐘速度變?yōu)?00 MS/s。然后從8個8位數(shù)據(jù)中選出最大值和最小值,分別與上次的最大值和最小值做比較,最大值比上次的大就保留下來,否則保持不變;最小值比上次的小就保留下來,否則也保持不變。當比較次數(shù)達到設(shè)定的值后,把最終的最大值和最小值輸出,并送往存儲器。流程圖如圖1所示。
峰值檢測模式下數(shù)據(jù)并不像普通采樣那樣直接進入存儲器,而是先經(jīng)過峰值檢測模塊篩選出最大值和最小值后,再將它們存入。存數(shù)時鐘由時基檔位決定,這樣將ADC采樣時鐘和存儲的時鐘區(qū)分開來,使得低時基檔位下同樣能捕捉到信號的毛刺。采用VHDL硬件語言進行數(shù)字電路設(shè)計具有很好的靈活性[6],在設(shè)計中,采用流水線的思想,大大提高了峰值檢測模塊的處理速度[7-8]。
從圖2中,可以看到3個模塊,1個為Compare_8,這個模塊的作用是把送過來的并行8個數(shù)據(jù)中選出最大值和最小值輸出;另外2個均為Comparewithlast,這個模塊的作用就是把此次送過來的數(shù)據(jù)與上一次存下來的數(shù)據(jù)做比較,如果比上次的最大值大就把此次送過來的值作為最大值,如果比上次保留下來的最小值小就把此次送過來的值作為最小值。當比較次數(shù)達到設(shè)定的次數(shù)以后,就輸出最大值和最小值,用了2個Comparewithlast模塊,上面那個用來得到最大值max[7∶0],下面這個用來得到最小值 min[7∶0]。比較次數(shù)由 n[15∶0]來設(shè)置,在示波器中根據(jù)具體的時基檔位來設(shè)置不同的值。
Compare_8模塊內(nèi)部采用了三級流水線結(jié)構(gòu)[5,9],如圖3所示。這樣可以大大增加電路的工作速度,ADC出來的數(shù)據(jù)經(jīng)過串并轉(zhuǎn)換后變?yōu)椴⑿械?個8位并行數(shù)據(jù),兩兩比較,需要經(jīng)過三級比較才能得到最大值和最小值。經(jīng)過第1級后,從這8個數(shù)中選出4個最大值4個最小值;第2級再分別把這從第1級得出的4個最大值選出2個,從第1級得出的4個最小值選出2個;第3級從2級選出的2個最大值中選出1個輸出,從2級選出的2個最小值中選擇1個輸出。這個模塊由10個Compare_2模塊組成,Compare_2模塊的作用就是從2個數(shù)中選出最大值和最小值。Compare_8模塊的作用就是從這8個數(shù)中把最大值和最小值找出來。
圖4為Compare_8模塊電路時序仿真圖,data1~data8為經(jīng)串并轉(zhuǎn)換后的8個數(shù)據(jù),clk為與數(shù)據(jù)同步的時鐘,max為比較出來的最大值,min為比較出來的最小值。從圖中可以看出,當并行的數(shù)據(jù)流速度為100M時,經(jīng)過6個時鐘的延遲后,最大值和最小值都正確的被選擇出來了。
圖4 compare_8模塊電路時序仿真圖
圖5 comparewithlast模塊電路時序仿真圖
Comparewithlast這個模塊的時序仿真圖如圖5所示。圖5中,datain為100 M的串行數(shù)據(jù),clk為輸入時鐘,dataout_max為最終選出的最大值,dataout_min為最終選出來的最小值,clkout為輸出時鐘,n為需要比較的次數(shù)。從圖5中可以看出,n的值設(shè)為5,這些數(shù)據(jù)比較5次以后就將最大值和最小值都正確地輸出。
該峰值檢測模塊在多功能綜合分析儀中的示波器模塊中試驗過,通過信號源輸出周期5ms,寬度為2.5ns的脈沖信號對峰值檢測功能進行測試,打開示波器的峰值檢測功能(若在普通采樣方式下,此時的等效采樣率為100KS/s,即2次采樣點之間的間隔是10μs,不能捕捉到如此窄的脈沖)完全捕捉到了窄脈沖信號,如圖6所示。
圖6 峰值檢測模式下捕捉到2.5ns脈寬的毛刺信號
現(xiàn)場可編程門陣列(FPGA)器件體積小、速度快、集成度高,能夠用硬件電路來實現(xiàn)算法程序。在FPGA中實現(xiàn)峰值檢測模塊,能夠保證峰值檢測的速度和可靠性,隨著采樣率的不斷提高以及FPGA的工作速度不斷提高,能捕捉的毛刺的寬度越來越窄,峰值檢測技術(shù)在信號采集領(lǐng)域?qū)l(fā)揮更大的作用。
[1] 沈蘭蓀.高速數(shù)據(jù)采集系統(tǒng)的原理與應(yīng)用[M].北京:人民郵電出版社,1995:1-200.
[2] 馬明建,周長城.數(shù)據(jù)采集與處理技術(shù)[M].西安:西安交通大學出版社,2000:1-31.
[3] 邱渡裕.200 MHz手持式示波表數(shù)字系統(tǒng)與電源設(shè)計[D].成都:電子科技大學,2006:32-43.
[4] 古天祥,王厚軍,習友寶.電子測量原理[M].北京:機械工業(yè)出版社,2004:20-200.
[5] 黃任.VHDL入門·解惑·經(jīng)典實例·經(jīng)驗總結(jié)[M].北京:北京航空航天大學出版社,2004:20-170.
[6] 沈立,朱來文,陳宏偉.高速數(shù)字設(shè)計[M].北京:電子工業(yè)出版社,2004:100-300.
[7] 曾繁泰,陳美金.VHDL程序設(shè)計[M].北京:清華大學出版社,2000:10-40.
[8] 陳耀和.VHDL語言設(shè)計技術(shù)[M].北京:電子工業(yè)出版社,2004:8-50.
[9]侯伯亨,顧新.VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計[M].西安:西安電子科技大學出版社,1998:49-119.