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