組合邏輯毛刺消除 競爭冒險

2021-10-21 13:33:32 字數 2440 閱讀 1474

訊號在 ic/fpga 器件中通過邏輯單元連線時,是存在延時的。延時的大小不僅和連線的長短和邏輯單元的數目有關,而且也和器件的製造工藝、工作環境等有關。因此,訊號在器件中傳輸的時候,所需要的時間是不能精確估計的,當多路訊號同時發生跳變的瞬間,就產生了「競爭冒險」。

訊號由於經由不同路徑傳輸達到某一匯合點的時間有先有後的現象,就稱之為競爭,英文名race;由於競爭現象所引起的電路輸出發生瞬間錯誤的現象,就稱之為冒險,英文名hazard或者risk。有競爭不一定有冒險,但出現了冒險就一定存在競爭。發生冒險時往往會出現一些不正確的尖峰訊號,這些尖峰訊號就是「毛刺」。

毛刺是數位電路設計中的棘手問題,它的出現會影響電路工作的穩定性、可靠性,嚴重時會導致整個數字系統的誤動作和邏輯紊亂。

首先我們先來看下毛刺是如何產生的。下圖是乙個簡單的組合邏輯電路,由乙個或門和乙個與門構成,輸入訊號是 a、b 和 c,輸出訊號是 y。

從圖中,我們可以假設或閘電路的延遲是 1ns,路徑延遲也有時間,c 到 y 閘電路的延遲是 2ns, a 到 d 閘電路的延遲是 1ns,那麼我們可以畫出乙個時序圖如下:

e 點為 a 和 b 訊號相或後到達 y 門輸入端的訊號,總共延遲為 3ns,f 點為 c 訊號到達 y 門輸入端的訊號,總共傳輸延遲為 2ns,然後 f 訊號和 e 訊號做與邏輯處理,得到 y 訊號。y 訊號最終由乙個1ns 的脈衝訊號,這個訊號就是路徑延遲導致的乙個毛刺訊號。假設不考慮閘電路延遲和訊號傳輸延遲,y 應該是一直為低電平的。這個就是組合邏輯的毛刺訊號產生的由來。

1、組合邏輯輸出加暫存器

這是一種比較常用的去除毛刺的方法。去毛刺原理就是用乙個暫存器去讀帶毛刺的訊號,利用暫存器對輸入訊號的毛刺不敏感的特點(暫存器一般只在時鐘跳變沿對輸入訊號敏感),去除訊號中的毛刺。在實際電路中,對於簡單的邏輯電路,尤其是對訊號中發生在非時鐘跳變沿的毛刺訊號,去除效果非常的明顯。

但是如果毛刺訊號發生在時鐘訊號的跳變沿,暫存器的效果就沒有那麼明顯了(加暫存器以後的輸出端,仍含有毛刺)。另外,暫存器的使用還會給系統帶來一定的延時,特別是在系統級數較多的情況下,延時也將變大,因此在使用暫存器去除毛刺的時候,也要視情況而定,並不是所有的毛刺都可以用暫存器來消除。

2、訊號同步法

設計數位電路的時候採用同步電路設計可以大大減少毛刺。由於大多數毛刺都比較短(大概幾個納秒),只要毛刺不出現在時鐘跳變沿,毛刺訊號就不會對系統造成危害了。因此一般認為,只要在整個系統中使用同乙個時鐘就可以實現系統同步。但是,時鐘訊號在 fpga 器件中傳遞時是有延時的,我們無法預知時鐘跳變沿的精確位置。也就是說我們無法保證在某個時鐘的跳變沿讀取的資料是乙個穩定的資料,尤其是在多級設計中,這個問題就更加突出。因此,做到真正的「同步」就是去除毛刺訊號的關鍵。所以同步的關鍵就是保證在時鐘的跳變沿讀取的資料是穩定的資料而不是毛刺資料。

下面介紹兩種具體的訊號同步方法。

(1)訊號延時同步法

訊號延時法,它的原理就是在兩級訊號傳遞的過程中加乙個延時環節,從而保證在下乙個模組中讀取到的資料是穩定後的資料,即不包含毛刺訊號。這裡所指的訊號延時可以是資料訊號的延時,也可以是時鐘訊號的延時。

舉個例子,比如還是下面的這個毛刺產生電路,如果把 c 到 f 的延遲增加 1ns,就是 c 到 f 的延遲總共3ns,和 a 到 e 的延遲一致,那麼此時 y 的輸出就不會有毛刺產生。

(2)狀態機控制

使用狀態機也可以實現訊號的同步和消除毛刺的目的。在資料傳遞比較複雜的多模組系統中,由狀態機在特定的時刻分別發出控制特定模組的時鐘訊號或者模組使能訊號,狀態機的迴圈控制就可以使得整個系統協調運作,同時減少毛刺訊號。那麼只要我們在狀態機的觸發時間上加以處理,就可以避免競爭冒險,從而抑制毛刺的產生。

3、格雷碼計數器

對於一般的二進位制或十進位制計數器,在計數時,將有多位訊號同時跳變。例如乙個 4bit 二進位制計數器,由「1111」轉換為「0000」時,就會產生毛刺。此時,使用格雷碼計數器將避免毛刺的出現,因為格雷碼計數器的輸出每次只有一位跳變。

舉乙個組合邏輯加暫存器去除毛刺的方法,先畫出加暫存器後的電路圖。

從圖中可以看出,加了一級暫存器後,毛刺訊號不會被暫存器取樣到,因為暫存器只在時鐘的跳變沿變化,毛刺訊號是組合邏輯產生的,實際電路裡面組合邏輯的訊號變化一般也是由暫存器變化引起的訊號變化,所以一般發生在時鐘跳變之後,而暫存器只在時鐘的跳變沿對輸入訊號取樣,所以毛刺訊號一般不會被取樣到,這種加暫存器過濾毛刺的方法就是基於這一點設計的。

組合電路中的競爭與冒險

組合電路中的競爭與冒險 1.競爭與冒險 由於邏輯門存在延遲時間以及訊號的傳輸路徑不同,當輸人訊號電平發生瞬間變化時,電路可能產生與穩態時邏輯功能不一致的錯誤輸出,這種現象就是電路中的競爭與冒險。例如,乙個簡單組合電路如下圖所示,若不考慮門的延遲時間,則有f a a 0,穩態時f應恒為0。若考慮門的延...

FPGA知識點 競爭冒險及消除辦法

如果在某乙個時刻,從組合邏輯的某乙個輸入端到其輸出端存在兩條以上的電訊號通路時,就稱該組合邏輯在當前狀態下針對這個輸入存在競爭。當b 1 c 1時,電路可簡化為 輸入a先於!a到達或門,因此,會導致有一小段零脈衝出現在輸出中,這是非預期的。訊號由於經由不同路徑傳輸到達某一匯合點的時間有先有後的現象,...

數位電路與系統 組合邏輯電路的競爭冒險現象3

本節談論邏輯冒險 1.初論邏輯冒險 定義 單個訊號變化引起的冒險 多個訊號變化引起的冒險,且不是功能冒險。最本質是門延遲引起的冒險。延時時間長是指後變,延 字有延長之意,相當於有慣性。在這裡,重點是整個門的延遲,是前面級數中,閘電路輸血的延遲 本質還是輸入變化的延遲,遲鈍,慢半拍 我們將邏輯冒險和前...