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