数字逻辑第四章课后答案.doc
《数字逻辑第四章课后答案.doc》由会员分享,可在线阅读,更多相关《数字逻辑第四章课后答案.doc(22页珍藏版)》请在冰点文库上搜索。
![数字逻辑第四章课后答案.doc](https://file1.bingdoc.com/fileroot1/2023-4/29/c44c9752-f914-4f36-9c99-51cbdf460791/c44c9752-f914-4f36-9c99-51cbdf4607911.gif)
盛建伦:
《数字逻辑与VHDL逻辑设计》习题解答
习题4解答
4-1
试用与非门设计实现函数F(A,B,C,D)=Σm(0,2,5,8,11,13,15)的组合逻辑电路。
解:
首先用卡诺图对函数进行化简,然后变换成与非-与非表达式。
AB
1
0
0
1
CD
0001
00
01
0
1
0
0
1110
0
1
1
0
1
0
1
0
11
10
&
&
&
&
&
&
&
化简后的函数
&
&
4-2
试用逻辑门设计三变量的奇数判别电路。
若输入变量中1的个数为奇数时,输出为1,否则输出为0。
解:
本题的函数不能化简,但可以变换成异或表达式,使电路实现最简。
真值表:
逻辑函数表达式:
ABC
Y
=1
=1
A
B
C
Y
逻辑图
000
001
010
011
100
101
110
111
0
1
1
0
1
0
0
1
4-3
用与非门设计四变量多数表决电路。
当输入变量A、B、C、D有三个或三个以上为1时输出为1,输入为其他状态时输出为0。
解:
真值表:
先用卡诺图化简,然后变换成与非-与非表达式:
AB
0
0
0
0
CD
0001
00
01
0
0
1
0
1110
0
1
0
0
1
1
1
0
11
10
ABCD
Y
逻辑图
&
&
&
&
&
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
0
0
0
0
0
0
0
1
0
0
0
1
0
1
1
1
逻辑函数表达式:
4-4
用门电路设计一个代码转换电路,输入为4位二进制代码,输出为4位循环码。
解:
首先根据所给问题列出真值表,然后用卡诺图化简逻辑函数,按照化简后的逻辑函数画逻辑图。
真值表:
卡诺图化简:
AB
0
0
0
0
CD
0001
00
01
0
0
0
0
1110
1
1
1
1
1
1
1
1
11
10
ABCD
Y1Y2Y3Y4
AB
0
0
1
1
CD
0001
00
01
0
0
1
1
1110
0
0
1
1
0
0
1
1
11
10
Y1的卡诺图
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
0000
0001
0011
0010
0110
0111
0101
0100
1100
1101
1111
1110
1010
1011
1001
1000
AB
0
1
0
1
CD
0001
00
01
0
1
0
1
1110
0
1
0
1
0
1
0
1
11
10
Y3的卡诺图
AB
0
0
1
1
CD
0001
00
01
1
1
0
0
1110
1
1
0
0
0
0
1
1
11
10
Y4的卡诺图
Y2的卡诺图
逻辑图
化简后的逻辑函数:
=1
=1
=1
4-5
图4.48所示是一个由两台水泵向水池供水的系统。
水池中安置了A、B、C三个水位传感器。
当水池水位低于C点时,两台水泵同时供水。
当水池水位低于B点且高于C点时,由水泵M1单独供水。
当水池水位低于A点且高于B点时,由水泵M2单独供水。
当水池水位高于A点时,两台水泵都停止供水。
试设计一个水泵控制电路。
要求电路尽可能简单。
图4.48习题4-5的示意图
解:
设水位低于传感器时,水位传感器的输出为1,水位高于传感器时,水位传感器的输出为0。
A
0
×
0
×
BC
0001
0
1
×
×
1
1
1110
A
0
×
1
×
BC
0001
0
1
×
×
1
0
1110
首先根据所给问题列出真值表。
其中有几种情况是不可能出现的,用约束项表示。
ABC
M1M2
M1的卡诺图
M2的卡诺图
000
001
010
011
100
101
110
111
00
××
××
××
01
××
10
11
如果利用约束项化简如果不利用约束项化简
逻辑图
=
&
&
≥1
&
1
(a)用约束项化简(b)不用约束项化简
习题4-5的逻辑图
4-6
试用3线-8线译码器74HC138和门电路实现如下多输出逻辑函数并画出逻辑图。
解:
先将逻辑函数变换成最小项之和的形式
逻辑图
再变换成与74HC138一致的形式
1
C
B
A
Y1
&
&
&
Y2
Y3
&
Y4
令74HC138的A2=A,A1=B,A0=C,
4-7
试用3线-8线译码器74HC138和逻辑门设计一组合电路。
该电路输入X,输出Y均为3位二进制数。
二者之间关系如下:
当2≤X<7时,Y=X-2
X<2时,Y=1
X=7时,Y=6
逻辑图
解:
首先根据所给问题列出真值表。
1
X0
X1
X2
Y2
A2
A1
A0
74HC138
&
Y1
Y0
&
&
X2X1X0
Y2Y1Y0
000
001
010
011
100
101
110
111
001
001
000
001
010
011
100
110
逻辑函数:
4-8试用4选1数据选择器产生逻辑函数
解:
将逻辑函数变换成最小项之和的形式
若用输入变量AB作为地址,C作为数据输入,则
即A1=A,A0=B,D0=D2=,D1=1,D3=C。
逻辑图如下图(a)所示。
若用输入变量AC作为地址,B作为数据输入,则
即A1=A,A0=C,D0=1,D2=,D1=D3=B。
逻辑图如下图(b)所示。
A1A0D3D2D1D0
4选1数据选择器
Y
1
A1A0D3D2D1D0
4选1数据选择器
Y
1
(a)AB作为地址(b)AC作为地址
4-9
分析图4.49所示电路,写出输出Y的逻辑函数式并化简。
A0D0D1D2D3D4D5D6D7
A18选1数据选择器
A2F
图4.49习题4-9的电路
解:
8选1数据选择器
C=A2,B=A1,A=A0,
D7=D3=0,D2=1,D5=D4=D1=D0=D,D6=,
逻辑函数
卡诺图化简
DC
0
0
0
0
BA
0001
00
01
0
1
0
1
1110
1
1
1
1
0
0
0
1
11
10
化简后的逻辑函数
4-10试用8选1数据选择器产生逻辑函数
解:
令A=A2,B=A1,C=A0,D7=D5=D2=D1=1,D6=D4=D3=D0=0,
逻辑图
A2D0D1D2D3D4D5D6D7
A18选1数据选择器
A0Z
4-11试用3线-8线译码器74HC138和最少数量的二输入逻辑门设计一个不一致电路。
当A、B、C三个输入不一致时,输出为1,三个输入一致时,输出为0。
解:
首先根据所给问题列出真值表。
真值表:
ABC
Y
000
001
010
011
100
101
110
111
0
1
1
1
1
1
1
0
如果直接按照真值表写出逻辑函数表达式,很难用二输入逻辑门实现。
但是,观察真值表不难发现,真值表中只有两行的Y为0,因此,按照真值表写出反函数表达式,应该容易用二输入逻辑门实现。
逻辑函数表达式:
题目要求用3线-8线译码器74HC138实现,而74HC138的每个输出对应一个最小项的反,因此,还必须把逻辑函数式变换成与74HC138的逻辑函数相同的形式。
逻辑图
逻辑图
逻辑图
A2
A1
A0
&
1
A
B
C
Y
74HC138
4-12
试用8选1数据选择器产生逻辑函数
解:
如果用ABC作为数据选择器的地址(A=A2,B=A1,C=A0),D作为数据,则函数变换成
A0D0D1D2D3D4D5D6D7
A18选1数据选择器
A2F
D7=D6=D3=1,D5=D0=0,
D4=D1=D,D2=,
如果用BCD作为数据选择器的地址(B=A2,C=A1,D=A0),A作为数据,则函数变换成
A0D0D1D2D3D4D5D6D7
A18选1数据选择器
A2F
D7=D6=D4=1,D2=D0=0,
D5=D1=A,D3=
4-13
根据表4.23所示的功能表设计一个函数发生器电路,用8选1数据选择器实现。
表4.23习题4-13的功能表
S1S0
Y
00
01
10
11
A⊙B
A·B
A+B
解:
首先根据所给问题列出真值表。
真值表:
卡诺图化简
S1S0
1
0
0
0
AB
0001
00
01
1
0
1
0
1110
0
1
0
1
0
1
1
1
11
10
S1S0AB
Y
0000
0001
0010
0011
1
0
0
1
0100
0101
0110
0111
0
0
0
1
1000
1001
1010
1011
0
1
1
1
1100
1101
1110
1111
0
1
1
0
化简后
用S1AB作为地址,S0作为数据输入,即S1=A2,A=A1,B=A0。
函数变换为
1
A0D0D1D2D3D4D5D6D7
A18选1数据选择器
A2F
D6=D5=D3=1,D1=D2=D4=0,D7=D0=,因此,画出逻辑图如下:
逻辑图
4-14图4.50所示是由3线8线译码器74HC138和8选1数据选择器构成的电路。
试分析
①当数据C2C1C0=D2D1D0时,输出F=?
②当数据C2C1C0≠D2D1D0时,输出F=?
74HC138
图4.50习题4-14的电路
解:
①当数据C2C1C0=D2D1D0时,输出F=0
②当数据C2C1C0≠D2D1D0时,输出F=1
这个电路可以检验数据C2C1C0与D2D1D0是否相同。
4-15
设计用3个开关控制一个电灯的逻辑电路,要求改变任何一个开关的状态都能控制电灯由亮变灭或者由灭变亮。
用数据选择器实现。
解:
用A、B、C分别表示3个开关的状态,Z=1表示电灯亮,Z=0表示电灯灭。
令ABC=000时的状态Z=0。
(注:
此处先用格雷码写出变化表比较容易得真值表,初始状态也很重要)
真值表:
逻辑函数表达式:
ABC
Z
000
001
010
011
100
101
110
111
0
1
1
0
1
0
0
1
A1A0D3D2D1D0
4选1数据选择器
Y
1
3个变量,可以用4选1数据选择器实现。
若用输入变量AB作为地址,C作为数据输入,
即A1=A,A0=B,D0=D3=C,D1=D2=。
逻辑图
4-16
试用逻辑门设计一个带控制端的半加/半减器,控制端X=1时为半加器,X=0时为半减器。
解:
根据所给问题列出真值表。
A、B为加/减的两个数。
做加法运算时,S为半加/半减的和/首先差的输出,CO为进位输出。
做减法运算时,S为差的输出,CO为借位输出。
半加器的功能是S=A+B。
半减器的功能是S=A-B。
真值表:
XAB
SCO
000
001
010
011
100
101
110
111
00
11
10
00
00
10
10
01
=1
&
S
CO
A
B
=
逻辑函数不能化简,但是可以变换成异或表达式。
按照变换后的逻辑函数画逻辑图。
4-17
试用3线-8线译码器74HC138和门电路设计一个1位二进制全减器电路。
输入是被减数、减数和来自低位的借位;输出是两数之差和向高位的借位信号。
解:
全减器的功能是Si=Ai-Bi-Ci。
首先根据所给问题列出真值表。
真值表:
逻辑函数:
AiBiCi
SiCO
000
001
010
011
100
101
110
111
00
11
11
01
10
00
00
11
把逻辑函数式变换成与74HC138的逻辑函数相同的形式:
Ci
Bi
Ai
Si
A2
A1
A0
74HC138
&
CO
&
逻辑图
4-18
试用4位数据比较器CC14585设计一个判别电路。
若输入的数据代码D3D2D1D0>1001时,判别电路输出为1,否则输出为0。
解:
从CC14585的一个端口输入数据D3D2D1D0,另一个端口输入1001。
CC14585的扩展输入端IA>B和IA=B必须接高电平,IA
F
D0
D1
D2
D3
1
1
0
0
1
逻辑图
4-19试根据表4.24的功能表,用逻辑门设计一个数据分配器(Demultiplexer)。
A1、A0为地址输入,D为数据输入,W3、W2、W1、W0为数据输出。
数据分配器的功能正好与数据选择器相反,是按照所给的地址把一个输入数据从N个输出通路中选择一个输出,如图4.51所示。
表4.24习题4-19的功能表
A1A0D
W3W2W1W0
000
001
010
011
100
101
110
111
0000
0001
0000
0010
0000
0100
0000
1000
DeMUX
图4.51数据分配器
解:
表4.24的功能表可以简化为
A1A0
W3W2W1W0
00
01
10
11
000D
00D0
0D00
D000
1
&
&
&
&
1
逻辑图
逻辑函数
4-20
试比较图4.52所示两个逻辑电路的功能。
&
A0D0D1D2D3D4D5D6D7
A18选1数据选择器
A2Y
1
图4.52习题4-20的电路
解:
根据图4.52写出逻辑函数式。
8选1数据选择器的连接关系是:
D6=D7=D,D1=0,D2=1,D5=D4=D3=D0=,A2=A,A1=B,A0=C,所以,
比较FI和F2的,可看出,两个电路的逻辑函数相同,所以逻辑功能也相同。
4-21
用VHDL设计一个代码转换电路,输入为4位循环码,输出为4位二进制代码。
解:
首先画出代码转换电路的系统框图,如
G3B3
代码转换电路
G0B0
…
…
…
…
根据所给问题列出真值表。
G3G2G1G0
B3B2B1B0
0000
0001
0011
0010
0110
0111
0101
0100
1100
1101
1111
1110
1010
1011
1001
1000
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
根据系统框图写VHDL程序的Entity,用行为描述的方法,根据真值表写VHDL程序的Architecture。
VHDL程序如下:
--GraycodetoBinarycode
libraryieee;
useieee.std_logic_1164.all;
entitygray2binaryis
port(grayin:
instd_logic_vector(3downto0);
binaryout:
outstd_logic_vector(3downto0));
endgray2binary;
architecturebehaveofgray2binaryis
begin
withgrayinselect
binaryout<="0000"when"0000",
"0001"when"0001",
"0010"when"0011",
"0011"when"0010",
"0100"when"0110",
"0101"when"0111",
"0110"when"0101",
"0111"when"0100",
"1000"when"1100",
"1001"w