利用CPLD實(shí)現(xiàn)數(shù)字濾波及抗干擾
1 濾波和抗干擾概述
單片機(jī)應(yīng)用系統(tǒng)的輸入信號(hào)常含有種種噪聲和干擾,它們來(lái)自被測(cè)信號(hào)源、傳感器、外界干擾源等。為了提高測(cè)量和控制精度,必須消除信號(hào)中的噪聲和干擾。噪聲有兩大類:一類為周期性的;另一類為不規(guī)則的。前者的典型代表為50Hz的工頻干擾,一般采用硬件濾波,使用積分時(shí)間等于20ms的整數(shù)倍的雙積分A/D轉(zhuǎn)換器,可有效地消除其對(duì)信號(hào)的影響。后者為隨機(jī)信號(hào),它不是周期信號(hào),可用數(shù)字濾波方法予以消弱或?yàn)V除。所謂數(shù)字濾波,就是通過(guò)一定的計(jì)算或判斷程序來(lái)減少干擾信號(hào)在有用信號(hào)中的比重,故實(shí)際上它是一種軟件濾波。硬件濾波具有效率高的優(yōu)點(diǎn),但要增加系統(tǒng)的投資和設(shè)備的體積,當(dāng)干擾的性質(zhì)改變時(shí)我們往往不得不重新搭接電路;軟件濾波是用程序實(shí)現(xiàn)的,不需要增加設(shè)備,故投資少、可靠性高、穩(wěn)定性好,并且可以對(duì)頻率很低的信號(hào)實(shí)行濾波,隨著干擾的性質(zhì)改變只需修改軟件即可,具有靈活、方便、功能強(qiáng)的優(yōu)點(diǎn),但要占用系統(tǒng)資源、降低系統(tǒng)的工作效率。一個(gè)傳統(tǒng)的實(shí)際系統(tǒng),往往采用軟件和硬件相結(jié)合的濾波方法,這種結(jié)合是在兩者的優(yōu)缺點(diǎn)之間尋找一個(gè)平衡點(diǎn)。
硬件抗干擾主要采用隔離技術(shù)、雙絞線傳輸、阻抗匹配等措施抑制干擾。常用的隔離措施有采用A/D、D/A與單片機(jī)進(jìn)行隔離以及用繼電器、光電隔離器、光電隔離固態(tài)繼電器(SSR)等隔離器件對(duì)開(kāi)關(guān)量進(jìn)行隔離。
軟件抗干擾主要利用干擾信號(hào)多呈毛刺狀、作用時(shí)間短等特點(diǎn)。因此,在采集某一狀態(tài)信號(hào)時(shí),可多次重復(fù)采集,直到連續(xù)兩次或多次采集結(jié)果完全一致時(shí)才視為有效。若多次采集后,信號(hào)總是變化不定,可停止采集,給出報(bào)警信號(hào)。如果狀態(tài)信號(hào)是來(lái)自各類開(kāi)關(guān)型狀態(tài)傳感器,對(duì)這些信號(hào)采集不能用多次平均方法,必須完全一致才行。在滿足實(shí)時(shí)性要求的前提下,如果在各次采集狀態(tài)信號(hào)之間增加一段延時(shí),效果會(huì)更好,能對(duì)抗較寬的干擾。對(duì)于每次采集的最高次數(shù)限額和連續(xù)相同次數(shù)均可按實(shí)際情況適當(dāng)調(diào)整。對(duì)于擾亂CPU的干擾,可以采取指令冗余和軟件陷阱等抗干擾技術(shù)加以抑制。
2 利用
oo0為經(jīng)電平轉(zhuǎn)換后接近開(kāi)關(guān)輸出的信號(hào)。當(dāng)oo0為低電平時(shí),說(shuō)明泵1未動(dòng)作,封鎖三端與門,時(shí)鐘信號(hào)clki無(wú)法通過(guò),計(jì)數(shù)器bcn3n不計(jì)數(shù)。同理,當(dāng)aa4為高電平時(shí),亦封鎖三端與門(至于aa4如何變化及作用下文有介紹)。故當(dāng)oo0為高、aa4為低時(shí),clki接通計(jì)數(shù)器CLK端。當(dāng)oo0和clr端任意一個(gè)為低時(shí),計(jì)數(shù)器清零。計(jì)數(shù)器bcn3n由MAX+PLUSII的文本編輯器編輯,其文本如下:
其輸出aa4..0等于計(jì)數(shù)器當(dāng)前的計(jì)數(shù)值。Aa4就是aa4..0的最高位當(dāng)計(jì)數(shù)值達(dá)到10H(十六進(jìn)制)時(shí),即aa4為高電平時(shí),三端與門封鎖,計(jì)數(shù)器保持10H不變,除非有清零信號(hào)。其波形如圖2所示。
由波形可知,oo0為高,計(jì)數(shù)器開(kāi)始計(jì)數(shù)。對(duì)于小的脈沖,計(jì)數(shù)器的最高位即aa4為低,認(rèn)為是干擾信號(hào);只有當(dāng)aa4為1時(shí)才認(rèn)為oo0的脈沖信號(hào)有效,并通過(guò)aa4將時(shí)鐘脈沖阻斷,使計(jì)數(shù)器值不再增加。這樣做是為了防止由于oo0的脈沖不定寬,使aa4的電平不定,后面無(wú)法進(jìn)行處理。還應(yīng)注意的是,把oo0引入了清零信號(hào)。當(dāng)信號(hào)有較多毛刺時(shí),若oo0為低時(shí)不清零則使計(jì)數(shù)器不斷累加,積累到一定程度,使aa4為1,系統(tǒng)將認(rèn)為有一有效脈沖信號(hào),產(chǎn)生誤動(dòng)作。
2.2 中斷申請(qǐng)信號(hào)產(chǎn)生
中斷申請(qǐng)信號(hào)由圖3電路生成。
圖中四個(gè)計(jì)數(shù)器的最高位接四端或門,只要有一路信號(hào)為高,或門輸出就為高,并經(jīng)過(guò)非門,輸出低電平,接于D觸發(fā)器的時(shí)鐘端。D觸發(fā)器的D端始終為高電平。D觸發(fā)器為上升沿觸發(fā)器,若輸入D為1,在時(shí)鐘脈沖的上升沿,把1送入觸發(fā)器,使Q=1。只有在CLRN端的clr信號(hào)有效時(shí),D觸發(fā)器清零,Q=0。其波形如圖4所示。
只要有一路信號(hào)為高,D觸發(fā)器時(shí)鐘端為低。當(dāng)所有4路都為低時(shí),時(shí)鐘端由低變高,在上升沿,Q變?yōu)?,發(fā)出中斷請(qǐng)求信號(hào)。
如果多路脈沖信號(hào)有重疊,例如有兩路信號(hào)發(fā)生重疊,而中斷信號(hào)只有在四路都為低時(shí)才會(huì)產(chǎn)生,因此需要對(duì)信號(hào)進(jìn)行鎖存。本設(shè)計(jì)采用D觸發(fā)器來(lái)實(shí)現(xiàn)鎖存,電路如圖5所示。
當(dāng)aa4為由低變高時(shí),a4變?yōu)楦唠娖健S蒫lr信號(hào)清零。
評(píng)論