第四章组合逻辑电路
4.1 概述(组合逻辑电路的特点和功能描述)
4.2 组合逻辑电路的分析方法和设计方法
4.3 若干常用的组合逻辑电路编码器、译码器、
数据选择器、加法器、数值比较器
4.4 组合逻辑电路中的竞争-冒险现象成因、检查和消除方法一、组合逻辑电路的特点功能上:任意时刻的输出仅取决于该时刻的输入,与电路原来的状态无关电路结构上:不含记忆(存储)元件
4.1概述数字电路组合逻辑电路时序逻辑电路二、逻辑功能的描述
(逻辑图、函数式、真值表、框图)
组合逻辑电路
1
a
2
a
n
a
1
y
2
y
m
y
组合逻辑电路的框图
)(AFY =
1112
2212
12
n
n
mm n
yf(a a a )
yf(a a a )
yf(a a a )
=
=
=
null
null
null
null
4.2.1 组合逻辑电路的分析方法
(逻辑电路逻辑功能)
1、从输入到输出,逐级写出逻辑函数式,
得到Y=F(A);
2、化简函数式(公式法、卡诺图法);
3、列出真值表,得到逻辑功能。
4.2 组合逻辑电路的分析方法和设计方法一、逻辑抽象
分析因果关系,确定输入/输出变量
定义逻辑状态的含意(赋值)
列出真值表二、写出函数式三、选定器件的类型(SSI,MSI,PLD)
四、根据器件化简或者变换逻辑式,或者进行相应的描述五、画出逻辑电路图,或下载到PLD
六、工艺设计
4.2.2 组合逻辑电路的设计方法
(实际问题逻辑电路)
设计举例:设计一个监视交通信号灯状态的逻辑电路如果信号灯出现故障,
Z为1
R
A
G
Z
任何时候有且仅有一盏灯点亮
1、逻辑抽象输入变量:红(R)、黄(A)、绿(G)
亮1;不亮0
输出变量:故障信号(Z)
故障1;正常0
2、写出逻辑表达式输入变量输出
R A G Z
0 0 0 1
0 0 1 0
0 1 0 0
0 1 1 1
1 0 0 0
1 0 1 1
1 1 0 1
1 1 1 1
RAGRAGGRAAGRGARZ ++++=
''''''
3,选用小规模SSI器件
4.化简
5,画出逻辑图
AGRGRAGARZ +++= '''
非门+与门+或门实现方案一
AGRGRAGARZ +++= '''
全用与非门
(( ' ' ' ) )
(( ' ' ') ( ) ( ) ( ) )
Z R A G RA RG AG
RAG RA RG AG
′ ′
= +++
′ ′′′
= ii i
与非—与非表达式实现方案二
AGRGRAGARZ +++= '''
与或非表达式
('' ' ')Z RA G R AG R A G
′ ′′
= ++
与或非门实现方案三集成的标准化电路产品(MSI)——
编码器74HC148,74LS147
译码器74HC138,74HC42,7448
数据选择器74HC153,CC14539
数值比较器74LS85
加法器74LS183,74LS283
函数发生器
奇偶校验器/发生器74180
4.3 若干常用的组合逻辑电路
4.3.1 编码器
编码:将输入的每个高/低电平信号编成一个对应的二进制代码
普通编码器
优先编码器一、普通编码器特点:任何时刻只允许输入一个编码信号。
3位二进制普通编码器的框图输入输出
I
0
I
1
I
2
I
3
I
4
I
5
I
6
I
7
Y
2
Y
1
Y
0
1 0 0 0 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0 0 0 1
0 0 1 0 0 0 0 0 0 1 0
0 0 0 1 0 0 0 0 0 1 1
0 0 0 0 1 0 0 0 1 0 0
0 0 0 0 0 1 0 0 1 0 1
0 0 0 0 0 0 1 0 1 1 0
0 0 0 0 0 0 0 1 1 1 1
''''''''''''''
''''''''''''''
0123456701234567
01234567012345672
IIIIIIIIIIIIIIII
IIIIIIIIIIIIIIIIY
++
+=
''''' '' '''' '''
1 76543210 76543210
' '''''' '''''''
76543210 76543210
Y IIIIIIII IIIIIIII
I IIIIIII IIIIIIII
=+
++
'''''' ' '''' '''
0 76543210 76543210
'' ''''' '''''''
76543210 76543210
Y IIIIIIII IIIIIIII
I IIIIIII IIIIIIII
=+
++
真值表逻辑式利用无关项化简,得:
75310
76321
76542
IIIIY
IIIIY
IIIIY
+++=
+++=
+++=
二、优先编码器特点:允许同时输入两个以上的编码信号,但只对其中优先权最高的一个进行编码。例:8线-3线优先编码器(设
I
7
优先权最高………I
0
优先权最低)
输入输出
I
0
I
1
I
2
I
3
I
4
I
5
I
6
I
7
Y
2
Y
1
Y
0
X X X X X X X 1 1 1 1
X X X X X X 1 0 1 1 0
X X X X X 1 0 0 1 0 1
X X X X 1 0 0 0 1 0 0
X X X 1 0 0 0 0 0 1 1
X X 1 0 0 0 0 0 0 1 0
X 1 0 0 0 0 0 0 0 0 1
1 0 0 0 0 0 0 0 0 0 0
45675676772
IIIIIIIIIIY
''''''
+++=
45672
IIIIY +++=
BABAA +=+
'
相应地——
1245 34567
+YIII IIIII
′′ ′′
= ++
01246 34656 7
+Y IIII III II I
′′′ ′′ ′
=
8线-3线优先编码器
74HC148
输出也是低电平有效低电平有效
'''''
176543245
'''''
0 7 65 346 1246
[( ) ]
[( ) ]
Y I I III III S
Y I II III IIII S
=++ +
=++ +
''
)(
45672
IIIIY +++=
选通信号
''
])[( SIIIIY
45672
+++=
选通输入端
0
1
S
S

=

=
,编码器工作
,封锁输出
' '''''''' ' '
76543210
'
76543210
[( ) ]
[( ) ]
EX
Y IIIIIIIIS S
I IIIIIIIS
=
=+++++++
i
附加输出信号——
' '''''''' '
76543210
()
S
YIIIIIIIS=
为0时,电路工作,
无编码输入
S
Y

为0时,电路工作,有编码输入
EX
Y

输入输出
1 1
1
0 X X X X X X X 0 0 0 0 1 0
0
0
0
0
0
0
0 0 1 1 1 1 1 1 1 1 1 1 1 0
0 1 1 1 1 1 1 1 1 1 1 1 0
1
1
1
1
1
1
X
X
X
X
X
X
X
1 X X X X X X X 1 1 1
0 X X X X X 0 1 0 0 1
0 X X X X 0 1 1 0 1 0
0 X X X 0 1 1 1 0 1 1
0 X X 0 1 1 1 1 1 0 0
0 X 0 1 1 1 1 1 1 0 1
0 0 1 1 1 1 1 1 1 1 0
''''''''
76543210
IIIIIIIIS
'''
012
YYY
''
EXS
YY
状态
11
不工作
01
工作,但无输入
10
工作,且有输入
00
不可能出现附加输出信号的状态及含意
''
EXS
YY
'
S
Y:选通输出端
'
EX
Y,扩展端利用附加输出信号实现电路功能扩展的实例——
用两片8线-3线优先编码器
16线-4线优先编码器实现
015
15
0
~16
0000 ~ 1111 16 4
AA
A
A
′′


将 这 个低电平输入信号编码为 共 个 位二进制代码,其中的优先权最高,的优要求:
先权最低
第一片为高优先权
只有(1)无编码输入时,(2)才允许工作
第(1)片时表示对的编码
低3位输出应是两片的输出的“或”
0=
'
EX
Y
''
~
815
AA
三、二-十进制优先编码器
(区别于二进制编码器)
将10个输入信号编成10个BCD代码
的优先权最高,的优先权最低
如:74LS147
''
09
~II
'
9
I
'
0
I
4.3.2 译码器
译码:将每个输入的二进制代码译成对应的输出高、低电平信号或另外一个代码。
(编码的反操作)
常用的:二进制译码器,二-十进制译码器,显示译码器等。
编码:将输入的每个高/低电平信号编成一个对应的二进制代码
3线—8线译码器输入输出
A
2
A
1
A
0
Y
7
Y
6
Y
5
Y
4
Y
3
Y
2
Y
1
Y
0
0 0 0 0 0 0 0 0 0 0 1
0 0 1 0 0 0 0 0 0 1 0
0 1 0 0 0 0 0 0 1 0 0
0 1 1 0 0 0 0 1 0 0 0
1 0 0 0 0 0 1 0 0 0 0
1 0 1 0 0 1 0 0 0 0 0
1 1 0 0 1 0 0 0 0 0 0
1 1 1 1 0 0 0 0 0 0 0
一、二进制译码器真值表框图真值表
70127
20122
10121
00120
mAAAY
mAAAY
mAAAY
mAAAY
==
==
==
==
...
''
''
'''
电路实现逻辑表达式用二极管与门阵列组成设V
CC
=5V,输入信号高电平=3V,低电平=0V,
V
DF
=0.7V
1、当A
2
A
1
A
0
=000时,
Y
7
~Y
1
=0.7V,Y
0
=3.7V;
2、当A
2
A
1
A
0
=111时,
Y
6
~Y
0
=0.7V,Y
7
=3.7V。
其余类推。。。。。。
问题
1、输入电阻较低而输出电阻较高;
2、输出信号的高、低电平偏离输入信号。
解决采用三极管集成门电路
123
SSSS =
()
ii
YSm


=?
电路实现用CMOS门电路组成74HC138
附加控制端
i
m:三变量的最小项
74HC138 的功能表输入输出
S
1
A
2
A
1
A
0
0 X XXX11111111
1
0
1
1
1
1
1
1
1
X 1 XXX1111111
1 0 0 0 0 1 1 1 1 1 1 1
1 0 0 0 1 1 1 1 1 1 1 0
1 0 0 1 0 1 1 1 1 1 0 1
1 0 0 1 1 1 1 1 1 0 1 1
1 0 1 0 0 1 1 1 0 1 1 1
1 0 1 0 1 1 1 0 1 1 1 1
1 0 1 1 0 1 0 1 1 1 1 1
1 0 1 1 1 0 1 1 1 1 1 1
''
32
SS +
''''''''
01234567
YYYYYYYY
74HC138
可做:数据分配器数据输入端
23
0SS
′ ′
= =令地址输入端
1X
YS
′ ′
=
利用附加控制端进行功能扩展例:用2片74HC138 组成4线—16线译码器
''
ii
mZ =
D
3
=0时,片(1)的S
2
=S
3
=1,片(1)工作,对
D
3
D
2
D
1
D
0
=0000~0111进行译码;片(2)的S
1
=0,片(2)不工作。D
3
=1时,片(1)的S
2
=S
3
=0,片(1)不工作;片(2)的
S
1
=1,片(2)工作,对D
3
D
2
D
1
D
0
=1000~1111进行译码。
二、二—十进制译码器将输入BCD码的10个代码译成10个高、低电平的输出信号。BCD码以外的伪码(1010~1111
这6个代码),输出均无低电平信号产生。
)~(
''
90== imY
ii
74HC42
三、显示译码器
(将BCD代码译成数码管所要的驱动信号)
1,七段字符显示器(七段数码管)
2,BCD-七段字符显示译码器(代码转换器7448)
输入输出数字
A
3
A
2
A
1
A
0
Y
a
Y
b
Y
c
Y
d
Y
e
Y
f
Y
g
字形
0 0000 11111 1 0
1 0001 01100 0 0
2 0010 11011 0 1
3 0011 11110 0 1
4 0 1 0 0 0 1 1 0 0 1 1
5 0101 10110 1 1
6 0110 00111 1 1
7 0111 11100 0 0
8 1000 11111 1 1
9 1001 11100 1 1
10 1010000110 1
1 1011001100 1
12 1100010001 1
13 1101100101 1
14 1110000111 1
15 1111000000 0
卡诺图真值表
/BI RBO′ ′
''''
''''
''
'''''
'''
'''
'''''
)(
)(
)(
)(
)(
)(
)(
012123
0112023
012
012012012
01223
01201213
02130123
AAAAAAY
AAAAAAAY
AAAY
AAAAAAAAAY
AAAAAY
AAAAAAAAY
AAAAAAAAY
g
f
e
d
c
b
a
+=
++=
+=
++=
+=
++=
++=
BCD-七段显示译码器7448
卡诺图逻辑式逻辑式逻辑图
/BI RBO′ ′
灯测试输入
'
LT
7448的附加控制信号,低电平有效当时,
Y
a
~ Y
g
全部置1,
使七段同时点亮,
显示出“8”,以检查各段正常与否。
0=
'
LT
卡诺图真值表
a~f均显示,g不显示,则出现“0”
/BI RBO′ ′
灭零输入
'
RBI
3210
0000AAAA=若令则灭零。
0=
'
RBI
7448的附加控制信号,低电平有效
''
RBOBI
''
RBOBI
灭灯输入/灭零输出作输入端使用,
令时,
无论输入的状态如何,均可使七段同时熄灭。
'
0BI =
7448的附加控制信号,低电平有效
''
RBOBI
''
RBOBI
灭灯输入/灭零输出
7448的附加控制信号,低电平有效作输出端使用,
只有当输入且灭零输入信号时,才有,
表示译码器将本来应该显示的零熄灭了。
0
0123
=AAAA
0=
'
RBI
0=
'
RBO
用显示译码器驱动7段数码管的连接方法例:利用和的配合,实现多位数码显示系统的灭零控制。
整数部分:最高位是0,而且灭掉0以后,输出作为次高位的输入信号;
小数部分:最低位是0,而且灭掉0以后,输出作为次低位的输入信号
'
RBI
'
RBO
'
RBO
'
RBI
'
RBO
'
RBI
有错!
四、用译码器设计组合逻辑电路基本原理——
3位二进制译码器给出3变量的全部最小项;
n位二进制译码器给出n变量的全部最小项;
任意函数将n位二进制译码输出的最小项组合起来,可获得任何形式的输入变量不大于n的组合函数
()
i
Yfm=
例:利用74HC138设计一个多输出的组合逻辑电路,输出逻辑函数式为:
ABCCBBCAZ
CABBAZ
CBABCZ
CABBCAACZ
++=
+=
+=
++=
''''
''
''
'''
4
3
2
1




=++=
=+=
=+=
=++=
),,,(
),,(
),,(
),,,(
''''
''
''
'''
7420
532
731
6543
4
3
2
1
mABCCBBCAZ
mCABBAZ
mCBABCZ
mCABBCAACZ
非标准的最小项之和的形式
'''''
''''
''''
'''''
)(),,,(
)(),,(
)(),,(
)(),,,(
74204
5323
7312
65431
7420
532
731
6543
mmmmmZ
mmmmZ
mmmmZ
mmmmmZ




==
==
==
==




=++=
=+=
=+=
=++=
),,,(
),,(
),,(
),,,(
''''
''
''
'''
7420
532
731
6543
4
3
2
1
mABCCBBCAZ
mCABBAZ
mCBABCZ
mCABBCAACZ
与或与非
'''''
''''
''''
'''''
)(),,,(
)(),,(
)(),,(
)(),,,(
74204
5323
7312
65431
7420
532
731
6543
mmmmmZ
mmmmZ
mmmmZ
mmmmmZ




==
==
==
==
4.3.3 数据选择器
(多路开关)
功能:从一组输入数据中选出其中的某一个来。
双4选1数据选择器
74HC153
C

=1 导通
'' ' '
1 1010 110 210 310
[( ) ( ) ( ) ( )]YSDAADAADAADAA=+++
A
1
A
0
Y
1
00D
10
01D
11
10D
12
11D
13
'
1
S
'
1
0S = 时工作例:用两个“4选1” 接 成,8选1”
问题:①“8选1”有八个数据,需要3位地址代码指定其中任何一个数据,而“4选1”只有2位地址代码
②“4选1”的2个输出端,怎样连接成1个输出端?
''' '' ' ' '
210 0 21 0 1 210 2 21 0 3
'' ' '
210 4 21 0 5 210 6 21 0 7
()( )()( )
()( )()( )
Y AAA D AAA D AAA D AAA D
AAA D AAA D AAA D AAA D
=+++
++
12
3S
SS

′′′
2
2
作为第 位 地址输入端将地址输入端的最高位A
接,将A 接
2
2
A =0上部工作,000~011
A =1下部工作,100~111
用数据选择器设计组合逻辑电路基本原理具有n位地址输入的数据选择器,可产生任何形式的输入变量不大于n+1的组合函数
)()()()(
''''
0130120110101
AADAADAADAADY +++=
(,)
ii
YFDA=
(,,,......)YFABCD=
例如:
''' ' '
''' ' '
() () ()1()
Z R AG RAG RAG AG
RAG RAG RAG AG
=+++
+?
'' ' '
1 0 10 1 10 2 10 3 10
()() ()()YDAA DAA DAA DAA=+++
用4选1的数据选择器实现交通信号灯的监视电路
4.3.4 加法器一、1位加法器(半加器,全加器)
半加器:不考虑来自低位的进位,将两个1位的二进制数相加输入输出
ABSCO
0000
0110
1010
1101
ABCO
BAS
=
⊕=
全加器:将两个1位二进制数及来自低位的进位相加输入输出
A B CI S CO
00 0 0 0
00 1 1 0
01 0 1 0
01 1 0 1
10 0 1 0
10 1 0 1
11 0 0 1
11 1 1 1
'''''''
'''''''
)(
)(
CIACIBBACO
ABCICIABCIBACIBAS
++=
++?+=
74LS 183
二、多位加法器(串行进位、超前进位)
串行进位加法器优点:简单缺点:慢
1
() ( )
()
() ( )()
ii
iii i
iii ii i
CI CO
SAB CI
CO AB A B CI
=
=⊕⊕
=++
超前进位加法器基本原理:加到第i位的进位输入信号是两个加数第i位以前各位(0 ~ i-1)
的函数,可在相加前由A,
B两数确定。
优点:快,每1位的和及最后的进位基本同时产生。
缺点:电路复杂。
74LS283
0
00 0 0
000 00 0
() 0
(
)))
0
)
(((
CI
SAB CI
CO A B A B C
i
I
=
=
=⊕⊕
=++
10
11 1 0
11 00 00 0
111 11 0
11 1 1 0 0 0 0 0
() ( )
()
(()()
() ( )()
()(( )()
1
CI CO
SAB CO
AB AB ABCI
CO AB A B CO
AB A B A A B C
i
B I
=
=⊕⊕
=⊕⊕ + +
=++
=+++
=
+
211110000
222 22 2
22 2 2 11 1 1 00 0 0 0
22 2 2
22 111100 00 0
() ( ) ( )( ( )())
() ( )()
()(()(()()
()
(()( ( )()
2
))
CI CO AB A B A B A B CI
CO A B A B CI
AB A B AB A B AB A B CI
SAB CI
AB ABABAB ABCI
i
==++ ++
=++
=++ ++ ++
=⊕⊕
=⊕⊕ +
=
++ +
三、用加法器设计组合逻辑电路基本原理——
若要产生的逻辑函数=输入变量+ 输入变量或者要产生的逻辑函数=输入变量+ 常量,则可用加法器来实现之。
例:将8421码转换为余3码输入输出
D C B A Y3 Y2 Y1 Y0
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
0011
0123
+= DCBAYYYY
思考题:已知X是3位二进制数(其值小于等于5),
试实现Y=3X 并用7段数码管进行显示。
Y=3X

D
2
D
1
D
0
4.3.5 数值比较器(比较两个二进制数的数值大小)
一、1位数值比较器
A、B比较有三种可能结果
'
()
'
'
()
'
'
()
(1,0) 1
(0,1) 1
(,0 1) ()
AB
AB
AB
ABA B AB
ABA B AB
A
YAB
YAB
YBAB AB
>
<
=
>== =
<
=
= =

=
= =
=
则则同为 或二、多位数值比较器原理:从高位比起,只有高位相等,才比较下一位,
即:自高而低地逐位比较。
''' ''
()33 3322 332211
'''
33221100
''''
(
3210 3
)33221100
'
() () ()
210
()()()
()()()
()()()()
()
AB
AB
AB AB AB
AAA
YABABABABABAB
ABA
AB
BABAB
YABABA
BBB
BAB
YYY
<
=
><=
=+⊕ +⊕ ⊕
+⊕ ⊕ ⊕
=⊕ ⊕ ⊕ ⊕
=+
例如:比较 和
4位数值比较器:74LS85
()()
()
,
AB AB
AB
II
I
<=
>

是来自低位的比较结果
74 LS 85 (1)
74 LS 85 (2)
试用2片74LS85 比较两个8位二进制数的大小
1
参看74LS85的逻辑图
4.4 组合逻辑电路中的竞争-冒险现象
4.4.1 竞争-冒险现象及成因一、什么是“竞争”
两个输入同时向相反的逻辑电平变化,称存在“竞争”
二、因“竞争”而可能在输出产生尖峰脉冲的现象,称为
“竞争-冒险”。
三、2线—4线译码器中的竞争-冒险现象
30
10 01
00 11
AB
YY
→当从 时,
在动态过程中可能出现 或所以 和 输出端可能产生尖峰脉冲
4.4.3 消除竞争-冒险现象的方法一、接入滤波电容。用很小的电容就可将尖峰削弱到阈值以下。
二、引入选通脉冲。选通脉冲的高电平出现在电路达到稳定之后,保证此前输出信号不会出现尖峰。
三、修改逻辑设计
'
'
11
YABAC
BC Y AA Y
A
=+
== =+? =
例如:
在 时,稳态下当 改变状态时,存在竞争 冒险
BCCAABY ++=
'
这2个信号必定会发生相反的逻辑跳变作业
4.3 4.5 4.9
4.11 4.12 4.14
4.20 4.23 4.24
4.25
4.29