3、2 采樣法
由于冒險(xiǎn)多出現(xiàn)在信號(hào)發(fā)生電平跳變的時(shí)刻, 即在輸出信號(hào)的建立時(shí)間內(nèi)會(huì)產(chǎn)生毛刺, 而在保持時(shí)間內(nèi)不會(huì)出現(xiàn), 因此, 在輸出信號(hào)的保持時(shí)間內(nèi)對(duì)其進(jìn)行采樣, 就可以消除毛刺信號(hào)的影響, 常用的采樣方法有2 種: 一種使用一定寬度的高電平脈沖與輸出相與, 從而避開了毛刺信號(hào), 取得輸出信號(hào)的電平值。這種方法必須保證采樣信號(hào)在合適的時(shí)間產(chǎn)生, 并且只適用于對(duì)輸出信號(hào)時(shí)序和脈沖寬度要求不嚴(yán)的情況。另一種更常見的方法叫鎖存法, 是利用D 觸發(fā)器的輸入端D 對(duì)毛刺信號(hào)不敏感的特點(diǎn), 在輸出信號(hào)的保持時(shí)間內(nèi), 用觸發(fā)器讀取組合邏輯的輸出信號(hào)。由于在時(shí)鐘的上升沿時(shí)刻, 輸出端Q = D , 當(dāng)輸入的信號(hào)有毛刺時(shí), 只要不發(fā)生在時(shí)鐘的上升沿時(shí)刻, 輸出就不會(huì)有毛刺。這種方法類似于將異步電路轉(zhuǎn)化為同步電路, 實(shí)現(xiàn)簡(jiǎn)單, 但同樣會(huì)涉及到時(shí)序問題。
3、3 吸收法
由于產(chǎn)生的毛刺實(shí)際上是高頻窄脈沖, 故增加輸出濾波, 在輸出端接上小電容C 就可以濾除毛刺。但輸出波形的前后沿將變壞, 在對(duì)波形要求較嚴(yán)格時(shí), 應(yīng)再加整形電路, 該方法不宜在中間級(jí)使用。
3、4 延遲法
因?yàn)槊套罱K是由于延遲造成的, 所以可以找出產(chǎn)生延遲的支路。對(duì)于相對(duì)延遲小的支路, 加上毛刺寬度的延遲可以消除毛刺。但有時(shí)隨著負(fù)載增加, 毛刺會(huì)繼續(xù)出現(xiàn),而且, 當(dāng)溫度變化, 所加的電壓變化或要增加邏輯門時(shí), 所加的延遲是不同的, 必須重新設(shè)計(jì)延遲線, 因而這種方法也是有局限性的。而且采用延遲線的方法產(chǎn)生延遲會(huì)由于環(huán)境溫度的變化而使系統(tǒng)可靠性變差。
3、5 硬件描述語言法
這種方法是從硬件描述語言入手, 找出毛刺產(chǎn)生的根本原因, 改變語言設(shè)計(jì), 產(chǎn)生滿足要求的功能模塊, 來代替原來的邏輯功能塊。在圖1 電路中, 一個(gè)3 位計(jì)數(shù)器可能會(huì)在011 到100 和101 到110 發(fā)生跳變時(shí)產(chǎn)生毛刺, 究其原因是因?yàn)橐淮斡?位發(fā)生跳變, 可以采用VHDL 語言對(duì)計(jì)數(shù)器編寫如下, 產(chǎn)生的計(jì)數(shù)模塊代替原來普通的計(jì)數(shù)器。
subdesign modcount
(clk, reset: input; q[2110 ]: output; )
variable
counter3
:MACH IN E O F B ITS ( r [2110 ])
W ITH STA TES ( r0= B"101" ,
r1= B"100" ,
r2= B"000" ,
r3= B"001" ,
r4= B"011" ,
r5= B"010" ,
r6= B"110" ,
r7= B"111") ;
begin
q[ ]= rr [ ];
counter31reset= reset;
counter31clk= clk;
CA SE counter3 IS
w hen r0= > counter3= r1;
w hen r1= > counter3= r2;
w hen r2= > counter3= r3;
w hen r3= > counter3= r4;
w hen r4= > counter3= r5;
w hen r5= > counter3= r6;
w hen r6= > counter3= r7;
w hen r7= > counter3= r0;
END CA SE;
end;
注意在新的計(jì)數(shù)器中, 每次狀態(tài)發(fā)生改變時(shí)Q 0, Q 1,Q 2 只有1 位發(fā)生跳變, 從根本上消除了毛刺。但計(jì)數(shù)器的輸出狀態(tài)沒有規(guī)律, 不便于其他電路利用。如果希望計(jì)數(shù)器的輸出狀態(tài)有規(guī)律變化以便其他電路使用, 可以考慮采用雙輸出電路, 一路是單信號(hào)輸出, 一路是正常計(jì)數(shù)輸出。這種方法從根本上消除了毛刺產(chǎn)生的根源, 具有普遍的意義, 對(duì)系統(tǒng)也不會(huì)產(chǎn)生影響, 是最為可靠的方法, 其不利之處是這種方法對(duì)VHDL 語言要求比較高, 必須對(duì)電路的工作狀態(tài)及其轉(zhuǎn)變有全面的分析和掌握, 而隨著電路的復(fù)雜度提高, 毛刺產(chǎn)生的來源繁雜, 實(shí)現(xiàn)起來比較困難。
對(duì)于一般情況下產(chǎn)生的毛刺, 可以嘗試用D 觸發(fā)器來消除。但用D 觸發(fā)器消除時(shí), 有時(shí)會(huì)影響到時(shí)序, 需要考慮很多問題。所以應(yīng)根據(jù)不同情況, 仔細(xì)地分析毛刺產(chǎn)生的來源和毛刺的性質(zhì), 結(jié)合系統(tǒng)資源選擇具體辦法, 消除毛刺的影響。
4 具體實(shí)例
在實(shí)際應(yīng)用中要對(duì)一個(gè)周期同步脈沖信號(hào)進(jìn)行檢測(cè),要求若在給定的時(shí)間內(nèi)沒有檢測(cè)到同步信號(hào)則給出一定脈沖寬度的高電平, 作為復(fù)位信號(hào)。設(shè)計(jì)思想是采用一個(gè)計(jì)數(shù)器, 當(dāng)有同步信號(hào)時(shí)對(duì)其清零, 并同時(shí)開始計(jì)數(shù), 根據(jù)給定時(shí)間和系統(tǒng)時(shí)鐘周期設(shè)定計(jì)數(shù)器的模數(shù), 經(jīng)過給定的時(shí)間后輸出高電平, 滿足寬度后再置低。
實(shí)際要求檢測(cè)時(shí)間大約1 s, 脈沖寬度保持在20ms左右, 采用5 片74161 級(jí)聯(lián), 第5 片計(jì)數(shù)器的ROC 接D 觸發(fā)器的使能端。同步信號(hào)輸入后, 清零并開始計(jì)數(shù), 若不再出現(xiàn)同步脈沖, 經(jīng)16^5 個(gè)時(shí)鐘周期后, 第5 片的RCO端輸出一個(gè)高電平, 使觸發(fā)器的Q 輸出D (高電平) , 再過16^33 2個(gè)時(shí)鐘周期后使第4 片的QA , QB, QC, QD 接組合門電路輸出低電平, 接到D 觸發(fā)器的計(jì)數(shù)器預(yù)制端,使Q 輸出為零。這樣就實(shí)現(xiàn)經(jīng)一定延時(shí)后的一定寬度的脈沖。經(jīng)仿真結(jié)果如圖4 所示。
評(píng)論