数字逻辑第四章课后答案

更新时间:2024-03-14 08:01:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

盛建伦:《数字逻辑与VHDL逻辑设计》习题解答

习题4解答

4-1

试用与非门设计实现函数F(A,B,C,D)=Σm(0,2,5,8,11,13,15)的组合逻辑电路。

解:首先用卡诺图对函数进行化简,然后变换成与非-与非表达式。

化简后的函数

4-2

CD AB 00 01 00 1 0 01 0 1 11 10 0 1 1 0 11 10 0 0 1 1 1 0 0 0 A

& & BC& & & & & F& F?B?C?D?A?B?D?BCD?ACD?B?C?D?A?B?D?BCD?ACD?B?C?D?A?B?D?BCD?ACDD& 试用逻辑门设计三变量的奇数判别电路。若输入变量中1的个数为奇数时,输出为1,否则输出为0。

解:本题的函数不能化简,但可以变换成异或表达式,使电路实现最简。 真值表: 逻辑函数表达式: A B C 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 Y 0 1 1 0 1 0 0 1 =1 A B C 逻辑图

=1 Y Y?A?B?C?A?B?C?A?B?C?A?B?C?(A?B)?C 4 - 1

盛建伦:《数字逻辑与VHDL逻辑设计》习题解答

4-3

用与非门设计四变量多数表决电路。当输入变量A、B、C、D有三个或三个以上为1时输出为1,输入为其他状态时输出为0。

解:

真值表: 先用卡诺图化简,然后变换成与非-与非表达式: A B C D 0 0 0 0 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 0 0 0 1 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1

Y?ABD?ABC?BCD?ACD?ABD?ABC?BCD?ACD?ABD?ABC?BCD?ACDY 0 0 0 0 0 0 1 0 0 1 0 1 1 1 AB 00 01 11 10 CD 00 01 0 0 0 0 0 0 1 0 11 10 0 1 1 1 0 0 1 0 0 0 0 1 0 1 0 0 1 0 逻辑图

A& B& & YC& 逻辑函数表达式: D

4-4

& 用门电路设计一个代码转换电路,输入为4位二进制代码,输出为4位循环码。

解:首先根据所给问题列出真值表,然后用卡诺图化简逻辑函数,按照化简后的逻辑函数画逻辑图。

4 - 2

盛建伦:《数字逻辑与VHDL逻辑设计》习题解答

真值表: 卡诺图化简: A B C D Y1 Y2 Y3 Y4 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 1 0 0 1 1 0 0 1 0 0 1 0 0 0 1 1 0 0 1 0 1 0 1 1 1 0 1 1 0 0 1 0 1 0 1 1 1 0 1 0 0 1 0 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 1 0 1 1 1 1 1 0 1 1 1 1 1 0 1 1 0 0 1 0 1 0 1 1 0 1 1 0 1 1 1 1 1 0 1 0 0 1 1 1 1 1 1 0 0 0 AB CD 00 01 11 10 00 0 0 1 1 01 1 1 0 0 11 1 1 0 0 10 0 0 1 1 Y3的卡诺图

化简后的逻辑函数: Y1?AY2?AB?AB?A?B Y3?BC?BC?B?C

Y4?CD?CD?C?D 4 - 3

AB CD 00 01 11 10 00 0 0 0 0 01 0 0 0 0 11 1 1 1 1 10 1 1 1 1 Y1的卡诺图

AB CD 00 01 11 10 00 0 0 0 0 01 1 1 1 1 11 0 0 0 0 10 1 1 1 1 Y2的卡诺图 AB CD 00 01 11 10 00 0 1 0 1 01 0 1 0 1 11 0 1 0 1 10 0 1 0 1 Y4的卡诺图

逻辑图

Y1Y2Y3Y4=1 =1 =1 ABCD盛建伦:《数字逻辑与VHDL逻辑设计》习题解答

4-5

图4.48所示是一个由两台水泵向水池供水的系统。水池中安置了A、B、C三个水位传感器。当水池水位低于C点时,两台水泵同时供水。当水池水位低于B点且高于C点时,由水泵M1单独供水。当水池水位低于A点且高于B点时,由水泵M2单独供水。当水池水位高于A点时,两台水泵都停止供水。试设计一个水泵控制电路。要求电路尽可能简单。

M1ABCM2图4.48 习题4-5的示意图

解:设水位低于传感器时,水位传感器的输出为1,水位高于传感器时,水位传感器的输出为0。

首先根据所给问题列出真值表。其中有几种情况是不可能出现的,用约束项表示。

A B C 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1

如果利用约束项化简 如果不利用约束项化简

M1?BM2?C?ABM1 M2 0 0 × × × × × × A 0 1 BC 00 01 × × 11 10 × × 0 0 1 1 A 0 1 BC 00 01 × × 11 10 × × 0 1 1 0 0 1 × × 1 0 1 1 M1的卡诺图 M2的卡诺图

M1?ABM2?ABC?AB?C?A(B?C) 逻辑图

M1M2≥1 M1& M2& = & 1 BACABC(a) 用约束项化简 (b) 不用约束项化简

4 - 4

盛建伦:《数字逻辑与VHDL逻辑设计》习题解答

习题4-5的逻辑图

4-6

试用3线-8线译码器74HC138和门电路实现如下多输出逻辑函数并画出逻辑图。

Y1?ABC?A(B?C)Y2?AC?ABY3?(A?B)(A?C)Y4?ABC?A?B?C解:先将逻辑函数变换成最小项之和的形式 Y1?ABC?AB?AC?ABC?ABC?ABC?A?BCY2?ABC?A?B?C?ABC?AB?C Y?AB?AC?ABC?ABC?ABC?ABC3再变换成与74HC138一致的形式

Y 1?ABC?ABC?ABC?A?BC?m?m?m?m 53211 逻辑图

& & Y4

Y?ABC?A?B?C?ABC?AB?C 2?m7?m4?m3?m2Y3?ABC?ABC?ABC?ABC?m7?m5?m3?m2Y4?ABC?A?B?C?m7?m0A B C S 1S 2S3Y0Y1Y2 Y3 74HC138Y4Y5A2Y6A1Y7A0Y1 & Y2 & Y3 令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

解:首先根据所给问题列出真值表。 X2 X1 X0 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 Y2 Y1 Y0 0 0 1 0 0 1 0 0 0 0 0 1 0 1 0 0 1 1 逻辑图

1 Y7 S3 Y6S2 Y5S1 Y4 A2 A1 A0 74HC138 & & Y2 Y1 Y0

X2 4 - 5 X1 X0 Y3Y2Y1Y0&

盛建伦:《数字逻辑与VHDL逻辑设计》习题解答

1 1 0 1 1 1 1 0 0 1 1 0 逻辑函数:

Y2?m6?m7?m6?m7

Y1?m4?m5?m7?m4?m5?m7

Y0?m0?m1?m3?m5?m0?m1?m3?m5

4-8 试用4选1数据选择器产生逻辑函数

Y?A?B?C?A?C?BC解:将逻辑函数变换成最小项之和的形式 Y?AB?C?ABC?A?B?C?ABC?ABC若用输入变量AB作为地址,C作为数据输入,则

Y?AB?C?AB?1?A?B?C?ABC 即A1=A,A0=B,D0= D2= C ,D1=1,D3=C。逻辑图如下图(a)所示。

若用输入变量AC作为地址, B作为数据输入,则

Y?AC?B?A?C?1?AC?B?ACB即A1=A,A0=C,D0=1, D2= B ,D1=D3= B。逻辑图如下图(b)所示。

ABC1 BAC1 1 1 A1 A0 D3 D2 D1 D0 A1 A0 D3 D2 D1 D0 4选1 数据选择器 4选1 数据选择器 Y Y YY

(a) AB作为地址 (b) AC作为地址

4-9

分析图4.49所示电路,写出输出Y的逻辑函数式并化简。

ABC1DD0A0 D0 D1 D2 D3 D4 D5 D6 D7 A1 8选1 数据选择器 A2 F Y 4 - 6

盛建伦:《数字逻辑与VHDL逻辑设计》习题解答

图4.49 习题4-9的电路

解:8选1数据选择器 C =A2,B=A1,A =A0,

D7= D3 =0,D2=1,D5=D4= D1= D0=D ,D6= D , 逻辑函数

Y?DCBA?DCBA?DCB?A?CBA?DC?BA?DC?B?A卡诺图化简

化简后的逻辑函数

4-10 试用8选1数据选择器产生逻辑函数

Y?AC?ABC?A?BCY?DBA?DB?DC?ABA DC 00 01 00 0 0 01 0 0 11 10 1 1 1 1 11 10 0 0 0 0 1 1 0 1 解:

Y?AC?ABC?A?BC?ABC?ABC?ABC?A?BC令A=A2,B=A1,C=A0,D7= D5= D2= D1=1,D6= D4= D3= D0=0,

逻辑图

01ABCA2 D0 D1 D2 D3 D4 D5 D6 D7 A1 8选1 数据选择器 A0 Z Y 4-11 试用3线-8线译码器74HC138和最少数量的二输入逻辑门设计一个不一致电路。当A、B、C 三个输入不一致时,输出为1,三个输入一致时,输出为0。

4 - 7

盛建伦:《数字逻辑与VHDL逻辑设计》习题解答

解:首先根据所给问题列出真值表。 真值表: A B C 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1

如果直接按照真值表写出逻辑函数表达式,很难用二输入逻辑门实现。但是,观察真值表不难发现,真值表中只有两行的Y为0,因此,按照真值表写出反函数表达式,应该容易用二输入逻辑门实现。

逻辑函数表达式: Y?A?B?C?ABC

Y?Y?A?B?C?ABCY 0 1 1 1 1 1 1 0 题目要求用3线-8线译码器74HC138实现,而74HC138的每个输出对应一个最小项的反,因此,还必须把逻辑函数式变换成与74HC138的逻辑函数相同的形式。

4 - 8

Y?A?B?C?ABC?A?B?C?ABC?m0?m7逻辑图

1 C B A Y7 S3 Y6S2 Y5S1 Y4 Y3 Y2A2 A1 Y1A0 Y74HC138 0& Y 盛建伦:《数字逻辑与VHDL逻辑设计》习题解答

4-12

试用8选1数据选择器产生逻辑函数

Y?ACD?A?BCD?ABCD?BC?BC?D解:

Y?ACD?A?BCD?ABCD?BC?BC?D?ABCD?AB?CD?A?BCD?ABCD?ABCD?ABCD?ABCD?ABC?D?ABC?D

如果用ABC作为数据选择器的地址(A=A2,B=A1,C=A0),D作为数据,则函数变换成

Y?AB?CD?A?BCD?ABC?1?ABC?1?ABC?1?ABC?DD7= D6=D3 =1, D5= D0=0, D4= D1=D , D2= D ,

DD1CBAA0 D0 D1 D2 D3 D4 D5 D6 D7 A1 8选1 数据选择器 A2 F Y如果用BCD作为数据选择器的地址(B=A2,C=A1,D=A0),A作为数据,

则函数变换成

Y?ABCD?AB?CD?A?BCD?1?BCD?1?BCD?1?BC?D D7= D6= D4=1,D2= D0=0,

D5= D1=A, D3 = A 4-13

A0A1DCBA0 D0 D1 D2 D3 D4 D5 D6 D7 A1 8选1 数据选择器 A2 F Y根据表4.23所示的功能表设计一个函数发生器电路,用8选1数据选择器实现。

表4.23 习题4-13的功能表 S1 S0 Y 0 0 A⊙B 4 - 9

A?B盛建伦:《数字逻辑与VHDL逻辑设计》习题解答

0 1 1 0 1 1

解:首先根据所给问题列出真值表。

A·B A+B 真值表: 卡诺图化简

S1 S0 A B 0 0 0 0 0 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 0 0 0 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

化简后 Y?S1AB?S1S0AB?S1AB?S1AB?S1?S0?A?B用S1AB作为地址,S0作为数据输入,即S1=A2,A= A1,B = A0。函数变换Y?S1AB?S1S0AB?S1AB?S1AB?S1?S0?A?B?S0?S1?A?B?1?S1AB?1?S1AB?1?S1AB?S0?S1ABY 1 0 0 1 0 0 0 1 0 1 1 1 0 1 1 0 AB S1S0 00 01 00 1 0 01 0 0 11 10 0 0 1 1 11 10 1 1 0 1 0 0 1 1 为

D6= D5= D3 = 1,D1=D2= D4=0,D7= D0= S 0 ,因此,画出逻辑图如下:

0逻辑图

1S01 A0 D0 D1 D2 D3 D4 D5 D6 D7 A1 8选1 数据选择器 A2 F B

AS1Y 4 - 10

盛建伦:《数字逻辑与VHDL逻辑设计》习题解答

4-14 图4.50所示是由3线8线译码器74HC138和8选1数据选择器构成的电路。试分析

① 当数据C2C1C0= D2D1D0时,输出F=? ② 当数据C2C1C0≠D2D1D0时,输出F=?

解:

① 当数据C2C1C0= D2D1D0时,输出F=0 ② 当数据C2C1C0≠D2D1D0时,输出F=1

这个电路可以检验数据C2C1C0与 D2D1D0是否相同。 4-15

设计用3个开关控制一个电灯的逻辑电路,要求改变任何一个开关的状态都能控制电灯由亮变灭或者由灭变亮。用数据选择器实现。

1Y7Y6Y5 Y474HC138 Y3Y2Y1A2A1A0Y0C2C1C0S1 S2 S3D7D6D5D4 8选1数据选择器D3YFD2D1D0A2A1A0D2D1D0图4.50 习题4-14的电路

解:用A、B、C分别表示3个开关的状态,Z=1表示电灯亮,Z=0表示电灯灭。令ABC=000时的状态Z=0。(注:此处先用格雷码写出变化表比较容易得真值表,初始状态也很重要)

真值表: 逻辑函数表达式: A B C 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1

Z 0 1 1 0 1 0 0 1 Z?A?B?C?A?B?C?A?B?C?A?B?C 4 - 11

盛建伦:《数字逻辑与VHDL逻辑设计》习题解答

C3个变量,可以用4选1数据选择器实现。 若用输入变量AB作为地址, C作为数据输入,

AB1 A1 A0 D3 D2 D1 D0 即A1=A,A0=B,D0= D3=C,D1=D2= C 。

4-16

逻辑图

4选1 数据选择器 Y Z试用逻辑门设计一个带控制端的半加/半减器,控制端X=1时为半加器,X=0时为半减器。

解:根据所给问题列出真值表。A、B为加/减的两个数。做加法运算时,S为半加/半减的和/首先差的输出,CO为进位输出。做减法运算时,S为差的输出,CO为借位输出。

半加器的功能是S=A+B。半减器的功能是S=A-B。 真值表: X A B 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1

S CO 0 0 1 1 1 0 0 0 0 0 1 0 1 0 0 1 逻辑函数不能化简,但是可以变换成异或表达式。

S?X?AB?XAB?XAB?XAB?X(A?B)?X(A?B)S =1 CO & ?A?BCO?X?AB?XAB?(X?A)BA B = X按照变换后的逻辑函数画逻辑图。

4-17

试用3线-8线译码器74HC138和门电路设计一个1位二进制全减器电路。输入是被减数、减数和来自低位的借位;输出是两数之差和向高位的借位信号。

解:全减器的功能是Si=Ai-Bi-Ci。首先根据所给问题列出真值表。 真值表: 逻辑函数:

Ai Bi Ci Si CO S?Ai?BiC?AiBCi?ABi?Ci?ABCiiiiiii 4 - 12

盛建伦:《数字逻辑与VHDL逻辑设计》习题解答

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 0 1 1 0 0 0 0 0 1 1 CO?Ai?BiCi?AiBiCi?AiBiCi?AiBiCi把逻辑函数式变换成与74HC138的逻辑函数相同的形式: Si?Ai?BiCi?AiBiCi?AiBi?Ci?AiBiCi?m1?m2?m4?m71247 ?m?m?m?m

4-18

1CO?Ai?BiCi?AiBiCi?AiBiCi?AiBiCi?m1?m2?m3?m7?m1?m2?m3?m7逻辑图

Ai Bi Ci Y7 3S Y6S2 Y5S1 Y4 A2 A1 A0 74HC138 & Si

Y3Y2Y1Y0& CO

试用4位数据比较器CC14585设计一个判别电路。若输入的数据代码D3D2D1D0>1001时,判别电路输出为1,否则输出为0。

解:从CC14585的一个端口输入数据D3D2D1D0,另一个端口输入1001。 CC14585的扩展输入端IA>B和IA=B必须接高电平,IA

1 0 0 1 逻辑图

D0 D1 D2 D3 1 A0A1A2CC14585A3IA?BYA?BF IA?BIA?BB0B1B2B3YA?BYA?B4-19 试根据表4.24的功能表,用逻辑门设计一个数据分配器(Demultiplexer)。A1、A0为地址输入,D为数据输入,W3、W2、W1、W0为数据输出。数据分配器的功能正好与数据选择器相反,是按照所给的地址把一个输入数据从N个输出通路中选择一个输出,如图4.51所示。

表4.24 习题4-19的功能表

4 - 13

盛建伦:《数字逻辑与VHDL逻辑设计》习题解答

A1 A0 D 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1

DW3 W2 W1 W0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 W3W2W1W0 DeMUX A1A0图4.51 数据分配器

解:表4.24的功能表可以简化为

A1 A0 W3 W2 W1 W0 0 0 0 0 0 D 0 1 0 0 D 0 1 0 0 D 0 0 1 1 D 0 0 0 逻辑函数 W0?A1?A0?D

逻辑图

W3& W2& W1& W0& W1?A1A0?DW2?A1A0?DA1A01 1 W3?A1A0?DD4-20

试比较图4.52所示两个逻辑电路的功能。

F1 & 1 01DCBAA0 D0 D1 D2 D3 D4 D5 D6 D7 A1 8选1 数据选择器 A2 Y Y 15Y14Y13Y12Y11Y10Y9Y8Y7Y6Y5Y4Y3Y2Y1Y04-16译码器 A3A2A1A0AF2 4 - 14 BCD盛建伦:《数字逻辑与VHDL逻辑设计》习题解答

图4.52 习题4-20的电路

解:根据图4.52写出逻辑函数式。

8选1 数据选择器的连接关系是:

D6= D7= D,D1=0,D2= 1,D5= D4= D3= D0= D ,A2=A,A1= B,A0= C ,所以,

F2?ABC?D7?ABC?D6?ABC?D5?AB?C?D4?ABC?D3?ABC?1?A?B?C?D0?ABCD?ABCD?ABCD?AB?C?D?ABCD?ABC?A?B?C?D?ABCD?ABCD?ABCD?AB?C?D?ABCD?ABCD?ABC?D?A?B?C?DF1?m15?m13?m10?m8?m6?m5?m4?m0?ABCD?ABCD?ABCD?AB?C?D?ABCD?ABCD?ABC?D?A?B?C?D?ABCD?ABCD?ABCD?AB?C?D?ABCD?ABCD?ABC?D?A?B?C?D比较FI和F2的,可看出,两个电路的逻辑函数相同,所以逻辑功能也相同。

4-21

用VHDL设计一个代码转换电路,输入为4位循环码,输出为4位二进制代码。

解:首先画出代码转换电路的系统框图,如

根据所给问题列出真值表。 G3 G2 G1 G0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 1 0 0 1 1 0 0 1 1 1 0 1 0 1 0 1 0 0

B3 B2 B1 B0 0 0 0 0 0 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

G3 B3 代码转换电路 ……… … G0 B0 4 - 15

盛建伦:《数字逻辑与VHDL逻辑设计》习题解答

1 1 0 0

1 1 0 1 1 1 1 1 1 1 1 0 1 0 1 0 1 0 1 1 1 0 0 1 1 0 0 0

1 0 0 0 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

根据系统框图写VHDL程序的Entity,用行为描述的方法,根据真值表写VHDL程序的Architecture。

VHDL程序如下: --Gray code to Binary code library ieee;

use ieee.std_logic_1164.all; entity gray2binary is

port( grayin : in std_logic_vector(3 downto 0); binaryout : out std_logic_vector(3 downto 0)); end gray2binary;

architecture behave of gray2binary is begin

with grayin select

binaryout <= \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ end behave;

4 - 16

盛建伦:《数字逻辑与VHDL逻辑设计》习题解答

4-22

用VHDL设计一个代码转换逻辑电路。把4位二进制代码转换成7段字符显示代码。能显示数字0~9和字母A,b,C,d,E,F。

解:电路的输入是4位代码,输出是7位代码。用D3~D0作为输入信号名,用Ya~Yg作为输出信号名,分别对应a、b、c、d、e、f、g这7个段。

系统框图 ……

列出代码转换逻辑的真值表。

表4.12 代码转换逻辑电路的真值表

D3 D2 D1 D0 Ya Yb Yc Yd Ye Yf Yg 0 0 0 0 0 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 0 0 0 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

根据系统框图设计VHDL程序的entity,用行为描述的方法,根据真值表设

4 - 17

Ya Yb Yc Yd Ye Yf Yg 代码转换电路 D3 D2 D1 D0 … 显示字符 0 1 2 3 4 5 6 7 8 9 A b C d E F 字形 1 1 1 1 1 1 0 0 1 1 0 0 0 0 1 1 0 1 1 0 1 1 1 1 1 0 0 1 0 1 1 0 0 1 1 1 0 1 1 0 1 1 1 0 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 0 0 1 1 1 1 1 1 0 0 1 1 1 0 0 1 1 1 1 0 1 1 0 0 1 1 1 1 1 0 0 0 1 1 1 盛建伦:《数字逻辑与VHDL逻辑设计》习题解答

计VHDL程序的architecture。

library ieee;

use ieee.std_logic_1164.all; entity bcd2seg7 is

port( bcdin : in std_logic_vector(3 downto 0); segout : out std_logic_vector(6 downto 0)); end bcd2seg7;

architecture behav of bcd2seg7 is begin

with bcdin select

segout <= \ --display\ \ \ \

\ \ \

\ --display\ \

\ --display\ \ --display\ \ --display\ \ --display\ \ --display\ \ --display\ \ --display\ \end behave;

4-22 (有没有简单方法呢?)

用VHDL设计一个代码转换逻辑电路。把7位的ASCII码转换成7段字符显示代码。能显示数字0~9,字母A,b,C,d,E,F,H,L,o,P,U,等。

解:

ASCII码 7段字符显示代码 Yg 字形 0 字符 A6 A5 A4 A3 A2 A1 A0 Ya Yb Yc Yd Ye Yf 0 0 1 1 0 0 0 0 1 1 1 1 1 1 4 - 18

盛建伦:《数字逻辑与VHDL逻辑设计》习题解答

1 2 3 4 5 6 7 8 9 A b C d E F H L o P U

0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 0 0 0 0 1 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 1 1 1 1 0 0 0 0 0 1 1 1 0 1 1 0 1 0 1 1 0 0 1 1 0 0 0 1 1 0 0 1 0 0 1 0 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 0 0 1 0 1 0 1 1 0 1 1 1 1 1 1 0 1 0 1 1 0 0 0 1 0 1 1 1 1 0 0 1 1 1 1 0 0 1 0 0 1 0 0 1 1 1 0 1 1 1 1 1 1 1 1 1 0 1 0 0 1 0 1 0 1 0 1 1 0 1 1 0 1 0 0 1 1 1 1 0 0 1 1 0 1 0 1 0 0 0 1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 0 0 0 1 1 1 0 1 1 1 1 1 0 1 1 1 1 0 1 1 0 1 1 1 1 1 0 1 1 1 1 0 1 1 1 1 0 1 1 0 4-23 用VHDL设计一个16位全加器。 解:

4-24

用VHDL设计一个8位数值比较器。 解:

4-25 用VHDL设计一个四位超前进位加法器。 解:

4 - 19

盛建伦:《数字逻辑与VHDL逻辑设计》习题解答

-- 4-Bit carry-look-ahead Full Adder library ieee;

use ieee.std_logic_1164.all; entity FULL_ADDER1 is

port ( A, B : in bit_vector(3 downto 0); Cin : in bit;

S : out bit_vector(3 downto 0); Cout : out BIT); end FULL_ADDER1; --

architecture FULL_ADDERp of FULL_ADDER1 is signal sA,sB,sS : bit_vector(3 downto 0); signal sCin , sCout : bit ; signal sC : bit_vector(3 downto 0) ; signal sT : bit_vector(3 downto 0) ; signal sG : bit_vector(3 downto 0) ; begin sA <= A ; sB <= B ; sCin <= Cin ;

sT(0) <= sA(0) xor sB(0) ; --P0 sG(0) <= sA(0) and sB(0) ; --G0 sT(1) <= sA(1) xor sB(1) ; --P1 sG(1) <= sA(1) and sB(1) ; --G1 sT(2) <= sA(2) xor sB(2) ; --P2 sG(2) <= sA(2) and sB(2) ; --G2 sT(3) <= sA(3) xor sB(3) ; --P3

sG(3) <= sA(3) and sB(3) ; --G3 --

sC(0)<=sG(0) or (sT(0) And sCin) ; --C0

sC(1)<=sG(1) or (sT(1) and (sG(0) or (sT(0) and sCin))); --C1

sC(2)<=sG(2) or (sT(2) and (sG(1) or (sT(1) and (sG(0) or (sT(0) and sCin))))); --C2 sC(3)<=sG(3) or (sT(3) and (sG(2) or (sT(2) and (sG(1) or (sT(1) and (sG(0) or (sT(0) and sCin))))))); --C3

--

sS(0) <= sT(0) xor sCin ; --S0 sS(1) <= sT(1) xor sC(0) ; --S1 sS(2) <= sT(2) xor sC(1) ; --S2

4 - 20

盛建伦:《数字逻辑与VHDL逻辑设计》习题解答

sS(3) <= sT(3) xor sC(2) ; --S3 --

S <= sS ; Cout <= sC(3) ; end ;

4-26 试用两片74HC138实现8421 BCD码的译码。

解:输入的8421 BCD码的D0~D2位直接与74HC138的代码输入端连接,8421 BCD码的D3分别与74HC138的一个使能端连接。当D3=0时, Z0~Z7中的某个输出有效;D3=1时,Z8或Z9输出有效。

逻辑图:

D2 D1 D0 1 D3 Y7 S3 Y6S2 Y5S1 Y4 Y3Y2A2 A1 Y1A0 YY7 S3 Y6S2 Y5S1 Y4 Y3Y2A2 A1 Y1A0 Y74HC138 074HC138 0Z9Z8Z7Z0 4 - 21

盛建伦:《数字逻辑与VHDL逻辑设计》习题解答

4 - 22

本文来源:https://www.bwwdw.com/article/u7q8.html

Top