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