本文介紹開發組合邏輯電路時可能發生的意外開關事件,稱為危險。
本文是關于使用邏輯門進行組合電路設計和仿真的介紹性系列文章的第二部分。在上一篇文章中,我們介紹了 組合邏輯電路 以及如何簡化它們。
在這里,我們將探討靜態 0 危害、靜態 1 危害和動態危害。
什么是邏輯危險?
在復雜的邏輯電路中,輸出端可能會出現不需要的臨時開關事件。圖1顯示了組合邏輯電路中可能發生的三種危險:
靜態 0 危險: 輸出在本應保持 0 時暫時更改為 1
靜態 1 種危險: 輸出在本應保持 1 時暫時更改為 0
動態危險: 輸出在應該進行單個邏輯轉換時會多次更改;從 0 到 1 或從 1 到 0
圖1. 三種類型的組合邏輯危害
讓我們檢查圖2中的簡單電路,看看靜態0危險是如何產生的。
圖2. 具有靜態0-危險的組合邏輯電路
我們假設所有門都具有相同的傳播延遲時間常數 d。在圖3的時序圖中,輸入a = b = 0。輸入 c 從邏輯 0 變為 1 后的一個柵極延遲,輸出 c‘
和 x 的狀態也發生變化。由于 x 和 y 現在(暫時)都設置為 1,這會導致最終輸出 f 從 0 變為 1 的后續變化。
但是,當輸出 f 的狀態發生變化時,其輸入 y 也會發生變化,從 1 到 0。在 y 的這種變化通過最終門傳播后,輸出 f
返回到其最終狀態零。
以下是靜態 0 危害的示例:
圖3. 顯示靜態 0 危險時的序圖
如果我們查看圖2電路的Karnaugh圖,我們可以看到靜態0危險的機會。對于 0
輸出,有兩個相鄰但不相交的最小項,由藍色和棕褐色陰影突出顯示。對于和邏輯函數的乘積,共享最小項未覆蓋的任何兩個相鄰零都可能導致靜態 0 危險。
圖4. 顯示靜態-0危害的卡諾地圖
使用和的乘積從中推導出的邏輯函數為:
當 a 和 b 均為 0 時,輸入 c 可以在 0 和 1 狀態之間更改,而無需更改 f
的“最終”值。但是,由于某些電路實現的傳播延遲不同,因此可能存在靜態0危險。
修復組合邏輯電路中的靜電危害
我們可以消除圖2電路中的靜態-0危害,方法是在兩個相鄰項周圍添加一個額外的分組,如圖5中的紅色突出顯示框所示。
圖5. 用于消除靜態 0 危害的 Karnaugh 地圖分組
新的邏輯函數是:
從純數字邏輯的角度來看,序列中的第三個和項是不必要的。但是,當 a 和 b 均為 0 時,這個額外的總和 保持為 0。因此,它不受先前導致靜態-0危害的c變化的影響。
使用這種冗余邏輯,我們可以創建一個執行相同邏輯功能的新電路,但沒有靜態0危險。這個新電路如圖6所示。
圖6. 消除靜態0危險的組合邏輯電路
發現并消除靜態-1危害
識別和修復靜態 1 危害與靜態 0 危害基本相同。使用 Karnaugh 映射查找未被同一最小項覆蓋的相鄰邏輯 1 輸出。對于發現的每個相鄰的 1
組合,添加一個額外的分組以消除潛在危險。
異步邏輯與同步邏輯
與危險相關的瞬態脈沖問題在同步電路中很少成為問題。它們旨在在每個時鐘周期內留出足夠的時間來解決靜態和動態危險的毛刺。
另一方面,可以立即響應信號變化的異步邏輯電路可能會受到很大影響。例如,等待響應正 0 到 1 邏輯轉換的異步邏輯電路會在圖 3
的時序圖中錯誤地做出反應。即使在主要同步設計中,系統復位和當前信號通常也是異步的,因此容易受到危險的影響。
-
電路
+關注
關注
173文章
5998瀏覽量
173824 -
邏輯
+關注
關注
2文章
834瀏覽量
29589 -
組合邏輯電路
+關注
關注
6文章
71瀏覽量
14786
發布評論請先 登錄
相關推薦
組合邏輯電路的分析與設計-邏輯代數

什么是組合邏輯電路 如何使用verilog描述組合邏輯電路

評論