第 3章 组合逻辑电路组合逻辑电路,电路在任一时刻的输出状态仅由该时刻的输入信号决定,与电路在此信号输入之前的状态无关,
组合电路通常由一些 逻辑门 构成,许多具有典型功能的组合电路已集成为 商品电路,
3.1 由基本逻辑门构成的组合电路的分析和设计
3.1.1 组合电路的一般分析方法分析步骤,
(1) 根据 逻辑电路图,写出输出逻辑函数 表达式 ;
(2) 根据 逻辑表达式,列出 真值表 ;
(3) 由 真值表 或 表达式 分析 电路功能,
例,分析下图所示逻辑电路
P1
P2
P3
P4
F=P2+P3+P4
P2=A·P 1
P3=B·P 1
P4=C·P 1
P1=ABC
=(A+B+C)·ABC
真值表,
A B C F
0 0 0 1
0 0 1 0
0 1 0 0
0 1 1 0
1 0 0 0
1 0 1 0
1 1 0 0
1 1 1 1
逻辑功能,
一致电路
=ABC+ABC
&AB
C
F
&
&
&
≥1
3.1.2 组合电路的一般设计方法一般步骤,
(1) 由实际逻辑问题列出真值表 ;
(2) 由真值表写出逻辑表达式 ;
(3) 化简、变换输出逻辑表达式;
(4) 画出逻辑图。
例,试用与非门设计一个三变量表决电路,表决规则为少数服从多数,
解,(1) 列真值表设,由 A,B,C表示三个输入变量,F表示表决结果。并设 A,B,C为 1表示赞成,为 0表示反对; F为 1表示表决通过,为 0 表示不通过。
A B C F
0 0 0 0
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
(2) 化简、求最简函数表达式
A
BC
0
1
00 01 11 10
1
1 1 1
F=AB+AC+BC
=AB·AC·BC
(3) 画电路图
A B C
F
&
& & &
例 设计一个两位二进制数比较器。
解 设被比较的数分别为 A=A1A0,B=B1B0;比较的结果为,A1A0>B1B0时,输出 F1=1; A1A0=B1B0时,输出 F2=1; A1A0<B1B0时,输出 F3=1.
列真值表:
A1 A0 B1 B0 F1 F2 F3 A1 A0 B1 B0 F1 F2 F3
0 0 0 0 0 1 0 1 0 0 0 1 0 0
0 0 0 1 0 0 1 1 0 0 1 1 0 0
0 0 1 0 0 0 1 1 0 1 0 0 1 0
0 0 1 1 0 0 1 1 0 1 1 0 0 1
0 1 0 0 1 0 0 1 1 0 0 1 0 0
0 1 0 1 0 1 0 1 1 0 1 1 0 0
0 1 1 0 0 0 1 1 1 1 0 1 0 0
0 1 1 1 0 0 1 1 1 1 1 0 1 0
画卡诺图化简:
A1A0
B1B0
00
01
11
10
00 01 11 10
1
1
1 1
1
1
F1
F1=A1B1+A1A0B0+A0B1B0
A1A0
B1B0
00
01
11
10
00 01 11 10
1
1
1
1
F2
F2=A1A0B1B0+ A1A0B1B0
+ A1A0B1B0 + A1A0B1B0
A1A0
B1B0
00
01
11
10
00 01 11 10
1
1 1 1
1
1
F3
F3=A1B1+A1A0B0+A0B1B0
按 F1,F2和 F3表达式可方便地用门电路实现比较器的逻辑功能。
(图略,可作为一习题,
请在课后完成。)
3.2 MSI构成的组合逻辑电路本节将介绍几种常用的中规模集成电路 (MSI),这些中规模集成电路分别具有特定的 逻辑功能,称为 功能模块,用功能模块设计组合逻辑电路,具有许多优点,
3.2.1 自顶向下的模块化设计方法顶,指系统功能,即系统总要求,较抽象,
向下,指根据系统总要求,将系统分解为若干个子系统,再将每个子系统分解为若干个功能模块 … …,直至分成许多各具特定功能的基本模块为止,
例,设计一个数据检测系统,功能表如下,
S1 S2 输出功能
0 0 A + B
0 1 A- B
1 0 Min(A,B)
1 1 Max(A,B)
数据 A,B分别来自两个传感器,
B,数据检测系统
B1:输入传感器数据
B2
计算值 B3选择输出
B11
传感器 A
B12
传感器 B
B21
A+B
B22
A- B
B23
Min(A,B)
B24
Max(A,B)
*
* * * *
B231
比 较
A和 B
B232
选 择
Min
* *
B241
比 较
A和 B
B242
选 择
Max
* *
顶层
*,叶结点分层设计树
A
B
B11
转换 A
B12
转换 B
B21
二进制加法
B22
二进制减法
B231
比 较
B241
比 较
B242
选 择
B232
选 择
B3
输出选择
S1
S2
B1:输入
B2,计算功能选择输出传感器分层方框图
min maxB23 B24
3.2.2 编码器将信息 (如数和字符等 )转换成符合一定规则的二进制代码,
1,二进制编码器用 n位二进制代码对 N=2n 个特定信息进行编码的逻辑电路,
设计方法,以例说明设计一个具有互相排斥输入条件的编码器,
输入,X0,X1,X2,X3 输出,A1,A0
对应关系:
输入 A1 A0
X0 0 0
X1 0 1
X2 1 0
X3 1 1
X3 X2 X1 X0 A1 A0
0 0 0 0 × ×
0 0 0 1 0 0
0 0 1 0 0 1
0 0 1 1 × ×
0 1 0 0 1 0
0 1 0 1 × ×
0 1 1 0 × ×
0 1 1 1 × ×
1 0 0 0 1 1
1 0 0 1 × ×
1 0 1 0 × ×
1 0 1 1 × ×
1 1 0 0 × ×
1 1 0 1 × ×
1 1 1 0 × ×
1 1 1 1 × ×
X3X2
X1X0
00
01
11
10
00 01 11 10
1
1
× ×
× ××
× × × ×
×××
0 0
A1=X2+X3
00
01
11
10
00 01 11 10
1
0
× ×
× ××
× × × ×
×××
0 1
X3X2
X1X0
A0=X1+X3
4线 —2线编码器电路图:
≥1 ≥1
X2 X3 X3 X1
A1 A0
(1)编码器在任何时候只允许有 一个 输入信号有效 ;
(2) 电路无 X0输入端 ;
(3) 电路无输入时,编码器的输出与 X0编码等效,
带输出 使能 (Enable)端的 优先 编码器,
输出 使能 端,用于判别电路是否有信号输入,
优先,对输入信号按轻重缓急 排序,当有多个信号同时输入时,只对 优先权高 的一个信号进行编码,
下面把上例 4线 —2线编码器改成带输出 使能 (Enable)端的优先 编码器,假设输入信号优先级的次序为,X3,X2,X1,X0.
X3 X2 X1 X0 A1 A0 E0
0 0 0 0 0 0 1
0 0 0 1 0 0 0
0 0 1 0 0 1 0
0 0 1 1 0 1 0
0 1 0 0 1 0 0
0 1 0 1 1 0 0
0 1 1 0 1 0 0
0 1 1 1 1 0 0
1 0 0 0 1 1 0
1 0 0 1 1 1 0
1 0 1 0 1 1 0
1 0 1 1 1 1 0
1 1 0 0 1 1 0
1 1 0 1 1 1 0
1 1 1 0 1 1 0
1 1 1 1 1 1 0
X3X2
X1X0
00
01
11
10
00 01 11 10
1
1
0 0
1 11
1 1 1 1
111
0 0
A1=X2+X3
X3X2
X1X0
00
01
11
10
00 01 11 10
1
0
0 1
0 00
1 1 1 1
111
0 1
A0=X3+X2X1
EO=X3X2X1X0= X3+X2+X1+X0
≥1
≥1
&
≥1
X2
X1
X3
X2
X0
A0
A1
EO
编码器电路图
2,二-十进制编码器输入,I0,I1,I2 … …I 9,表示十个要求编码的信号,
输出,BCD码,
电路有十根输入线,四根输出线,常称为 10线 —4线 编码器
3,通用编码器集成电路两种主要集成电路,10线 —4线 优先编码器 ; 8线 —3线 优先编码器,
1
23
45
67
8
9
I1I
2I
3
I9
HPRI/BCD
1
2
4
8
Y0
Y1
Y2
Y3
74147
YEX1
23
45
67
I0I
1I
2
I7
HPRI/BIN
1
2
4
Y0
Y1
Y2
0
74148
YS
ENST
74147为 10线 —4线 优先编码器,输入为低电平有效,输出为 8421BCD反码,HPRI是最高位优先编码器的说明,
例如,若输入 I8,I5,I2为 0(有效),其它输入为 1。
则编码器对 I8进行编码,输出 Y3Y2Y1Y0=0111( 1000的反码)
74148为 8线 —3线 优先编码器,输入为低电平有效,输出为 3位二进制 反码,HPRI是最高位优先编码器的说明,图中,ST端为输入控制端,当 ST=0时,电路处于正常工作状态 ; 当 ST=1时,电路禁止工作,Y2Y1Y0=111,
YS=ST I0I1I2I3I4I5I6I7
YEX=ST(I0+I1+I2+I3+I4+I5+I6+I7)
YS:选通输出端,
当 ST=0(即正常工作时 ),若编码输入信号 Ii均为 1(即无编码信号输入 ),则 YS=0,说明当 YS=0时,电路在 工作状态,但 无编码信号输入,这时 Y2Y1Y0=111,
YEX,扩展输入端,
当 ST=0(即正常工作时 ),若有编码信号输入 (即至少有一个
Ii为 0),则 YEX=0.说明当 YEX=0时,电路在 工作状态,而且 有编码信号输入,
编码器扩展举例,
YEX12
34
56
7
I0
I7
HPRI/BIN
1
2
4
0
74148
YS
ENST
YEX1
23
45
67
I8
I15
HPRI/BIN
1
2
4
0
74148
YS
ENST
&
&
&
a0
a1
a2
a3
0
0
1
1
1
1
1
1
1
1
1
0
I15~I5均为 1
时,如 I4=0 0
问题思考:若用四片 74148构成一个 32线 —5线编码器,电路如何设计?
若用八片 74148构成一个 64线 —6线编码器,电路又如何设计?
扩展电路设计提示:
1)观察上例编码器低三位输出电路结构,
并找出规律;
2)分析高位输出和各 YEX之间的关系,将
YEX作为输入,高位信号作为输出,设计一输出电路。
3.2.3 译码器
1,二进制译码器
X0
X1
Xn-1
Y0
Y1
1n2y?
二进制译码器
… …
译码是编码的逆过程,作用是将一组码转换为确定信息。
输入:二进制代码,有 n个;
输出,2n个特定信息。
(1)译码器电路结构以 2线 —4线译码器为例说明
2线 —4线译码器的真值表为,
B A Y0 Y1 Y2 Y3
0 0 1 0 0 0
0 1 0 1 0 0
1 0 0 0 1 0
1 1 0 0 0 1
下图为 高电平 输出有效的 2线 – 4线 译码器电路图,
MSB
&
&
&
&
1
1
A
B
LSB Y
0
Y1
Y2
Y3
Y0=BA=m0
Y1=BA=m1
Y2=BA=m2
Y3=BA=m3
由真值表容易得出,
① 高电平 输出有效二进制译码器,其输出逻辑表达式为,
Yi=mi (mi为输入变量所对应的最小项 )
② 低电平 输出有效二进制译码器,其输出逻辑表达式为,
Yi=mi (mi为输入变量所对应的最小项 )
(2) 用译码器实现组合逻辑函数原理,二进制译码器能产生输入信号的全部最小项,而所有组合逻辑函数均可写成最小项之和的形式,
例 试用 3线 – 8线译码器和逻辑门实现下列函数
F(Q,X,P)=Σm (0,1,4,6,7)
=ΠM( 2,3,5)
解题的几种方法:
① 利用 高 电平输出有效的译码器和 或门 。
F(Q,X,P)=m0+m1+m4+m6+m7
② 利用 低 电平输出有效的译码器和 与非门 。
F(Q,X,P)=m0m1m4m6m7
0
1
2
3
4
5
6
7
A
B
C
P
X
Q
高位
≥1 F( Q,X,P)
0
1
2
3
4
5
6
7
A
B
C
P
X
Q
高位
F( Q,X,P)&
F(Q,X,P)=m0+m1+m4+m6+m7
F(Q,X,P)=m0m1m4m6m7
③ 利用 高 电平输出有效的译码器和 或非门 。
F(Q,X,P)=m2+m3+m5
0
1
2
3
4
5
6
7
A
B
C
P
X
Q
高位
≥1 F( Q,X,P)
③ 利用 低 电平输出有效的译码器和 与门 。
F(Q,X,P)=m2m3m5
0
1
2
3
4
5
6
7
A
B
C
P
X
Q
高位
F( Q,X,P)&
F(Q,X,P)=m2m3m5
( 3) 译码器的 使能控制输入端
① 利用使能输入控制端,既能使电路正常工作,也能使电路处于禁止工作状态;
② 利用使能输入控制端,能实现译码器容量扩展。
EN为使能控制输入端,
EN=0,输出均为 0;
EN=1,输出译码信号。
电路满足,Yi=mi EN
&
&
&
&
1
1
A
B
LSB Y
0
Y1
Y2
Y3
EN
MSB
逻辑图
Y0
Y1
Y2
Y3EN
A
B
逻辑符号利用使能端实现扩展的例子,Y
0
Y1
Y2
Y3EN
A
B
Y0
Y1
Y2
Y3EN
A
B
1
I0
I1
I2
Y0
Y1
Y2
Y4
Y3
Y5
Y6
Y7
( 1)
( 2)
当 I2=0时,(1)片工作,
(2)片禁止,
当 I2=1时,(1)片禁止,
(2)片工作,
由两片 2线 —4线译码器组成 3线 —8线译码器
2,二 —十进制译码器输入,BCD码,输出,十个高、低电平,
(常称 4线 —10线译码器 )
伪码
A3 A2 A1 A0 Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 Y8 Y9
0 0 0 0 0 1 1 1 1 1 1 1 1 1
0 0 0 1 1 0 1 1 1 1 1 1 1 1
0 0 1 0 1 1 0 1 1 1 1 1 1 1
0 0 1 1 1 1 1 0 1 1 1 1 1 1
0 1 0 0 1 1 1 1 0 1 1 1 1 1
0 1 0 1 1 1 1 1 1 0 1 1 1 1
0 1 1 0 1 1 1 1 1 1 0 1 1 1
0 1 1 1 1 1 1 1 1 1 1 0 1 1
1 0 0 0 1 1 1 1 1 1 1 1 0 1
1 0 0 1 1 1 1 1 1 1 1 1 1 0
1 0 1 0 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1
输出低电平有效真值表
4线 —10线译码器逻辑表达式:
Y0=A3A2A1A0
Y1=A3A2A1A0
Y2=A3A2A1A0
Y3=A3A2A1A0
Y4=A3A2A1A0
Y5=A3A2A1A0
Y6=A3A2A1A0
Y7=A3A2A1A0
Y8=A3A2A1A0
Y9=A3A2A1A0
3,通用译码器集成电路
(1) 74138
带使能端 3线 —8线译码器
0
1
2
3
4
5
6
7
BIN/OCT
1
2
4
&
EN
a0
a1
a2
S1
S2
S3
Y0
Y1
Y2
Y3
Y4
Y5
Y6
Y7
② S1S2S3=001,电路工作 ;
否则,电路禁止工作,电路输出均为 1.
① 电路输出低电平有效 ;
(2) 74154
0
15
BIN/SIXTEEN
1
2
4
8
&
EN
a0
a1
a2
S1
S2
Y0
Y15
a3 ……
4线 —16线译码器
(3) 7442
0
9
BCD/DEC
1
2
4
8
a0
a1
a2
Y0
Y9
a3 ……
4线 —10线译码器
4,显示译码器
(1)半导体数码管
a
b
c
d
f
e
g
七段显示器
a
b
c
d
f
e
g
显示器分类:
① 共阴
a b c d e f g
② 共阳阳极加高电平字段亮。
阴极加低电平字段亮。
a b c d e f g
1
(2) 显示译码器功能:将表示数字的 BCD码转换成 七段显示码 。
七段显示译码器
D
C
B
A
ab
cd
e
fg
输入,BCD码 输出,七段显示码 。
显示译码器设计步骤:
(以输入 8421BCD码,输出驱动 共阳显示器 为例)
① 列真值表;
② 化简、写最简函数表达式;
③ 画电路图。
真 值 表
D C B A a b c d e f g 显示
0 0 0 0 0 0 0 0 0 0 1 0
0 0 0 1 1 0 0 1 1 1 1 1
0 0 1 0 0 0 1 0 0 1 0 2
0 0 1 1 0 0 0 0 1 1 0 3
0 1 0 0 1 0 0 1 1 0 0 4
0 1 0 1 0 1 0 0 1 0 0 5
0 1 1 0 0 1 0 0 0 0 0 6
0 1 1 1 0 0 0 1 1 1 1 7
1 0 0 0 0 0 0 0 0 0 0 8
1 0 0 1 0 0 0 0 1 0 0 9
化简后表达式,
a=ABCD+ABC
b=ABC+ABC
c=ABC
d=ABC+ABC+ABCD
e=A+ABC
f=AB+ABCD+ABC
g=ABC+BCD
化简说明,
① 利用了无关项 ;
② 考虑了多输出逻辑函数化简中的公共项,
思考题:
根据上面设计,判断当输入 DCBA为
1010时,LED显示什么?
3.2.4 数据选择器功能,从 多路输入数据 中选择其中的 一路 送至输出端,
数据选择器简称 MUX,数据选择器的数据输入端数称为通道数,
数据选择器功能示意图,(以四选一数据选择器为例 )
D0
D1
D2
D3
Y
译码器
A0
A1地址码输入数据输入 数据输出
1,数据选择器电路结构 (以四选一数据选择器为例 )
功能表 输出函数表达式,
Y= (A1A0)D0+ (A1A0)D1
+ (A1A0)D2+ (A1A0)D3
Y=ΣmiDii=03
A1 A0 Y
0 0 D0
0 1 D1
1 0 D2
1 1 D3
地址数据输出
&
&
&
&
≥1
1A0
A1
D0
D1
D2
D3
Y
1
数据选择器通道扩展,由四选一数据选择器组成十六选一数据选择器的例子
Z
Y A1
A0
D0 D1 D2 D3
Y A1
A0
D0 D1 D2 D3
Y A1
A0
D0 D1 D2 D3
Y A1
A0
D0 D1 D2 D3
Y A1
A0
D0 D1 D2 D3
A1
A0
A3
A2
I0 I1 I2 I3 I4 I5 I6 I7 I8 I9 I10 I11 I12 I13I14 I15
2,通用数据选择器集成电路输入数 TTL CMOS(数字 ) CMOS(模拟 ) ECL
16 74150 4515 4067
2× 8 74451 4096
8 74151 4512 4051 10164
4× 4 74453
2× 4 74153 4539 4052 10174
8× 2 74604
4× 2 74157 4519 4066 10159
常用 MUX集成电路数据选择器的逻辑符号及 输入选通端,
以双四选一 MUX74153和八选一 MUX74151说明之,
EN
0
1
2
3
0
1} G
0
3
MUX
A0
A1
1ST
1D0
1D1
1D2
1D3
2D0
2D1
2D2
2D3
2ST
1Y
2Y
74153
0
1
2
3
4
5
6
7
0
1
2
G 07
MUX
A0
A1
D0
D1
D2
D3
D4
D5
D6
D7
Y
Y
74151
A2
ENST
Y=( (A1A0)D0+ (A1A0)D1
+ (A1A0)D2+ (A1A0)D3)ST Y=( ΣmiDi) STi=0
7
利用选通控制端实现通道扩展的例子,
EN
0
1
2
3
0
1} G
0
3
MUX
A0
A1
1ST
1D0
1D1
1D2
1D3
2D0
2D1
2D2
2D3
2ST
1Y
2Y
74153
1
A2
≥1
Y
A2=0 时,由
A1A0选择 1Di
A2=1时,由
A1A0选择 2Di
3.数据选择器的应用
(1) 用数据选择器实现组合逻辑函数基本思想,
由数据选择器的一般表达式 Y=ΣmiDi
可知,利用 地址变量 产生 所有最小项,通过数据输入信号
Di的不同取值,来选取组成逻辑函数的 所需最小项,
例 试用八选一数据选择器 74151实现逻辑函数
F(A,B,C)=Σm(0,2,3,5)
解,待实现的函数为,F(A,B,C)=Σm(0,2,3,5)
=ABC+ABC+ABC+ABC
74151的输出表达式为,
Y=(A2A1A0D0+A2A1A0D1+A2A1A0D2+A2A1A0D3
+ A2A1A0D4+A2A1A0D5+A2A1A0D6+A2A1A0D7)ST
F(A,B,C)=Σm(0,2,3,5) =ABC+ABC+ABC+ABC
Y=(A2A1A0D0+A2A1A0D1+A2A1A0D2+A2A1A0D3
+ A2A1A0D4+A2A1A0D5+A2A1A0D6+A2A1A0D7)ST
比较两式,
令,ST=0
A2=A ; A1=B ; A0=C
D0=D2=D3=D5=1
D1=D4=D6=D7=0
Y=F
Y=F
0
C
A
B
1
0
1
1
0
1
0
0
0
1
2
3
4
5
6
7
0
1
2
G 07
MUX
74151
EN
注意:①用 MUX实现逻辑函数时,MUX必须被选通,
即 ST=0
② 变量 和 地址端 之间的连接必须正确。
例:试用四选一 MUX实现逻辑函数
F=ABC+ABC+ABC+ABC
解:当 MUX被选通时,其输出逻辑表达式为:
Y= (A1A0)D0+ (A1A0)D1+ (A1A0)D2+ (A1A0)D3
比较两式,令
A1=A; A0=B;
D0=1,D1=0,D2=C,D3=C
则 Y=F
注:该题的解法 不唯一 。
将函数 F写成,F=AB·1 +AB·0 +AB·C+AB·C
EN
0
1
2
3
0
1} G
0
3
MUX
A0
A1
ST
D0
D1
D2
D3
Y
0
B
A
1
0
C
C
F
例:用四选一数据选择器实现逻辑函数:
F(A,B,C,D)=Σm(1,2,4,9,10,11,12,14,15)
解,
AB
CD
00
01
11
10
00 01 11 10
1
1 1 1
111
1 1
AB(C+D)=A1A0D3
AB(CD+CD)=A1A0D0
AB(CD)=A1A0D1
AB(C+D)=A1A0D2
令数据选择器的地址 A1A0=AB
D0=CD+CD=CD·CD
D1=CD=CD
D2=C+D=CD
D3=C+D=CD
注:上面采用 A,B作为地址变量。实际上,地址变量的选取是任意的,选不同的变量为地址变量时,
数据输入端 的信号也要随之变化。
EN
0
1
2
3
0
1} G
0
3
MUX
A0
A1
ST
D0
D1
D2
D3
Y
0
B
A F&
&
&
&
1
C
D
D
D
C
C
电路图:
(2) MUX的其他应用举例
① 分时多路传输电路
EN
0
1
2
3
0
1} G
0
3
MUX
A0
A1
ST
Y
0
F
A
B
C
D
A1
A0 00000
1 1 1 1
0 0 0 0 0
1 1 1 1
A B C D A B C D AF
当 b2b1b0=a2a1a0时,
Y=0;
否则 Y=1.
② 并行数码比较器
0
1
2
3
4
5
6
7
0
1
2
G 07
MUX
A0
A1
D0
D1
D2
D3
D4
D5
D6
D7
Y
74151
A2
ENST0
0
1
2
3
4
5
6
7
BIN/OCT
&
EN
1
a0a
1a
2
b0
b1
b2
1
2
4
74138
3.2.5 数据分配器数据分配器的功能和 数据选择器 相反,是将一个输入通道上的信号送到多个输出端中的某一个,
D
EN
Y0
Y1
Y2
Y3A1A0
数据分配器一分四 数据分配器例子,
功 能 表
EN A1 A0 Y0 Y1 Y2 Y3
0 × × 0 0 0 0
1 0 0 D 0 0 0
1 0 1 0 D 0 0
1 1 0 0 0 D 0
1 1 1 0 0 0 D逻辑表达式
Yi=(miD)·EN
由译码器构成数据分配器的例子,
0
15
BIN/SIXTEEN
1
2
4
8
&
EN
a0
a1
a2
S1
S2
Y0
Y15
a3 ……
4线 —16线译码器
D
实际上,数据分配器一般由带使能端的 译码器 构成,
3.2.6 算术运算电路算术运算电路的核心为 加法器,
1,基本加法器电路
(1) 半加器 (HA)
仅考虑两个一位二进制数相加,
而不考虑低位的进位,称为 半加,
A
B
S
C
Σ
CO
半加器逻辑符号设,A,B为两个 加数,S 为 本位 的 和,C 为 本位 向高位的进位 。则半加器的 真值表,方程式,逻辑图 如下所示
A B C S
0 0 0 0
0 1 0 1
1 0 0 1
1 1 1 0
真值表
S=A⊕ B
C=AB
逻辑方程
=1
&
A
B S
C
逻辑图
(2) 全加器在多位数相加时,除考虑本位的两个加数外,还须考虑 低位 向 本位 的 进位,
例,1 1 0 1 加数1 1 1 1 加数
+) 1 1 1 1 0 低位向高位的进位
1 1 1 0 0 和实际参加一位数相加,必须有三个量,它们是,
本位加数 Ai,Bi ; 低位向本位的进位 Ci-1
一位全加器的输出结果为:
本位和 Si ; 本位向高位的进位 Ci
全加器电路设计:
Ai Bi Ci-1 Ci Si
0 0 0 0 0
0 0 1 0 1
0 1 0 0 1
0 1 1 1 0
1 0 0 0 1
1 0 1 1 0
1 1 0 1 0
1 1 1 1 1
=Ai⊕ Bi ⊕ Ci-1
Si=( AiBi+AiBi) Ci-1
+ ( AiBi+AiBi) Ci-1
=( Ai ⊕ Bi ) Ci-1+AiBi
Ci= ( AiBi+AiBi) Ci-1+AiBi
由两个半加器实现一个全加器
Ci-1 Si
( Ai ⊕ Bi) C
Σ
CO
Ai
Bi
Σ
CO
Ai ⊕ Bi
AiBi
≥1
Ci
Ai
Bi
Si
Ci
Σ
CO
全加器逻辑符号
Ci-1 CI
(3) 串行进位加法器当有多位数相加时,可模仿 笔算,用 全加器 构成串行进位加法器,
A3 B3
S3
C3 ΣCO CI
A2 B2
S2
C2 ΣCO CI
A1 B1
S1
C1 ΣCO CI
A0 B0
S0
C0 ΣCO CI
四位串行进位加法器串行进位加法器特点,结构简单 ; 运算速度慢,
A1
A2 S1
C2
Σ
CO
C0 CI
B1
B2
S2
7482
A1
A2 S1
C4
Σ
CO
C0 CI
A3
A4
S2
B1
B2
B3
B4
S3
S4
74832,高速加法器
(1) 全并行加法器 n
n
n
m
第一级门第二级门 CO
SA
B
特点,速度最快 ;
电路复杂,
(4) MSI加法器模块
(2) 超前进位加法器设计思想,由两个加数,首先求得各位的进位,然后再经全加器算出结果,
全加器的进位表达式,
Ci= ( AiBi+AiBi) Ci-1+AiBi
=AiBi+(Ai+Bi)Ci-1
令,Gi= AiBi---进位产生项 Pi= (Ai+Bi)---进位传送项则,Ci=Gi+PiCi-1
若两个三位二进制数相加
A=A2A1A0 B=B2B1B0
则,C0=G0 ; C1=G1+P1C0 ;
C2=G2+P2C1=G2+P2G1+P2P1G0
由 Pi,Gi 并经过两级门电路就可求得进位信号 C.实际实现中,是将求 Gi和 Pi的电路放进全加器中,而将全加器中求进位信号的电路去除,
根据 Gi,Pi 来求进位信号 C 的电路称为 超前进位电路
( CLA)
四位超前进位加法器结构图:
A3 B3 A2 B2 A1 B1 A0 B0 0
FA FA FA FA
G3 P3 S3 G2 P2 S2 G1 P1 S1 G0 P0 S0
超前进位电路( CLA)
C0C1C2C3
3,加法器的应用举例
(1)将 8421BCD码转换为余 3
BCD码的代码转换电路,
A1
A2 S1
C4
Σ
CO
C0 CI
A3
A4
S2
B1
B2
B3
B4
S3
S4
7483
A
B
C
D
1
1
0
0
Y1
Y2
Y3
Y4
0(2) 四位二进制加 /减器两个运算数分别为,
P=P4P3P2P1 Q=Q4Q3Q2Q1
控制信号为,S
S 功能
0 (P)2+(Q)2
1 (P)2- (Q)2
问题:如何将余 3BCD码转换为
8421BCD码。
1111
A4 A3 A2A1 B4 B3 B2 B1
S4 S3 S2 S1
4A 3A 2A 1A 4B 3B 2B 1B
4Y 3Y 2Y 1Y
P4 P3 P2 P1 Q4Q3 Q2Q1
EN
S
C0C4
SMUX(74157)
ADDER(7483)
S4 S3 S2 S1
S 功能
0 (P)2+(Q)2
1 (P)2- (Q)2
注:求二进制补码为对原码取反加 1。
关于减法电路探讨
1,二进制减法运算
N补 =2n - N原 (N原 为 n位 )
N原 = 2n- N补
N补 =N反 + 1
A- B = A- B原
= A - (2n - B补 )
= A+B反 +1 - 2n (1)
(1)式的实现方法,(以 4位数相减为例 )
A1
A2 S1
Σ
CO
CI
A3
A4
S2
B1
B2
B3
B4
S3
S4
7483
D1
D2
D3
D4
1
V(借位信号 )
1
借位信号实现减 2n 的功能,当 A+B反 +1 的高位有进位时,
该进位信号和 2n 相减使最高位为 0,反之为 1。
2,分两种情况讨论,
(1)A- B≥1
设 A=0101,B=0001
求补码相加演算过程如下:
0101 (A)
1110 (B反 )
1 (加 1)
0100
0100 (进位反相 )
+
1
0
借位运算结果为 4和实际相同。
(2) A- B <1
设 A= 0001,B= 0101
求补码相加演算过程如下:
0001 (A)
1010 (B反 )
1 (加 1)
1100
1100 (进位反相 )
+
0
1
借位 运算结果为- 4的补码,
最高位的 1为符号位。
3,由符号决定求补的逻辑图
B3 B2 B1 B0A3 A2 A1 A0
S3 S2 S1 S0
CI4位加法器
=1=1=1=1
D3 D2 D1 D0
D’3 D’2 D’1 D’0
0
V
借位信号
(3) 利用 7483(四位二进制加法器 )构成 8421BCD码 加法器,
二进制数和 8421BCD码对照表十进制数 二进制数 (和 ) 8421BCD码 (和 )
C4 S4 S3 S2 S1 K4 B8 B4 B2 B1
0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 1 0 0 0 0 1
2 0 0 0 1 0 0 0 0 1 0
3 0 0 0 1 1 0 0 0 1 1
4 0 0 1 0 0 0 0 1 0 0
5 0 0 1 0 1 0 0 1 0 1
6 0 0 1 1 0 0 0 1 1 0
7 0 0 1 1 1 0 0 1 1 1
8 0 1 0 0 0 0 1 0 0 0
9 0 1 0 0 1 0 1 0 0 1
10 0 1 0 1 0 1 0 0 0 0
11 0 1 0 1 1 1 0 0 0 1
12 0 1 1 0 0 1 0 0 1 0
13 0 1 1 0 1 1 0 0 1 1
14 0 1 1 1 0 1 0 1 0 0
15 0 1 1 1 1 1 0 1 0 1
S=S4S3S2S1
B=B4B3B2B1
K4=C4=0
B=S
K4=C4=1
B=S+0110 有溢出十进制数 二进制数 (和 ) 8421BCD码 (和 )
C4 S4 S3 S2 S1 K4 B8 B4 B2 B1
16 1 0 0 0 0 1 0 1 1 0
17 1 0 0 0 1 1 0 1 1 1
18 1 0 0 1 0 1 1 0 0 0
19 1 0 0 1 1 1 1 0 0 1
K4=C4=1
B=S+0110 无溢出总结上表,可得,
① K4=1 时,需进行加 6 (0110) 校正 ;
② K4=1 有三种情况,
a,C4=1 (对应十进制数 16,17,18,19) ;
b,S4=S3=1 (对应十进制数 12,13,14,15) ;
c,S4=S2=1(对应十进制数 10,11,14,15),
所以,K4=C4+S4S3+S4S2
S4
Σ
CO
CI
S3
S2
S1
7483
0
A1
A2
S4
C4Σ CO
0 CI
A3
A4
S3
B1
B2
B3
B4
S2
S1
7483
A1
A2
A3
A4
B1
B2
B3
B4
A4
A3
A2
A1
B4
B3
B2
B1
&
&
≥1 0
0
K4
8421码加 /法器
3.2.7 数值比较器数值比较器用来判断两个二进制数的 大小 或 相等,
1,一位数值比较器
A B Y(A>B) Y(A<B) Y(A=B)
0 0 0 0 1
0 1 0 1 0
1 0 1 0 0
1 1 0 0 1
真 值 表 表达式,
Y(A=B)=A⊙ B
Y(A>B)=AB
Y(A<B)=AB
逻辑图
1
1
&
&
≥1
Y(A>B)
Y(A<B)
Y(A=B)
A
B
2,多位数值比较器比较两个多位数,应首先从 高位 开始,逐位 比较,
例如,A=A3A2A1A0 B=B3B2B1B0
比较方法为,
① 首先比较 A3和 B3,如 A3B3=10,则 A>B,如 A3B3=01,
则 A<B; 如 A3B3=00或 11(相等 ),则比较 A2和 B2;
② 比较 A2和 B2,如 A2B2=10,则 A>B,如 A2B2=01,
则 A<B;如 A2B2=00或 11 (相等 ),则比较 A1和 B1;
③ 比较 A1和 B1,如 A1B1=10,则 A>B,如 A1B1=01,
则 A<B;如 A1B1=00或 11 (相等 ),则比较 A0和 B0;
④ 比较 A0和 B0,如 A0B0=10,则 A>B,如 A0B0=01,
则 A<B;如 A0B0=00或 11 (相等 ),则比较 A=B,
四位数值比较器逻辑表达式 7485:
Y(A>B)=[A3B3+(A3⊙ B3) A2B2+ (A3⊙ B3) (A2⊙ B2) A1B1
+ (A3⊙ B3) (A2⊙ B2) (A1⊙ B1) A0B0]
+ (A3⊙ B3) (A2⊙ B2) (A1⊙ B1)(A0⊙ B0 ) I(A>B)
Y(A<B)=[A3B3+(A3⊙ B3) A2B2+ (A3⊙ B3) (A2⊙ B2) A1B1
+ (A3⊙ B3) (A2⊙ B2) (A1⊙ B1) A0B0]
+(A3⊙ B3) (A2⊙ B2) (A1⊙ B1)(A0⊙ B0 ) I(A<B)
Y(A<B)=(A3⊙ B3) (A2⊙ B2) (A1⊙ B1)(A0⊙ B0 )I(A=B)
四位集成比较器 7485:
A3 B3 A2 B2 A1 B1 A0 B0
I(A>B)
I(A=B)
I(A<B)
Y(A>B) Y(A=B) Y(A>B)
7485
比较器的扩展,
A3 B3 A2 B2 A1 B1 A0 B0
I(A>B)
I(A=B)
I(A<B)
Y(A>B) Y(A=B) Y(A>B)
7485
A3 B3 A2 B2 A1 B1 A0 B0
I(A>B)
I(A=B)
I(A<B)
Y(A>B) Y(A=B) Y(A>B)
7485
A7 B7 A6 B6 A5 B5 A4 B4 A3 B3 A2 B2 A1 B1 A0 B0
Y(A>B) Y(A=B) Y(A>B)
0
1
0
八位数值比较器 (串行接法 )
A3 B3 A2 B2 A1 B1 A0 B0
Y(A>B) Y(A>B)
7485
A3 B3 A2 B2 A1 B1 A0 B0
I(A>B)
I(A=B)
I(A<B)
Y(A>B) Y(A=B) Y(A>B)
7485
A3 B3 A2 B2 A1 B1 A0 B0
Y(A>B) Y(A>B)
7485
A3 B3 A2 B2 A1 B1 A0 B0
Y(A>B) Y(A>B)
7485
A3 B3 A2 B2 A1 B1 A0 B0
Y(A>B) Y(A>B)
7485
0
1
0
0
1
0
0
1
0
0
1
0
0
1
0
Y(A>B) Y(A=B) Y(A>B)
A15B15 A0B0
十六位数值比较器 (并行接法 )
串行接法和并行接法性能比较,
串行接法 电路简单,但速度 慢 ;并行接法 电路复杂,速度 快,
3.3 组合电路设计举例,算术逻辑单元 (ALU)
算术逻辑单元 (ALU)是计算机等数字系统的主要运算部件,
ALU的逻辑符号,
n n
n
kALU
F(fn-1…f 0)
A(an-1… a0) B(bn-1…b 0)
S(sn-1…s 0)
被运算数选择码结果运算数 A,B
均为 n位结果 F为 n位选择码 S为 k 位,
可能实现的运算为 2k 种,
设计具有八种功能的 ALU,S有 3 位,假设功能表如下选 择 码 ALU
S2 S1 S0 功 能 说 明
0 0 0 F=A + B 加
0 0 1 F=A- B 减
0 1 0 F=A + 1 加 1
0 1 1 F=A- 1 减 1
1 0 0 F=A · B 与
1 0 1 F=A + B 或
1 1 0 F=A 非
1 1 1 F=A⊕ B 异或
S2=0:算术运算
S2=1:逻辑运算设计思想,
设计采用自顶向下的方法,将能进行 n 位运算的 ALU
分解为 n 个能进行 一位 运算的 ALU,最后将 n 个一位
ALU连接 成 n 位 ALU.
Ci-1
S2
S1
S0
ai bi
Ci
fi
ALU一位 ALU
a0 b0
C0
f0
ALU
a1 b1
C1
f1
ALU
An-1 Bn-1
Cn-1
fn-1
ALU
C-GEN
S2
S1S
0
n位 ALU
C-1
一位 ALU电路设计,
S2
S0
S1
Ci-1
ai bi
x y
f fcout
cinyx
LU AU
fLUi fAUix1 x0
yMUX
Ci
s
fi
一位 ALU分解图,
AU,算术单元 ;
LU:逻辑单元 ;
MUX:数据选择器,
根据 S2的值,对 AU
和 LU的运算结果进行选择,
(1) MUX电路设计,这里的 MUX为二选一数据选择器,
设计方法前面已介绍 ;
(2) LU电路设计,
计算机中的逻辑运算是 位 操作 (即对应 位 之间进行运算 ).
LU单元功能表
S1 S0 功 能 (fLUi)
0 0 aibi
0 1 ai+bi
1 0 ai
1 1 ai⊕ bi
逻辑方程,
f=S1S0(xy)+S1S0(x+y)+S1S0(x)+S1S0(x⊕ y)
f=S1xy+S0xy+S0xy+S1S0x
逻辑方程化简为,
根据化简的逻辑方程,
可用逻辑门实现 LU功能,另外,也可直接根据功能表,用 数据选择器 实现。
& ≥1 1 =1
S0
S1
S0
S1
x0 x1 x2 x3
y
f
x y
MUX
(3) 算术单元算术单元要进行加、减、
加 1、减 1等四种运算,当采用补码运算时,可利用全加器实现。
xi yi
Ci Si
Ci-1
Ci f
AUi
Y-GEN S1S0
Ci-1
ai bi
根据 ALU功能表,可利用下表求得 yi和 C-1的表达式。
功能 S1 S0 yi C-1
加 0 0 bi 0
减 0 1 bi 1
加 1 1 0 0 1
减 1 1 1 1 0
yi和 C-1取值表对 Y-GEN,可写出 yi的表达式,
yi=S0⊕ (S1bi)
对 C-GEN可写出 C-1的表达式,C-1=S1⊕ S0
将上述运算求得的 MUX,LU,AU电路连接,可得到一位 ALU; 将多位 ALU和 C- GEN连接,可完成多位 ALU
电路设计。
3.4 组合逻辑电路中的冒险前面分析组合逻辑电路时,没有考虑门电路的延迟时间对电路的影响。实际上,由于门电路延迟时间的关系,
可能会使逻辑电路产生错误输出。通常把这种现象称为竞争冒险 。
3.4.1 产生冒险的原因以例说明
≥1
1
A F=A+A=1 理想情况
A
A
F
实际情况造成冒险的原因是由于 A和
A到达或门的时间 不同。
再举一例
A
C
B
1
&
&
≥1
AC
BC
F=AC+BC
A
B
C
C
AC
BC
F 毛刺产生冒险的原因之一,
电路存在由非门产生的 互补 信号,且互补信号的状态发生变化时有可能出现冒险现象。
(分析中略去与门和或门的延时)
3.4.2 消去冒险的方法
1,发现并消去互补变量例如,F=(A+B)(A+C) 在 B=C=0时,F=AA,若直接根据这个逻辑表达式组成电路,就可能出现冒险。
2,增加乘积项例如,F=AC+BC,当 A=B=1时,F=C+C,若直接根据这个逻辑表达式组成电路,就可能出现冒险。
将上式写成,F=AC+AB+BC,已将 AA去掉,则不会出现冒险。
3,输出端并联电容器如果逻辑电路在较慢速度下工作,为了消去冒险,可以在输出端并联一电容,其容量在 4~20pF之间,该电容和门的输出电阻构成 RC低通网络,对窄脉冲起平滑作用。
将上式写成,F=AC+BC+AB,这样,当 A=B=1时,不会出现 F=C+C,所以 C状态的变化,不会影响输出。