黃秋萍,王漢祥,李富華
(蘇州大學(xué),江蘇 蘇州 215021)
數(shù)據(jù)常常通過人工操作開關(guān)的方式進(jìn)入數(shù)字系統(tǒng)。這些開關(guān)有很多形式,從計(jì)算機(jī)鍵盤的單個(gè)按鍵下的彈簧觸點(diǎn)到數(shù)控機(jī)床上的按鈕開關(guān)。所有這些機(jī)械開關(guān)的通用特性是當(dāng)動(dòng)作時(shí)它們的彈簧觸點(diǎn)有抖動(dòng)的趨勢(shì),從而引起持續(xù)幾毫秒的短時(shí)間的接觸和斷開。
在給定系統(tǒng)中,如果閉合的電氣開關(guān)代表邏輯1,而斷開的觸點(diǎn)代表邏輯0,接觸抖動(dòng)會(huì)產(chǎn)生嚴(yán)重的問題。因?yàn)楫?dāng)想要一個(gè)單獨(dú)的1時(shí)可能會(huì)產(chǎn)生多個(gè)1和0,所以必須在開關(guān)輸入端設(shè)計(jì)防抖動(dòng)電路以防止問題的發(fā)生。
可將鎖存器作為圖1所示的非常方便的防抖動(dòng)電路。
當(dāng)圖1所示的開關(guān)打在上邊的位置時(shí),電壓V(相當(dāng)于邏輯1)被加到S的輸入上,沒有電流流進(jìn)下面的電阻,輸入R將對(duì)應(yīng)于邏輯0的接地電位,相當(dāng)于S=1,R=0;同理打在下邊的位置時(shí),相當(dāng)于S=0,R=1;在撥動(dòng)過程中相當(dāng)于S=0,R=0;具體仿真波形見圖2。
圖2中S高電平前后的小毛刺模擬“抖動(dòng)”,由圖可見Q信號(hào)上已無(wú)抖動(dòng)。但這是一種理想情況,當(dāng)S抖動(dòng)時(shí)R保持為低電平,如果開關(guān)從S打向R時(shí),S和R同時(shí)發(fā)生抖動(dòng),其結(jié)果見圖3。
由圖3可見,抖動(dòng)并未被完全消除。
利用RC積分電路來達(dá)成雜波的濾除與波形修整的電路,如圖4所示。在S1按下的瞬間由于接觸彈跳的關(guān)系,會(huì)使A點(diǎn)電壓呈現(xiàn)高速的斷續(xù)現(xiàn)象,在S1斷開時(shí)亦然,如圖5所示。然而由于電容兩端電壓需由電壓經(jīng)電阻慢慢充電才會(huì)上升,使得B點(diǎn)電位緩步上升;S1斷開時(shí),電容電壓經(jīng)R 放電,使B 點(diǎn)電壓緩緩下降。此變化經(jīng)史密特反相修整后,可得到標(biāo)準(zhǔn)負(fù)脈沖波輸出。
該電路確實(shí)消除了抖動(dòng)現(xiàn)象,但必須用到電阻、電容和史密特觸發(fā)器,若用在模擬電路中,能與模擬電路的工藝兼容;但在數(shù)字電路中就不便于集成,即使能集成,所占的版圖面積也較大,下面要介紹的是適合于FPGA實(shí)現(xiàn)的防抖電路。
由于FPGA內(nèi)富含觸發(fā)器,所以該電路用了四個(gè)D型觸發(fā)器和一個(gè)RS觸發(fā)器,電路上半部分為消抖電路,下半部分為微分電路。
Key_press信號(hào)經(jīng)過兩級(jí)D觸發(fā)器延時(shí)處理后(第一級(jí)D觸發(fā)器的同步功效大于延時(shí),所以為了使延時(shí)時(shí)間準(zhǔn)確,延時(shí)電路必須有兩級(jí)),再用RS觸發(fā)器進(jìn)行處理。
假設(shè)一般人的按鍵速度是10次/s,亦即按鍵時(shí)間是100ms,所以按下的時(shí)間可估算為50ms,如果取樣信號(hào)clk_div頻率為10ms(100Hz),則可取樣5次。對(duì)于不穩(wěn)定的噪聲在5ms以下,則至多可取樣一次。RS觸發(fā)器前接上與門后,則RS的組態(tài)為:(1)S=0,R=0,pulse不變;(2)S=1,R=0,pulse=1;(3)S=0,R=1,pulse=0,即必須抽樣到兩次1(認(rèn)為是穩(wěn)定地按下按鍵)才會(huì)輸出1,兩次0(認(rèn)為是穩(wěn)定地放掉按鍵)才會(huì)輸出0,該部分電路已可完成消抖的功能。
為了避免因信號(hào)長(zhǎng)度不同而使計(jì)數(shù)器產(chǎn)生錯(cuò)誤,再接一級(jí)微分電路,然后才接至計(jì)數(shù)器電路,電路的仿真波形如圖7所示。從pulse波形可以發(fā)現(xiàn),由外部輸入類似按鍵的Key_press信號(hào)的前后噪聲都被消除掉了;而且再經(jīng)過一次微分后,輸出信號(hào)single_pulse高電平的寬度只有一個(gè)時(shí)鐘脈沖周期。
該電路適用于FPGA實(shí)現(xiàn)的芯片設(shè)計(jì),因FPGA內(nèi)富含觸發(fā)器,若是ASIC則要制版流片,成本太高且占用了太多的芯片面積,下面要介紹的是適用于ASIC的節(jié)省面積的消抖電路。
此電路結(jié)構(gòu)與圖1、圖4的防抖動(dòng)電路有部分相似,在這兩個(gè)電路基礎(chǔ)上做了改進(jìn),詳見圖8,對(duì)此電路做一簡(jiǎn)單仿真,似乎并不能起消抖的作用,仿真波形見圖9。
對(duì)圖8在CSMC 0.8μm工藝模型下做瞬態(tài)分析可以得到如圖10的波形圖。
從圖10可知,當(dāng)高低電平變化間隔時(shí)間小于6ns時(shí),輸出將一直保持高電平,這便意味著該電路能消除6ns以下的抖動(dòng),大于6ns的抖動(dòng)將不能被消除。
另外,靠近S端的兩個(gè)反相器的寬長(zhǎng)比的設(shè)置要特別注意,N管的寬長(zhǎng)比要大于P管的,通過調(diào)節(jié)寬長(zhǎng)比可以微調(diào)防抖動(dòng)時(shí)間。
文章對(duì)四種防抖動(dòng)開關(guān)電路進(jìn)行了分析和仿真,這四種電路各有其優(yōu)缺點(diǎn),可以根據(jù)設(shè)計(jì)需要分別選用。
[1]James Palmer,David Perlman.Schaum’s Outlines Introduction to Digital Systems[M]. American,McGraw Hill companies,Inc.1993.148.
[2]周潤(rùn)景,圖雅,張麗敏.基于QuartusⅡ的FPGA/CPLD數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例[M].北京:電子工業(yè)出版社, 2007.380-381.
[3] 唐光明.基于中斷技術(shù)的開關(guān)軟件消抖算法[J].現(xiàn)代機(jī)械,2006(3):107-108.
[4]邢遠(yuǎn)秀,陳姚節(jié).鍵盤消抖電路的研究與分析[J].中國(guó)科技信息,2008(1):67-68.
[5]曾旎,奚大順,李向陽(yáng).按鍵開關(guān)的抖動(dòng)與消除方法[J].電子世界,2005(9):55-56.