Transcript Chap. 4
組合邏輯 Chapter 4 4.1 簡介 數位系統的邏輯電路可能是組合的 (combinational) 或 序向的 (sequential)。 組合電路所包含的邏輯閘,其輸出在任何時間都是僅 由目前輸入的組合所決定。 組合電路包含輸入變數、邏輯閘及輸出變數。組合邏 輯閘會對其輸入的信號值產生反應進而產生輸出信號 值,可將已知輸入資料的二元資訊轉換成所需的輸出 資料。 2 4.2 組合電路 數位系統的邏輯電路 序向電路 除了邏輯閘外還有儲存元件 它們的輸出,除了與當時的輸入有關外,還受儲存元件的 狀態所影響。因為儲存元件的狀態,乃是先前輸入的函數。 因此,序向電路的輸出,不僅由目前輸入值決定,還受過 去的輸入的影響,並且電路的行為是輸入及內部狀態時間 序列的函數。 3 組合電路 4.2 組合電路 n 對於 n 個輸入變數而言,將有 2 種可能的輸入組合。 標準組合電路 加法器 (adders)、減法器 (subtractors)、比較器 (comparators)、 解碼器 (decoders)、編碼器 (encoders),以及多工器 (multiplexers)。 4 4-3 分析步驟 組合電路的分析就是需要去決定該電路所執行的函數。 分析的第一個步驟是要確認所給定的電路是組合電路而不 是序向電路。 不具有回授路徑或記憶元件 進行求取輸出布林函數或真值表。 設計驗證 解釋電路的操作 5 分析步驟 要從邏輯圖得到輸出的布林函數,則可以由以下步驟來進 行: 利用任意的符號 (但必須是有意義的名稱) 將所有閘輸出標示 為輸入變數的函數。對每一個閘輸出決定出布林函數。 將已標示為輸入變數的函數之閘,以之前已標示的閘再利用 其他任意的符號加以標示,找出這些閘的布林函數。 重複在步驟2的過程直到得出電路的輸出為止。 利用先前定義的函數重複置換,則可以得到用輸入變數的輸 出布林函數。 6 直接順向法 F2 = AB+AC+BC T1 = A+B+C T2 = ABC T3 = F2'T1 F1 = T3+T2 7 F1 = T3+T2 = F2'T1+ABC = (AB+AC+BC)'(A+B+C)+ABC (A'+B')(A'+C')(B'+C')(A+B+C)+ABC (A'+B'C')(AB'+AC'+BC'+B'C)+ABC A'BC'+A'B'C+AB'C'+ABC 8 = = = 分析步驟 直接從邏輯圖獲得真值表而不經由布林函數的推導, 其過程如下: 9 真值表 10 4-4 設計步驟 組合電路的設計過程包含下列各步驟: 組合電路的設計,係從設計目的規格的描述開始,而結束於 邏輯圖的完成,或是由邏輯圖獲得一組簡化的布林函數。 1.由電路的規格,決定所需的輸入與輸出的個數,並且對每一 個輸入與輸出安排一個變數符號。 2.導出真值表並定義輸入與輸出間所需的關係。 3.對每一個輸出求出以輸入變數為函數之簡化的布林函數。 4.畫出邏輯圖,並且證明 (以人工方式或模擬方式) 設計的正確 性。 11 碼轉換的例子 BCD碼轉換成超3碼 真值表 12 卡諾圖 13 化簡後的函數 z = D' y = CD +C'D' x = B'C + B'D+BC'D' w = A+BC+BD 另一種形式實現的電路 z = D' y = CD +C'D' = CD + (C+D)' x = B'C + B'D+BC'D‘ = B'(C+D) +B(C+D)' w = A+BC+BD = A+B(C+D) 14 邏輯圖 15 4-5 二進位加法器-減法器 半加法器 0 + 0 = 0 ; 0 + 1 = 1 ; 1 + 0 = 1 ; 1 + 1 = 10 兩個輸入變數: x, y 兩個輸入變數: C (進位), S (和) 真值表 16 S = x'y+xy' C = xy 電路實現的彈性 S= x y S = (x+y)(x'+y') S' = xy+x'y' S = (C+x'y')' C = xy = (x'+y')' 17 18 全加法器 處理三個輸入位元算術和的組合電路 具有三個輸入位元 x, y:兩個有效位元 z:從前級較低有效位置送來的進位 兩個輸出位元: C, S 19 20 S = x'y'z+x'yz'+ xy'z'+xyz C = xy + xz + yz S = z(xy) = z'(xy'+x'y)+z(xy'+x'y)' = z'xy'+z'x'y+z((x'+y)(x+y')) = xy'z'+x'yz'+xyz+x'y'z C = z(xy'+x'y)+xy = xy'z+x'yz+ xy 進位輸出 21 二進位加法器 22 4-6 十進位加法器 兩個 BCD數相加 9 個輸入:兩個 BCD數與一個進位輸入 5個輸出:一個 BCD數與一個進位輸出 設計方法 真值表(含有29個entries) 利用二進位全加法器 和 <= 9 + 9 + 1 = 19 二進位碼 至 BCD碼轉換 23 BCD加法器:真值表 24 若和> 9 ,則需進行修正 C=1 K=1 Z8Z4 = 1 Z8Z2 = 1 C = K +Z8Z4 + Z8Z2 修正方式:+6 25 方塊圖 26 4-7 二進位乘法器 部分乘積 – AND 運算 27 28 n至m線解碼器 4-9 解碼器 n位元的二進位碼 = 2 個不同的資訊 n n 個輸入變數; 最多2 條輸出線 對每一個可能的輸入組合,只有一個輸出等於1,所有其 他輸出都等於0。 n 29 30 有些解碼器可以用NAND閘來建立,因為 NAND閘 可產生一個具有反相輸出的AND運算,這使得在它 們的補數形式中產生解碼器的全及項變得更經濟。 解碼器還包括一個或更多個致能 (enable) 輸入來控 制電路操作。 在任何一給定的時間,只有一個輸出等於0,所有其 他輸出都等於1。 4-31 4-32 解多工器 (demultiplexer) 具有致能輸入的解碼器可以被功能化為解多工器 (demultiplexer)──它是一個從單一條線接收資料, 並且將它指向 條可能輸出線之其中之一條上的電路。 特定輸出的選擇是由 條選擇線的位元組合來控制。 一個具有致能輸入的解碼器稱作解碼器-解多工器 (decoder-demultiplexer)。 4-33 擴展 兩個 3-至-8 解碼器:一個 4-至-16解碼器 一個 5-至-32解碼器? 34 組合邏輯電路 每一個輸出 = 一個全及項 利用一個解碼器與一個外部的OR閘來實現任何n個輸入變 數的布林函數 全加法器 S(x,y,x) = S (1,2,4,7) C(x,y,z) = S (3,5,6,7) 35 4-10 編碼器 編碼器 (encoder) 是一個用來執行解碼器之反向操作的數位電路。 z D1 D3 D5 D7 y D2 D3 D6 D7 36 x D4 D5 D6 D7 此編碼器可以用三個OR閘來實現。 優先權編碼器 是一個包含優先權功能的編碼電路,可解決非法輸入的模糊 性問題 僅有其中一個輸入會被編碼 D3 :具有最高優先權 D0 :具有最低優先權 X :不理會條件 V :有效 (valid) 位元指示器 37 化簡輸出 x 與 y 的卡諾圖 38 ■ 在圖4-23中實現了優先權編碼器 x D2 D3 y D3 D1D2 39 V D0 D1 D2 D3 4-11 多工器 許多條輸入線選擇一條二進位資料並且指向單一輸出線的 組合電路。 2n條輸入線,n條選擇線與一條輸出線 範例: 2-至-1線多工器 40 4-41 注意 n-至- 2 線解碼器 n 將此 2 條輸入線中之每一條個別加到每一個AND閘 OR (所有 AND 閘)起來 一條致能輸入(一條選擇線) n 42 43 布林函數電路 MUX(多工器):一個解碼器+一個OR閘 n 2 -至-1 線MUX 可以實現任何一個 n 輸入變數布林函數 較佳的方法:實現任何一個 n+1 輸入變數布林函數 這些變數中的n個變數:當作選擇線 剩下的一個變數: 當作輸入 44 範例:F(A,B,C) = S (1,2,6,7) 45 方法: 指定輸入變數的順序 最右邊的變數 (D) 當作輸入線使用 其餘n 1 個變數依其對應的順序指派為選擇線 建構真值表 由開始m0,依序考慮每一對全及項 決定其輸入線 首先將布林函數列在一個真值表中,在表中最前的 n 1 個變數應用到 多工器的選擇輸入。對於選擇變數的每一個組合,我們求出輸出值做 為最後一個變數的函數,這個函數可能是0、1、變數或變數的補數。 然後這些值以適當的次序應用於資料輸入。 46 範例: F(A, B, C, D) = S(1, 3, 4, 11, 12, 13, 14, 15) 47 七段顯示器 A 0 0 0 0 0 0 0 0 1 1 B 0 0 0 0 1 1 1 1 0 0 C 0 0 1 1 0 0 1 1 0 0 D 0 1 0 1 0 1 0 1 0 1 a 1 0 1 1 0 1 1 1 1 1 b 1 1 1 1 1 0 0 1 1 1 c 1 1 0 1 1 1 1 1 1 1 d 1 0 1 1 0 1 1 0 1 1 e 1 0 1 0 0 0 1 0 1 0 48 f 1 0 0 0 1 1 1 0 1 1 g 0 0 1 1 1 1 1 0 1 1 Design 燈號”b” C 1 1 1 1 1 A 1 1 D b=B’C’+A’B’+A’C’D’+A’CD 49 1 B Lab 2 修正七段顯示器使得它也能針對10,11,12,13,14,15輸出 A,b,C,d,E,F. 50