第 7 章 多階閘電路 /NAND 和 NOR 閘
多階閘電路 階數 (level): 在一個電路的輸入和輸出之間所能串接的最大閘數稱為閘的階數 AND-OR 電路 OR-AND 電路 OR-AND AND-OR 電路 AND 和 OR 閘電路 Chap 7 2
多階閘電路 ( 續 1) 對於一個 AND-OR 電路, 我們可以分解分解其所導出的積項和表示式來增加它的階數 對於一個 OR-AND 電路, 我們可以乘開乘開其所導出的和項積表示式的某些項目來增加它的階數 由相對應的表示式可以觀察得到一個電路的閘數 閘輸入數和階數 ( 利用樹狀圖 ) Chap 7 3
Ex: 入 則需要四階, 6 個閘和 13 個閘輸 Chap 7 4
Ex( 續 ): 入 則需要三階, 6 個閘和 19 個閘輸 Chap 7 5
利用 AND 和 OR 閘設計多階閘電路的範例 : Ex: 找出一個 AND 和 OR 閘電路實現 f ( a, b, c, d) m = (1,5,6,10,13,14) Sol: 首先, 利用卡諾圖化簡 f Chap 7 6
Sol( 續 1): 則可以直接得到一個二階的 AND-OR 閘電路 ( 圖 7-4) Chap 7 7
Sol( 續 2): 分解 (7-1) 式, 可以得到 f = c d( a + b) + cd ( a + b) 上式為 1 個三階的 OR-AND AND-OR 閘電路 ( 圖 7-5) Chap 7 8
Sol( 續 3): 利用卡諾圖 0 的部份得到如下所示的函數 : f = cd + abc + cd + abc f = ( c + d)( a + b+ c)( c + d )( a + b+ c ) (7-4) 由 (7-4) 式可直接得到 1 個二階的 OR-AND 閘電路 ( 圖 7-6) Chap 7 9
Sol( 續 4): 利用 ( X + Y )( X + Z) = X + YZ 對 (7-4) 式作部分乘開 則可以得到 Chap 7 10
Sol( 續 5): f = [ c + d( a + b)][ c + d ( a f = ( c + a d + bd)( c + ad + bd ) (7-6) 式由 (7-6) 式可直接得到 1 個三階的 AND-OR OR- AND 閘電路 ( 圖 7-7) 7) 對於這個特別的例子, 最好的二階解是輸出閘為 AND 閘 ( 圖 7-6) 6),, 且最好的三階解是輸出為 OR 閘 ( 圖 7-5) + b)] Chap 7 11
Sol( 續 6): Chap 7 12
NAND 和 NOR 閘 NAND 閘 -- 一個 AND 閘後面接著一個反相器 閘的輸出是 F = ( ABC) = A + B + C n 輸入 NAND 閘的輸出是 X X... X F =... ( 1 2 n) = X1 + X 2 + + X n Chap 7 13
NAND 和 NOR 閘 ( 續 1) NOR 閘 -- 一個 OR 閘後面接著一個反相器 閘的輸出是 n 輸入 NOR 閘的輸出是 F = ( A + B + C) = A B C F =... ( X1 + X 2... + X n) = X1X 2 X n Chap 7 14
假如任何布林函數可以用一組邏輯運算來表示, 則此邏輯運算組合稱為功能完備 (functionally complete) AND OR 和 NOT 組合是功能完備, 因為任何函數都可以被表示成積項和的形式 假如所有的交換函數可以使用一組閘集合來實現, 則此組邏輯閘集合為功能完備 任何邏輯閘集合可以實現 AND OR 和 NOT 者都是功能完備 Chap 7 15
AND 和 NOT 是一組功能完備的閘集合, 因為使用 AND 和 NOT 可以實現 OR 運算 : 假如單一個閘本身形成一個功能完備的集合, 則任何交換函數可以只使用這種型式的閘來實現 Chap 7 16
只使用 NAND 閘可以實現 AND OR 和 NOT 運算 : 同理, 任何函數可以只使用 NOR 閘來實現 Chap 7 17
決定一組已知之閘集合是否功能完備 : 首先, 寫出由每個閘所實現函數的最簡積項和表示式 假如在表示式中沒有出現補數, 則 NOT 不能被實現, 且此集合不是功能完備的 假如在表示式中有補數出現, 則通常可以由適當地選擇相對應閘的輸入來實現 NOT 其次, 嘗試實現 AND 或 OR, 現在可以用 NOT 只要 AND 或 OR 其中之一可以實現, 則通常可以利用迪摩根定律來實現另外一個 例如 XY = ( X, + 假 Y ) 如可以使用 OR 和 NOT, 則可以由來實現 AND Chap 7 18
二階 NAND 和 NOR 閘電路的設計 = ( F ) 且應用迪摩根定律可以將一個 AND 和 OR 閘的二階電路轉換成由 NAND 閘或 NOR 閘所組成的電路 迪摩根定律 : 由 F Chap 7 19
Ex: 最簡積項和形式轉換成一些其它二階形式的過程 (7-13) 式 (7-14) 式 (7-15) 式和 (7-16) 式分別代表 AND-OR OR,NAND-NAND,OR-NAND 和 NOR-OR 形式, 如圖 7-11 所示 Chap 7 20
Ex( 續 1): 由卡諾圖可以求出 F 的最簡和項積形式 : (7-18) 式 (7-19) 式,(7-20) 式和 (7-21) 式分別表示 OR-AND NOR-NOR AND-NOR NOR 和 NAND-AND 形式, 如圖 7-11 所示 Chap 7 21
Ex( 續 2): Chap 7 22
Ex( 續 3): Chap 7 23
其它 8 個可能的二階形式 (AND-AND OR- OR OR-NOR AND-NAND NAND NAND-NOR NOR NOR- NAND, 等等 ) 是退化的形式 它們不能實現所有的交換函數 考慮下列 NAND-NOR NOR 電路的例子 : NAND-NOR NOR 形式只能形成文字的積而不是積項和 Chap 7 24
設計一個最簡的二階 NAND-NAND 電路的步驟 : 1. 求出 F 的最簡積項和表示式 2. 畫出相對應的二階 AND-OR 電路 3. 以 NAND 閘取代所有的閘且閘與閘之間的連接方式保持不變 假如輸出閘有任何單一的文字變數作為輸入, 則將文字變數取補數 Chap 7 25
步驟 3 的轉換方式, F = l1 + l2 +... + P1 + P2 +... 應用迪摩根定律之後, F = ( l 1 l 2... P 1P2...) Chap 7 26
設計一個最簡的二階 NOR-NOR 電路的步驟 : 1. 求出 F 的最簡和項積表示式 2. 畫出相對應的二階 OR-AND 電路 3. 以 NOR 閘取代所有的閘且閘與閘之間的連接方式保持不變 假如輸出閘有任何單一的文字變數作為輸入, 則將文字變數取補數 Chap 7 27
多階 NAND 和 NOR 閘電路的設計 設計多階 NAND 閘電路的步驟 : 1. 化簡所要實現的交換函數 2. 設計一個多階的 AND 和 OR 閘電路 輸出閘必須是 OR 閘 AND 閘的輸出不能做為 AND 閘的輸入,OR, 閘的輸出不能做為 OR 閘的輸入 3. 由輸出閘當作第 1 階開始做階層編號 以 NAND 閘取代所有的閘, 閘與閘之間的連接方式保持不變 且第 2 4 6... 階的輸入保持不變, 而將第 1 3 5... 階的文字輸入取反相 Chap 7 28
多階 NAND 和 NOR 閘電路的設計 ( 續 1) 設計多階 NOR 閘電路的步驟 : 1. 化簡所要實現的交換函數 2. 設計一個多階的 AND 和 OR 閘電路 輸出閘必須是 AND 閘 AND 閘的輸出不能做為 AND 閘的輸入,OR, 閘的輸出不能做為 OR 閘的輸入 3. 由輸出閘當作第 1 階開始做階層編號 以 NOR 閘取代所有的閘, 閘與閘之間的連接方式保持不變 且第 2 4 6... 階的輸入保持不變, 而將第 1 3 5... 階的文字輸入取反相 Chap 7 29
範例 : 利用多階 NAND 閘電路實現 Sol: F = a [ b + c( d + e ) + f g ] + hi j + 1 k Chap 7 30
Sol( 續 ): Chap 7 31
使用其他閘符號作電路轉換 反相器 : AND OR NAND 和 NOR 閘 : Chap 7 32
Ex: Chap 7 33
Ex: Chap 7 34
將一個 AND-OR 電路 ( 即使 AND 和 OR 閘沒有交替 ) 轉換成一個 NAND 或 NOR 電路的步驟 : 1. 利用在 AND 閘的輸出加上反相圈圈, 將所有 AND 閘轉換成 NAND 閘 利用在 OR 閘的輸入加上反相圈圈, 將所有 OR 閘轉換成 NAND 閘 ( 要轉換成 NOR, 則要在所有 OR 閘的輸出以及所有 AND 閘的輸入加入反相圈圈 ) Chap 7 35
2. 當一個反相輸出推動一個反相輸入時, 因為兩個反相互相抵銷, 所以毋須額外的動作 3. 當一個非反相閘輸出推動一個反相閘輸入或相反時, 則加入一個反相器使得圈圈被消掉 ( 視需要選擇一個在輸入或輸出有圈圈的反相器 ) 4. 當一個變數推動一個反相輸入時, 則將變數取補數 ( 或加入一個反相器 ) 使得補數消掉在輸入端的反相 Chap 7 36
Ex: Chap 7 37
二階多重輸出電路的設計 Ex: 使用 4 個輸入和 3 個輸出設計一個電路實現下列函數 F1 ( A, B, C, D) = F2 ( A, B, C, D) = F ( A, B, C, D) = 3 m(11,12,13,14,15) m(3,7,11,12,13,15) m(3,7,12,13,14,15) Sol: 首先, 每個函數可以被個別實現, 卡諾圖, 函數, 以及最後所得的電路列在圖 7-18 和 7-19 中, 這個電路需要 9 個閘和 21 個閘輸入 Chap 7 38
Sol( 續 1): Chap 7 39
Sol( 續 2): Chap 7 40
Sol( 續 3): 在 F 1 及 F 2 中對 AB 使用同一個閘, 且將 F 2 中的 CD 用 A CD+ACD 來取代, 則電路可以簡化為 7 個閘和 18 個閘輸入 在實現多重輸出電路, 對每個函數使用最簡質含項的和並不一定會使整個電路合乎最經濟的原則 Chap 7 41
Ex: 使用 4 個輸入和 3 個輸出設計一個電路實現下列函數 f f f 1 2 3 = = = m(2,3,5,7,8,9,10,11,13,15) m(2,3,5,6,7,10,11,14,15) m(6,7,8,9,13,14,15) Sol: 首先, 畫出 f 1 f 2 和 f 3 的圖 ( 圖 7-21) 每個函數可以被個別化簡, 則這個電路需要 10 個閘和 25 個閘輸入 Chap 7 42
Sol( 續 1): Chap 7 43
Sol( 續 2): 由圖中觀察,a bd( 從 f 2 ) abd( 從 f 3 ) 以及 ab c ( 從 f 2 ) 可以用在 f 1 中 假如用 a bd+abd 取代 bd, 則可以省去需要實現 bd 的閘數 因為 m 10 和 m 11 在 f 1 中已經被 b c 包含,ab, ab c ( 從 f 3 ) 可以用來包含 m 8 和 m 9, 且可以消去需要實現 ab 的閘 因此, 最簡解是 Chap 7 44
Sol( 續 3): Chap 7 45
當設計多重輸出電路時, 有時候最好不要將 1 與相鄰的 1 合併, 參考在圖 7-22 的例題說明 Chap 7 46
共同項最多的解不一定是最好的解, 參考在圖 7-23 的例題說明 Chap 7 47
多重輸出 NAND 和 NOR 電路 Ex: 將下列多重輸出函數轉換成 NOR 閘電路 F F 1 2 = [( a = [( a + b ) c + b ) c + + d]( e + g ]( e + Sol:AND 和 OR 閘電路 : f f ) ) h Chap 7 48
Sol( 續 ):NOR 閘電路 : Chap 7 49
Homework 7.2(b) 7.6 7.8 7.13(a) 7.17 7.24 7.32 7.39 Chap 7 50