【數位邏輯設計】Multi-Level Gate Circuits / NAND and NOR Gates Part II

朱痕染跡璧有瑕
6 min readMay 26, 2022

--

https://pixabay.com/photos/landscape-sea-cliffs-church-rocks-7115513/

本文為清華大學開放式課程上課心得整理。

現在要試著用 NAND 與 NOR 邏輯閘來實現電路。Two Level 可以使用 DeMorgon 來處理,參照下圖:

https://www.youtube.com/watch?v=cpfGFuyQi8w&list=PLS0SUwlYe8czJbz5-sRtbuTleObQE9mOa&index=40,0 分 14 秒截圖
同上,2 分 15 秒截圖
同上,10 分 12 秒截圖

一般情況下,SOP form 轉換成 NAND Gate 較 NOR Gate 容易,因此在實務上比較常見,POS 則相反。

多層電路的做法也相同,利用 inverter 將電路轉換為等價的 NAND Gate 或NOR Gate 即可:

同上,12 分 32 秒截圖
同上,15 分 35 秒截圖

Multi-output Circuit Realization

前面討論的都是 single output 的狀況,可以用化簡的方式處理電路,但如果是有一個以上輸出結果的電路,將單獨每個輸出都化到最簡可能不會是最佳解。以下圖為例,根據 minterm expansion,可以得出每個輸出的最簡式:

https://www.youtube.com/watch?v=vi9ZQS4cHVg&list=PLS0SUwlYe8czJbz5-sRtbuTleObQE9mOa&index=41,0 分 16 秒截圖

實現成邏輯閘之後,會得到下圖左方的電路,共需要 9 個邏輯閘與 21 個 input。

但如果仔細觀察每個算式,會發現 F1 與 F3 的 input AB 可以共享,此時可以用前面談過的 fanout 概念,讓一個訊號成為兩個邏輯閘的輸入源;而 F2 也可以改寫為 ABC’ + ACD + A’CD,讓 ACD、A’CD 也共享,改寫之後電路圖如下圖右,邏輯閘降至 7 個、input 降至 18 個。在這個例子中,在 F2 不要化到最簡的狀況下,電路表現反而比較好。

同上,2 分 24 秒截圖

下圖是幾個不做最佳化以節省邏輯閘與輸入數量的範例:

同上,8 分 17 秒截圖
同上,12 分 47 秒截圖
同上,15 分 59 秒截圖

不過也不是所有的電路都可以用共享的方式得到最好的結果。以下圖為例,a’c’d’ 以及 b’c’d’ 都可以共享,所以可以得到一個 8 個邏輯閘、26 個 input 的電路;而如果 F1 與 F2 都取用最簡化算式,得到的電路圖只需要 7 個邏輯閘、18 個 input,反而是不分享的結果比較好。

同上,17 分 26 秒截圖
同上,19 分 57 秒截圖

到底何時該使用最簡化算式、何時該共享?原則如下:

・在複數輸出的電路中,如果本來的 essential prime implicants 在兩個以上的函式中同時存在,此時該項便不稱作 essential prime implicant。

・一般來說,如果共享必須拆掉 essential prime implicant 就不做。

同上,21 分 45 秒截圖

複數輸出的電路最佳化是一個非常困難的議題,因此這只是一般設計電路的通用建議,當條件更加複雜時,要考慮的因素就會更多,電路最佳化是一個研究議題,此處按下不表,僅介紹基本原則。

接下來再用一個例子討論共享。以下圖為例,這是一個過三碼轉換的電路,真值表打 X 的地方為 don’t care:

同上,34 分 26 秒截圖

畫成卡諾圖之後,可以得出每個輸出的算式結果如下圖。

前面的例子都是共享某一個單獨的項,但在這個例子中,可以共享的還有合起來的項(sum of terms)。例如原本的 w 在卡諾圖中的算式是 a + bc + cd,但可以把 b 提出來,轉換成 a + b( c + d ),就可以和化簡後的 x 共享 ( c + d ),而且效果會更好。

同上,36 分 10 秒截圖

前面說過,single output 可以將邏輯閘全部用 NAND 或 NOR 實現,這件事在 multiple output 中也成立,其中有一個很重要的關鍵點:當共享的邏輯閘出現 inverter 不對稱時(即:其中一個邏輯閘輸出需要反轉,另一個不需要),在不需要反轉的邏輯閘電路上,要再加一個 NOR Gate 將輸入再次反轉,如此才會得到正確結果。

同上,39 分 04 秒截圖

--

--