本文為清華大學開放式課程上課心得整理。
現在要試著用 NAND 與 NOR 邏輯閘來實現電路。Two Level 可以使用 DeMorgon 來處理,參照下圖:
一般情況下,SOP form 轉換成 NAND Gate 較 NOR Gate 容易,因此在實務上比較常見,POS 則相反。
多層電路的做法也相同,利用 inverter 將電路轉換為等價的 NAND Gate 或NOR Gate 即可:
Multi-output Circuit Realization
前面討論的都是 single output 的狀況,可以用化簡的方式處理電路,但如果是有一個以上輸出結果的電路,將單獨每個輸出都化到最簡可能不會是最佳解。以下圖為例,根據 minterm expansion,可以得出每個輸出的最簡式:
實現成邏輯閘之後,會得到下圖左方的電路,共需要 9 個邏輯閘與 21 個 input。
但如果仔細觀察每個算式,會發現 F1 與 F3 的 input AB 可以共享,此時可以用前面談過的 fanout 概念,讓一個訊號成為兩個邏輯閘的輸入源;而 F2 也可以改寫為 ABC’ + ACD + A’CD,讓 ACD、A’CD 也共享,改寫之後電路圖如下圖右,邏輯閘降至 7 個、input 降至 18 個。在這個例子中,在 F2 不要化到最簡的狀況下,電路表現反而比較好。
下圖是幾個不做最佳化以節省邏輯閘與輸入數量的範例:
不過也不是所有的電路都可以用共享的方式得到最好的結果。以下圖為例,a’c’d’ 以及 b’c’d’ 都可以共享,所以可以得到一個 8 個邏輯閘、26 個 input 的電路;而如果 F1 與 F2 都取用最簡化算式,得到的電路圖只需要 7 個邏輯閘、18 個 input,反而是不分享的結果比較好。
到底何時該使用最簡化算式、何時該共享?原則如下:
・在複數輸出的電路中,如果本來的 essential prime implicants 在兩個以上的函式中同時存在,此時該項便不稱作 essential prime implicant。
・一般來說,如果共享必須拆掉 essential prime implicant 就不做。
複數輸出的電路最佳化是一個非常困難的議題,因此這只是一般設計電路的通用建議,當條件更加複雜時,要考慮的因素就會更多,電路最佳化是一個研究議題,此處按下不表,僅介紹基本原則。
接下來再用一個例子討論共享。以下圖為例,這是一個過三碼轉換的電路,真值表打 X 的地方為 don’t care:
畫成卡諾圖之後,可以得出每個輸出的算式結果如下圖。
前面的例子都是共享某一個單獨的項,但在這個例子中,可以共享的還有合起來的項(sum of terms)。例如原本的 w 在卡諾圖中的算式是 a + bc + cd,但可以把 b 提出來,轉換成 a + b( c + d ),就可以和化簡後的 x 共享 ( c + d ),而且效果會更好。
前面說過,single output 可以將邏輯閘全部用 NAND 或 NOR 實現,這件事在 multiple output 中也成立,其中有一個很重要的關鍵點:當共享的邏輯閘出現 inverter 不對稱時(即:其中一個邏輯閘輸出需要反轉,另一個不需要),在不需要反轉的邏輯閘電路上,要再加一個 NOR Gate 將輸入再次反轉,如此才會得到正確結果。