數位邏輯設計與實習
ch04 組合邏輯電路設計
組合邏輯電路定義
組 合 電 路
z1=f1(x1,x2,...,xn) z2=f2(x1,x2,...,xn) zm=fm(x1,x2,...,xn)
任何時刻的
輸出與當時
的輸入有關
組合邏輯電路設計步驟
由電路的規格,決定所需的輸入與輸出的個 數,並且對每一個輸入與輸出安排一個變數 符號。
導出真值表並定義輸入與輸出間所需的關 係。
對每一個輸出求出以輸入變數為函數之簡化 的布林函數。
畫出邏輯圖,
表決
多數電路
組合電路種類
算術電路(加法器、減法器、乘法器)
解碼器
編碼器
多工器
解多工器
比較器
數碼轉換器
同位元產生器/檢查器
加法器/減法器
1bit 加法器
1bit 減法器
4bit 並加器(漣波加法器)
4bit 加減器
4bit 加減器有旗號指示
1位數BCD加法器
1bit加法器定義
半加器 :一位元與一位元相加, 不考慮進位
全加器 :一位元與一位元相加, 考慮前一級 進位
H.A
F.A
半加器設計
Si=Σ(1,2)=Ai♁Bi Ci+i=Σ(3)=Ai*Bi
0 1
1 1
1 0
0 1
1 0
1 0
0 0
0 0
S i
C
i+1B i A i
入 出
真值表=Ai
.Bi
H.A
H.A H.A
加法 Ai
Bi
Sium Ciarry
全加器設計
F.A
Ai
Bi Ci
Si
Ci+1
全加器真值表
1 1
1 1
1
0 1
0 1
1
0 1
1 0
1
1 0
0 0
1
0 1
1 1
0
1 0
0 1
0
1 0
1 0
0
0 0
0 0
0
S C i+1
C i B
A
輸入 輸出
i i i
行為
加 A
B C
Si
Ci+1
Si=Σ(1,2,4,7)
=Ai⊕Bi⊕Ci
Ci+1=Σ(3,5,6,7)
AiBi+AiCi+BiCi
全加器布林式
S i =Σ(1,2,4,7)=A i ♁B i ♁C i
C i+1 =Σ(3,5,6,7)=A i B i +A i C i +B i C i
=A i B i +C i (A i ♁B i ) =AB+C(A+B)
XOR OR Ci+1=AB+C(A⊕B)
⊕
0 0 0 0 1 1 1 0 1 1 1 1 ab
0 0 0
用半加器設計全加器
半加 S=A⊕B C=AB
全加 S=A⊕B⊕C
=(A⊕B)⊕C
Ci+1=AB+C(A⊕B)
A⊕B A⊕B⊕C
C(A⊕B)
AB+C(A⊕B) AB
F.A=2 H.A+OR gate
1bit 減法器
半減器 :一位元與一位元相減,不考慮借位
全減器 :一位元與一位元相減, 考慮前一級 借位
H.S
F.S x
y
D(差) B(借) Half Subtractor
Xi
Yi Bi
Di Bi+1
半減器設計
D i =Σ(1,2)=A i ♁B i B i+1 =Σ(1)= A'B
Bi H.S
Di
Bi+1
Ai
0 0 0 1 1 0 1 1
0 0 1 1 0 1 0 0 Ai
Bi Bi+1Di
全減器設計
D i =Σ(1,2,4,7)=X i ♁ Y i ♁ B i
B i+1 =Σ(1,2,3,7)=X i Y i +X i B i +Y i B i
1 bit
F.SXi
Yi
Bi
Di Bi+1
0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1
0 0 1 1 1 1 1 0 0 1 0 0 0 0 1 1 X Y B Bi+1 D
4bit 並加器(漣波加法器)
ripple adder
F.A
a b
Ci+1 C
S
4bit 加減法器分析
4bit減法器
(1)方法一:
F.S F.S F.S F.S
(2)方法二: 用加法代替減法
A+B=A+B+0=A+B+0 A B=A+( B)=A+B'+1
B 0 B 1
B
B' 1'S
2'S
4bit 加減器
M
S
A B
0~ 加 1~減
B3' B2' B1' B0'
A+B'+1=A B
4bit 加減器有旗號指示
ZF(Zero Flag)
CF(Carry Flag)
SF(Sign Flag)
OF(Over Flag)
零
ZF=1>>成立
ZF=0>>結果不為零
狀態 (況)
進位
符號
溢位 over flow
狀態
Flag Reg Status Reg
OF ZF SF CF 超出範圍
F.A F.A F.A F.A
S3 S2 S1 S0
4bit 加減器有旗號指示電路圖
FA FA FA FA
A A A A
OF ZF SF CF
A
A
S3 S2 S1 S0
C1 C2
C3 C4
A3B3 A2B2 A1B1 A0B0
C0
S:1 減
S:0 加
1位數BCD加法器分析
1位數BCD加法器
BCD1 BCD2
漣波加法器缺點
進位傳遞延遲 F.A
A B
Ci+1 Ci
Si
F.A F.A
F.A F.A
a3 b3 a2 b2 a1 b1 a0 b0
C4 C0
C2 C1 C3
已知
產生 兩個閘
>>delay
10ns
20ns
*
8160ns
MHz T=
f=
進位前看加法器(Carry Look-ahead Adder,CLA)
己知:A 3 A 2 A 1 A 0 ,B 3 B 2 B 1 B 0 ,C 0
未知: C 4 ,C 3 ,C 2 ,C 1
S i =(A i ♁ B i ) ♁ C i
C i+1 =A i B i + C i (A i ♁B i )
令G i =A i B i (進位產生)
P i =A i ♁ B i (進位傳遞)
a3 a2 a1 a0 b3 b2 b1 b0
C4 C0
S3 S2 S1 S0
F.A
a b
Ci+1 Ci
C
i+1=G
i+C
iP
i SF.A
進位前看加法器
C i+1 =G i +C i P i
i=0 C 1 =G 0 +C o P o i=1 C 2 =G 1 +C 1 P 1
=G 1 +G 0 P 1 +C o P o P 1 i=2 C 3 =G 2 +C 2 P 2
=G 2 +G 1 P 2 +G 0 P 1 P 2 +C o P o P 1 P 2 i=3 C 4 =G 3 +C 3 P 3
= G 3 +G 2 P 3 +G 1 P 2 P 3 +G 0 P 1 P 2 P 3 +C o P o P 1 P 2 P 3
=G3 + P3 G2 + P3 P2 G1 + P3 P2 P1 G0 + P3 P2 P1 P0 C0
AND OR
進位前看產生電路圖
AND OR
進位前看加法器 三連波
4 gate
8bit>>4gate
ripple>>16gate
F.A>>2
乘法器
1bit 乘法器
2bit 乘法器(用HA,FA)
1bit 乘法器
a b
p
a b p 0 0
0 1 1 0 1 1
0 0 0 1
2bit 乘法器真值表
3 3
a1 a0 b1 b0
p3 p2 p1 p0
2bit 乘法器
1 2 4 5
6 U2A 7421
9 10 11
8 U3C
7411
1 2 13
12 U4A
7411
3 4 5
6 U4B
7411
9 10 11
8 U4C
7411 1 2 13
12 U3A
7411
3 4 5
6 U3B
7411
5 6
U1C
7404
8 9
U1D
7404
12 13
U1F
7404
10 11
U1E
7404
1 2
U1A
7404
3 4
U1B
7404
4 5
6 U6B
7432
8 9
10 U6C 7432
11 12
13 U6D 7432 1
2
3 U6A7432
1
3 U5A
7408
A1 A0 B1 B0
P3
P1 P2
P0
(1)
2bit 乘法器(用HA,FA分析)
a1 a0 b1 b0
*
a1b0 a0b0 a1b1 a0b1c c H.A
H.A
P0 P2 P1
P3
S S S
b1
a1 a0 b0
H.A
H.A C
P0 P1
P3 P2
S C
S
2bit 乘法器(用HA,FA)
1bit乘法器
3bit 乘法器(用HA,FA)
6入
26=64項
a2 a1 a0 b2 b1 b0
*
a2b0 a1b0 a0b0a1b1 a0b1 a2b1
a0b2 a2b2 a1b2
P0 P2 P1
P3 P5 P4
c c c c
F.A F.A F.A H.A
解碼器方塊圖
(decoder)
低態輸出
1對2 解 碼
高態輸出 2x4 decoder
n 2n
入 出
. 3x8
. . . . .
0
15 4x16
E
有致能解碼器方塊圖
有些解碼器電路沒有致 能控制線;有些電路為 高電位啟動。
Y
0Y
1解碼器 輸
入 端
輸出端
致能控制線 Y
m-1Y
m-2⎫
⎬ ⎪
⎭⎪
n m ×
E x
0x
1x
n-1x
n-2⎧
⎨
⎪ ⎪
⎩
⎪ ⎪
(a) 非反相輸出
Y
0Y
1解碼器 輸
入 端
輸 出 端
致能控制線 Y
m-1Y
m-2⎫
⎬ ⎪
⎭⎪
n m ×
E x
0x
1x
n-1x
n-2⎧
⎨
⎪ ⎪
⎩
⎪ ⎪
(b) 反相輸出
n m
高態同相 低態輸出
低態(低電位)
2對4解碼器(高態輸出)
(1)方塊圖
MSB a b
d1d0 d2 d3
(3)邏輯圖
d0 d1 d2
a b
(2)真值表 a b 0 0 0 1 1 0 1 1
d0 d1 d2 d3 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0
最小值
有致能端2對4解碼器(高態輸出)
(a) 方塊圖
(b) 功能表 (c) 邏輯電路
0 x1 x0
0 1 0 1 0
Y0 Y1 Y2 Y3 E
1 0 0 0 0
1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0
0 0 0
φ φ
1 1
Y0 x1
Y2 Y3 E
Y1 x0
2 4 解碼器
x1
x0
E
Y0
Y1
Y2
Y3 致能
低態
有致能端2對4解碼器(低態輸出)
(a) 方塊圖
(b) 功能表 (c) 邏輯電路
x1
x0
E
Y0
Y1
Y2
Y3 Y0
x1
Y2 Y3 E
Y1 x0
2 4 解碼器
0 x1 x0
0 1 0 1 0
Y0 Y1 Y2 Y3 E
1 1 1 1 1
0 1 1 1 1 0 1 1 1 1 0 1 1 1 1 0 0
0 0 0
φ φ
1 1
平常 致能
3對8解碼器—利用2對4解碼器
Y0 x0
Y2 Y3 E
Y1 x1
2 4 解碼器
Y0 x0
Y2 Y3 E
Y1 x1
2 4 解碼器
x2 x0 x1
Y0 Y1 Y2 Y3
Y4 Y5 Y6 Y7 A
B MSB
3x8
. . . X0
X1 X2
Y1Y0 Y2
Y7
4對16解碼器—利用2對4解碼器
. . . X1
MSB X3
Y0
Y15 4x16
邏輯圖 ISE~繪圖 HDL~程式
X0 X1
X2 X3
Y0
編碼器方塊圖
2^n n
4對2編碼器
X0 . . . . . . X7
d2 d1 d0
n log2n
8對3編碼器
(a) 功能表 0
I2 I3
0 0 1 0 1
I4 I5 I6 I7
0 0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
1 0 0 0
1 0 0
0 0 0
I1I0 Y2 Y1 Y0
1 0 0 0 0
0 0
0 1 0 0
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1
0 0 1 0 1 1 0
0 0 0 1 1 1 1
(b) 邏輯電路
I0I2 I3 I1
I4
I6 I7 I5
Y2 Y1 Y0
不重要 8入 優先
don't care
8對3優先編碼器
8對3優先權編碼器
低態
致能
低態
優先
優先
多工器方塊圖
Multiplexer(Mux)
. . . 輸入 2^n
選擇線 n
1
I0 I1
I7 . . .
1
16
4
1 16x1
1 2x1 Mux
I0 I1 I2 I3
S1 S0 4x1 Mux
2對1多工器
Y I
0I
1S MUX
2 1 ×
(a) 方塊圖 (b) 功能表
S Y
0 1
I
0I
1(c) 邏輯電路 S
I
0I
1Y
/真值表
Verilog 程式
module mux_2_1(
input a, input b, input s, output f );
wire s0,sa,sb;
not( s0, s );
and( sa, a, s0 );
and( sb, b, s );
or( f, sa, sb );
endmodule
軟體 硬體S
a
b
S0
Sa
Sb
f a
b
f s
Mux21
HDL
4對1多工器
(a) 方塊圖 (b) 功能表 (c) 邏輯電路
Y I0
I1 MUX4 1× I2
I3 S1 S0
Y
0 1
I0 I1 S1 S0
0 0
0 1 1 1
I2 I3
I0
I1
Y I2
I3
S1 S0
有致能端2對1多工器
(a) 功能表 (b) 邏輯電路
S Y
0 1
I
0I
1E
1 1
0 φ 0
S I
0I
1Y
E
49
4對1多工器—利用2對1多工器
S I0
多工器Y 2 ×1
I1 E
S I0
多工器Y 2 ×1
I1 E I0
Y I1
I2
I3
S1 S0
I0 I1 I2 I3
Y
8對1多工器—利用2對1多工器
I0
I7 . . . . .
Y
S2 S1 S0
I0 I1
I2 I3
I4 I5
I6
I7
Y
解多工器方塊圖
DeMultiplexer(DeMux)
n
2^n 輸出
選擇線 輸入
1
I0 I1 I2 I3 I4 I5 I6 I7
1 對2解多工器
(a) 方塊圖 (b) 功能表 (c) 邏輯電路
S Y
00 1
D 0
Y
1D 0 D
Y
0Y
1S
DeMUX 1 2 ×
S
D Y
0Y
1有致能端1 對4解多工器
(a) 方塊圖 (b) 功能表 (c) 邏輯電路
D
0 S1 S0
0 1 0 1 0
Y0 Y1 Y2 Y3 E
1 0 0 0 0
D 0 0 0 0 D 0 0 0 0 D 0 0 0 0 D 0
0 0 0
φ φ
1 1
1 4 DeMUX
D
Y0 Y1 Y2
Y3 S0 S1 E
Y0
S1 S0 E
Y1
Y2
Y3
低態致能
8對1解多工器—利用4對1解多工器
1 4 DeMUX
D
Y0 Y1 Y2
Y3 S0 S1
E
1 4 DeMUX
D
Y0 Y1 Y2
Y3 S0 S1
E
Y0 Y1 Y2 Y3
Y4 Y5 Y6 Y7 D
S2
S1 S0 S1 S0
1x8
DEM .
. . . .
1bit比較器方塊圖
4 bit比較器方塊圖
8 bit比較器—利用4 bit比較器
A
0A
1A
3A
2B
0B
1B
3B
2I
A>BI
A=BI
A<BO
A>BO
A=BO
A<B4位元比較器
A
0A
1A
3A
2B
0B
1B
3B
2I
A>BI
A=BI
A<BO
A>BO
A=BO
A<B4位元比較器
0 1 0
B
0B
1B
3B
2A
0A
1A
3A
2B
4B
5B
7B
6A
4A
5A
7A
6A B
相等低位元
XOR特性1
N=2
N=4
a⊕b a⊙b=(a⊕b)'
XOR特性2
N=3
a⊕b⊕c
=a⊙b⊙c
a ⊙b⊙c
a ⊕b⊕c
=a ⊕b⊙c
=a ⊙b⊕c
2進制對葛雷碼轉換器
兩兩互斥
(1) g2 g1 g0 b2 b1 b0
0 0 0 0 0 1 0 1 1 0 1 0
0 0 0 0 0 1 0 1 0 0 1 1 1 1 0
1 1 1 1 0 1 1 0 0
1 0 0 1 0 1 1 1 0 1 1 1 (2)
g2=Σ(4,5,6,7) g1=Σ(2,3,4,5) g0=Σ(1,2,5,6)
g2=b2
=b2b1'+b2'b1
=b2⊕b1
=b1b0'+b1'b0
=b1⊕b0
葛雷碼 對2進制轉換器
g2 g1 g0 b2 b1 b0
0 0 0 0 0 1 0 1 1 0 1 0 1 1 0 1 1 1 1 0 1 1 0 0
0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1
0 1 0 (g)
0 1 1 (2)
b2=Σ(4,5,6,7) b1=Σ(2,3,4,5) b0=Σ(1,2,4,7)
=g2
=g2g2⊕g1=b2⊕g1⊕g1⊕g0=b1⊕g0
BCD碼對加三碼的轉換電路
輸入BCD碼 輸出加三碼
w x y z D C B A
0 0 0 0 0 0 1 1
0 0 0 1 0 1 0 0
0 0 1 0 0 1 0 1
0 0 1 1 0 1 1 0
0 1 0 0 0 1 1 1
0 1 0 1 1 0 0 0
0 1 1 0 1 0 0 1
0 1 1 1 1 0 1 0
1 0 0 0 1 0 1 1
1 0 0 1 1 1 0 0
z = D'
y = CD +C'D‘
x = B'C + B'D+BC'D‘
w = A+BC+BD
W X Y Z
D C B A BCD
X'3
w
x
y
z
D
C
B
A
BCD X'3
BCD碼對七段的轉換電路
BCD
共陽型
共陰型
送0亮~
W.X.Y.Z 0 0 0 0 0 0 0 1 0 0 1 0
g...c.b.a
1 0 1 1 0 1 1
...
同位元產生器/檢查器
同位產生器與檢查
偶同位位元: P = x ♁ y ♁ z
同位檢查器: C = x ♁ y ♁ z ♁ P
C =1:奇數個資料位元錯誤發生
C = 0:資料正確或偶數個資料位元錯誤發 生
=
(1,2,4,7)
產生 (偶同位)
檢查 C=0 偶
C=1 奇
0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1
0 1 1 0 1 0 0 1
(1,2,4,7)
=