引 言
在電子設(shè)計和測量過程中,信號邊沿抖動是我們經(jīng)常碰到的現(xiàn)象。如下圖示,t1,t2,...,t4,信號電平變化時出現(xiàn)多次隨機快速變化,這種隨機變化在有的場合可以容忍,但大部分時候是難以容忍的,比如精密測量、精確控制、軍用裝備等等。常規(guī)的解決辦法有濾波、平滑以及觸發(fā)器設(shè)計等等,但是,這些方法在某些場合是無能為力的。本文提出的基于CPLD的去抖動方法可以有效解決大部分問題,為后續(xù)信號處理和測量的正確進行提供了保證。
圖1 抖動
邊沿抖動的產(chǎn)生機理
模擬電路中產(chǎn)生邊沿抖動的機理
模擬電路中信號產(chǎn)生抖動主要發(fā)生在模擬信號向數(shù)字信號轉(zhuǎn)換的時候(也即信號幅度離散化過程中)。這里有兩種情況:一是輸入模擬信號波形失真,二是幅度離散化電路的原因。
模擬信號波形失真常見有三個來源:(1)噪聲或干擾等有害模擬信號的竄擾,如從開關(guān)電源竄入的齒狀毛刺干擾情形如圖2(a)所示;(2)模擬處理電路的非線性失真,如差分對管的不一致等,見圖2(b)所示;(3)模擬信號源的失真,一般來自于傳感器失真或被檢測物理量本身的不規(guī)則變化。對于理想比較器,模擬輸入信號在閾值附近的失真將引起沿抖動,如圖3(a)所示;對于帶施密特觸發(fā)器的比較器,閾值附近的較大波動也能引起沿抖動,如圖3(b)所示。
圖2 模擬信號波形失真
圖3 上升沿失真波形通過比較器
模擬信號通過比較器,或放大后通過數(shù)字門電路,都可實現(xiàn)幅度離散化而成為脈沖數(shù)字信號。實際電路中,在閾值VT附近一般有兩極限值:有效低電平輸入的最大值VA、有效高電平輸入的最小值VB,如圖3(c)所示。當輸入落在之間的模糊區(qū)中,尤其是在靠近VT附近時,內(nèi)部電路就相當于一個增益非常大的開環(huán)放大器,后級竄入的微小反饋都會引起振蕩而形成多次觸發(fā)。因此,即使把一個足夠幅度足夠光滑的低頻正弦波形加到門電路的輸入端,由于過VT點電壓斜升率太小,當通過邏輯模糊帶(ΔV=VB-VA)的時間(t2-t1)遠大于門電路傳播延遲tpd時,其輸出必將是前后沿都多次抖動的脈沖波形(圖3d)。對于比較器,ΔV一般為幾毫伏,而TTL門電路,VB=2.4V,VA=0.8V,所以會更易出現(xiàn)邊沿抖動。
數(shù)字電路中產(chǎn)生邊沿抖動的機理
數(shù)字電路中產(chǎn)生邊沿抖動主要發(fā)生在以下幾個方面:(1)開關(guān)器件的多次觸發(fā);(2)邏輯設(shè)計的缺陷;(3)不匹配終端長線效應(yīng)。
開關(guān)器件的多次觸發(fā)是最常見的,如鍵盤按鍵的多次連接,繼電器的觸頭多次接觸等等,本來只有一次信號變化卻形成了若干次變化。邏輯設(shè)計缺陷產(chǎn)生抖動的機理是:邏輯冒險或競爭,邏輯設(shè)計不合理造成瞬時毛刺,這種情況也是經(jīng)常發(fā)生,很難完全避免。在無終端匹配的長線上,高頻脈沖信號在線上多次往返傳播,將在脈沖前后沿形成長長的余振,當余振幅度足夠大時,對接收端門電路即成為沿抖動。
邊沿抖動產(chǎn)生的危害
對于狀態(tài)數(shù)據(jù)信號,邊沿抖動的危害一般較小,僅當系統(tǒng)正好在沿抖動時刻采樣才會引起數(shù)據(jù)錯誤。控制信號、復(fù)位信號的邊沿抖動常會造成的誤操作,引起邏輯混亂,甚至損壞執(zhí)行機構(gòu)。而如果時鐘信號發(fā)生沿抖動,利用該時鐘沿工作的鎖存器、計數(shù)器、定時器等電路的結(jié)果將可能完全錯誤。
常規(guī)去抖動方法
針對抖動的產(chǎn)生機理,我們把常規(guī)去抖動的方法也歸納為兩類:去模擬信號抖動方法和去開關(guān)信號抖動方法,分別被用在模擬電路部分設(shè)計和數(shù)字電路設(shè)計中進行去抖動處理。
去模擬信號抖動方法
由于模擬信號的質(zhì)量經(jīng)常是引起抖動的源頭,因而對模擬信號的處理更受關(guān)注。常用的方法主要包括以下幾個方面:(1)平滑濾波;(2)施密特觸發(fā)器;(3)單穩(wěn)態(tài)觸發(fā)器。
平滑濾波是常用的方法。讓信號從檢測帶的隨機快速變化鈍化為緩變信號,濾除不相干的頻率成分,這樣就可以弱化引起抖動的信號分量,在檢測帶內(nèi)就可準確檢測信號的邏輯電平。電路實現(xiàn)一般是用電阻電容或加運算放大器組成的有源/無源低通、帶通或帶阻濾波器。
施密特觸發(fā)器對信號的整形是利用了電平延遲形成觸發(fā)電平屏蔽區(qū)間的原理。當輸入信號電平超過門限VB使輸出置成高電平后,僅當輸入電平下降到比VB更低的門限VA時才能使輸出翻轉(zhuǎn),而之間過程是保持不變。于是,只要信號抖動范圍小于高低門限電平差,即可保證不發(fā)生抖動。而且,由于上下翻轉(zhuǎn)電平有足夠的差值,輸出上下沿將會陡直,減小了后續(xù)門電路出現(xiàn)沿抖動的可能性。
單穩(wěn)態(tài)觸發(fā)器對信號的整形是利用了時間延遲形成觸發(fā)時間屏蔽區(qū)間的原理。當信號超過某個電平時,觸發(fā)器翻轉(zhuǎn),在內(nèi)部定時沒有完成前不隨信號變化而變化,定時時間由外部電路設(shè)定,這樣也可對信號頻率已知情況的信號去除掉快變抖動。
去開關(guān)信號抖動方法
去除數(shù)字信號引入和處理時出現(xiàn)的抖動常有以下三種途徑:(1)RC濾波;(2)軟件去抖動方法;(3)優(yōu)化設(shè)計。
RC濾波是消除開關(guān)量器件抖動的最常見且有效的一種硬件方法,其實質(zhì)與模擬處理方法中的單穩(wěn)態(tài)觸發(fā)器相似。比如,對鍵盤按鍵操作時,按鍵一般都會多次接觸,常用的做法是加一個RC濾波電路,這樣,只要設(shè)置的時常數(shù)大于抖動時間,即可有效消除抖動。軟件去抖動方法一般是通過多次檢測加上延時、比較來實現(xiàn)的。比如,對鍵盤按鍵操作時產(chǎn)生的抖動,可以多次檢測,在一定的時間內(nèi)是相同的鍵值則認為按下了一次,超過了一定的時間則認為有連續(xù)按鍵操作。
對于數(shù)字信號處理中(邏輯設(shè)計不合理)產(chǎn)生的抖動, 主要靠優(yōu)化設(shè)計來解決。比如器件選擇、同步設(shè)計、匹配終端等等。器件選擇上,利用在頻帶、速度、精度等各方面相對實際需求有較大裕量的器件,這會使得信號受器件延時等影響造成的抖動大大減小。同步設(shè)計可以有效防止信號變化時出現(xiàn)的不必要的中間過程,一般是把異步設(shè)計的電路改成同步電路,這樣各路信號經(jīng)過幾乎相同的時延,避免了中間過程變化引起的抖動。匹配終端的設(shè)計對于頻率高端信號很有效。
智能寬帶去抖動
提出的原因
由上面總結(jié)的方法知,幾種方法都存在一定的不足。(1)利用了信號電平信息的去模擬抖動方法不能用于去除數(shù)字信號的抖動;(2)模擬去抖動方法中,平滑濾波的方法不能去除信號波動偏大時產(chǎn)生的抖動,而兩個觸發(fā)器解決辦法則不能準確反應(yīng)信號的正半周與負半周的比例,而且,對于單穩(wěn)態(tài)觸發(fā)器方法需要針對不同頻率的信號采用不同的時間參數(shù)配置;(3)數(shù)字去抖動方法中,RC濾波方法只能針對慢變信號,因為快變信號將被濾除或附加一定的相移P時延,而軟件設(shè)計的方法需要消耗大量的器件資源和時間資源,使得處理任務(wù)加重,這在有些時候是不容許的,對于優(yōu)化設(shè)計則需要長期的經(jīng)驗才能有效避免。
總體上,上面的方法在每次設(shè)計時都將讓我們權(quán)衡利用,效果有時也不盡人意。我們這里提出的智能寬帶去抖動的方法可以解決大部分的問題,對模擬和數(shù)字信號產(chǎn)生的抖動均有效。由于是基于CPLD硬件的設(shè)計,方便改進,還可事先不必確切知道哪個IPO口輸入的信號需要去抖動,同時不浪費其他硬件和軟件資源。在實際應(yīng)用中可以針對可能產(chǎn)生邊沿抖動的所有信號進行去抖動處理,只要器件資源足夠。
智能寬帶去抖動原理
當我們需要進行較復(fù)雜的電路設(shè)計時,經(jīng)常用到可編程器件,這樣可以使得硬件軟件化。實際使用時,可以針對引入的某個或幾個信號進行去抖動處理,使設(shè)計得到簡化。當信號輸入CPLD時,首先進行去抖動處理,形成規(guī)范的脈沖波形后再進行后續(xù)信號處理。
無論是在模擬電路中還是在數(shù)字電路中形成的信號邊沿的抖動,最終在送入CPLD的數(shù)字脈沖信號上都有相同的表現(xiàn)特征:緊跟在真實上(下)邊沿后面有多個負(正)的虛假窄脈沖。因而在CPLD中我們可以采用相同的方法來進行邊沿去抖動處理。由于信號頻段不同,抖動時間也會不同,正確處理的前提條件:(1)信號邊沿抖動時間小于信號周期的四分之一;(2)信號頻率小于器件工作頻率的八分之一。第一條是防止實際邊沿界定不準,第二條是保證抖動范圍可靠界定。對于頻率未知情況,可以對頻率進行分段,配合少量軟件編程,針對信號頻段可以進行智能分段處理。
具體實現(xiàn)時,設(shè)置三個觸發(fā)器:上升沿檢測觸發(fā)器B、下降沿觸發(fā)器C以及波門定時觸發(fā)器D。其中,上升沿觸發(fā)器是在信號上升沿到來時變成高電平,下降沿觸發(fā)器是在信號下降沿到來時變成高電平,抖動定時觸發(fā)器當前兩個觸發(fā)器是在前兩個觸發(fā)器之一變成高電平時變成高電平。前兩個觸發(fā)器在抖動定時觸發(fā)器清零時同時被清零,而抖動定時觸發(fā)器清零時間由信號頻率對應(yīng)邊沿抖動范圍決定。時序如圖4所示。其中,為觀察方便,下降沿觸發(fā)器變成高電平的時間拖后了一些。由圖可見,輸入信號在前后沿均有雜亂的毛刺,用常規(guī)方法消除這種抖動很困難,模擬去抖動方法無能為力,常規(guī)的數(shù)字方法需要消耗軟件和硬件資源,而且容易形成誤操作,用我們的方法就很簡潔。
A信號第一次電平變化時(t1時刻),出現(xiàn)上升沿,B觸發(fā)器開始觸發(fā),同時引發(fā)D觸發(fā)器觸發(fā),第一次下降沿到來時(即第一個毛刺,t2時刻),C觸發(fā)器觸發(fā),在設(shè)定定時范圍內(nèi),三個觸發(fā)器均保持不變。定時結(jié)束時(t3時刻),D觸發(fā)器被清零,同時使B和C觸發(fā)器清零。從上面可以看出來,只要t3時刻不超過t4時刻則不破壞原來信號的正負區(qū)間。
在A信號實際下降沿到來時刻(t4時刻),相當于定時觸發(fā)器清零后第一次下降沿到來時刻,此時C觸發(fā)器又受到觸發(fā),同時引發(fā)D觸發(fā)器觸發(fā)。B觸發(fā)器在第一個毛刺到來時刻(t5時刻)得到觸發(fā),與前面相同。在這次定時沒有結(jié)束前三個觸發(fā)器變成不變,直到定時結(jié)束時刻(t6時刻),三個觸發(fā)器同時被清零。余下依此類推。
圖4 去抖動電路時序圖
最后,我們來看一下D觸發(fā)器波形,它在A信號正半周期間正負變化一次,在A信號負半周期間正負再變化一次,因此,只需用D觸發(fā)器的上升沿來觸發(fā)E信號,即可準確的恢復(fù)出沒有抖動的A信號來,如圖所示。如果A信號是周期信號,則E信號就是D信號的二分頻信號(注意用信號本身與D信號來對齊正半周就行)。
上面是有信號邊沿抖動的情況的分析,現(xiàn)在再來看看信號沒有邊沿抖動的情況??梢韵胂?,在t2到t3時刻期間C觸發(fā)器沒有觸發(fā),但B和D觸發(fā)器依然觸發(fā),因為A信號存在上升沿,在t5到t6時刻期間B觸發(fā)器沒有觸發(fā),但C和D觸發(fā)器仍然觸發(fā),因為A信號在t4時刻存在下降沿,由此可以看出,在這種情況下,D觸發(fā)器波形沒有改變,從而可以用同樣的方法得到E恢復(fù)信號。
當信號頻率變化(或根本不是周期信號,只是一個個脈沖群)時,只要設(shè)置的波門定時范圍滿足前面提出的兩個條件,則仍然可以適用。如果在多倍頻程變化時,由于信號邊沿抖動寬度不一致,低端的抖動范圍可能已經(jīng)超出了高頻端周期的一半,不能進行準確還原,因此需要進行分段處理。在輸入信號頻率完全未知的情況下,可以實際測量參數(shù),根據(jù)最穩(wěn)定的情況來確定分段的界限和參數(shù),如果配合少量的軟件編程,提取信號穩(wěn)定的段結(jié)果即可。這樣,就可以在很寬的頻帶內(nèi),自動選擇頻段參數(shù)以正確進行去抖動處理。
智能去抖動方法的性能
從上面分析可以看出,只需用四個觸發(fā)器加一個定時器即可,定時器的位數(shù)由CPLD時鐘以及信號頻率決定,一般做到八位就非常好了。相對于其他方法,該智能去抖動方法有以下優(yōu)點:
(1)軟硬件上花費資源很少,但性能很好;
(2)能準確界定和還原信號的正半周和負半周;
(3)可在較寬的頻段里適用;
(4)不附帶引入的相位偏移等任何破壞原信號的信息。
應(yīng) 用
下面是該去抖動技術(shù)應(yīng)用于模擬信號頻率測量的實際情況。
模擬信號的測頻方法比較多,以測周期方法為例。信號輸入到CPLD后,進行電平比較,對于有邊沿抖動的信號先用智能去抖動方法進行去抖動處理。然后對恢復(fù)信號進行邊沿檢測,啟動計數(shù),測量信號周期內(nèi)信號計得的采樣個數(shù),即可測得信號周期,從而計算出信號頻率。如果沒有去除抖動,測量結(jié)果勢必有非常大的誤差。一個實際的頻率測量電路如圖5所示。
圖5 頻率測量電路框圖
這里,前面的電路主要用于信號的匹配、放大和調(diào)理處理,CPLD與MPU 完成智能去抖動、測頻和計算、顯示功能。實際測量當中,對于20Hz~20kHz信號只需三個頻段就能可靠解決抖動的問題。由于同時采用了分頻方法,實際測量精度在頻率高端達到1Hz。