1. 程式人生 > >【 FPGA 】組合邏輯中的競爭與險象問題(一)

【 FPGA 】組合邏輯中的競爭與險象問題(一)

針對單輸出的組合邏輯進行簡單分析,而多輸出的組合邏輯可分解為多個但輸出的組合邏輯。

單輸入的組合邏輯

對於一個簡單的非閘電路,它的輸出將永遠跟隨輸入變化,即使考慮到門延遲、線延遲的影響,輸出波形最多也就是比輸入波形在時間上滯後一些罷了,並不會出現非預期的現象。

但對於單輸入的組合邏輯,情況就不一樣了。

如下圖:

輸入為A先於not(A)A非到達或門,因此,如果初始令A為1,則NOT(A)為0,之後A變化為0,則由於A先到或門,導致有一小段零脈衝出現在輸出中,這是非預期的。

當然,沒人會無聊到設計這樣的一個電路,但這個電路能說明一些大問題,後面我們會看到,但輸入組合邏輯會產生競爭現象也被用來說明問題。

多輸入組合邏輯

1 多個輸入不同時變化

2 多個輸入同時變化

3 僅有一個輸入變化

1 多個輸入不同時變化

若多個輸入變化的間隔比較大,那麼可以將其分解為若干個時刻,每個時刻有“多個輸入同時變化”,“僅有一個輸入變化”,然後再獨立分析各個時刻即可;若這些輸入變化間隔較小,那麼可以將其等效轉化為“多個輸入同時變化”的問題,因為我們可以將這些輸入變化的時間差等效摺合到傳輸路徑中的線延遲中去。

2多個輸入同時變化

在多輸入組合電路中,有兩個及以上個輸入變數同時發生了變化,雖然從輸入決定輸出的理論出發,組合邏輯的輸出應該直接變化到新輸入對應的輸出值,但是由於延遲的存在,現實中情況往往並非如此。

僅以下圖為例:

由於路徑延遲不一致,所以多個輸入(A和B)同時變化時,到達與門的時刻也不一致,所以會導致有非預期的輸出出現,那卡諾圖來分析問題:

F A = 0 A = 1
B = 0 0 0
B = 1 0 1

初始值A 為0,B為1,則F位於左下角,變化後A為1,B為0,F位於右上角,由於A的變化先於B到達與門,故有一小段時間F為1,也就是F從左下角右移了一格,之後上移一格到目的地。

從這個卡諾圖中我們還可以看到,如果初始值A為1,B為0,那麼A和B同時變化到A為0,B為1,會不會出現非預期的值呢?

不會,因為A的變化先到達與門,所以F先左移一格,仍然是0,再下移一格,還是0.

3 僅有一個輸入變化

以這個電路為例:

B和C都是固定值,僅有A變化,屬於僅有一個輸入變化,但是請看到,A變化後緊接著兩個與門的結果會變化,再到達或門,這又變成了有多個輸入同時變化問題了。