EDA程序设计试题及答案讲解.docx

上传人:b****8 文档编号:29662489 上传时间:2023-07-26 格式:DOCX 页数:41 大小:81.16KB
下载 相关 举报
EDA程序设计试题及答案讲解.docx_第1页
第1页 / 共41页
EDA程序设计试题及答案讲解.docx_第2页
第2页 / 共41页
EDA程序设计试题及答案讲解.docx_第3页
第3页 / 共41页
EDA程序设计试题及答案讲解.docx_第4页
第4页 / 共41页
EDA程序设计试题及答案讲解.docx_第5页
第5页 / 共41页
点击查看更多>>
下载资源
资源描述

EDA程序设计试题及答案讲解.docx

《EDA程序设计试题及答案讲解.docx》由会员分享,可在线阅读,更多相关《EDA程序设计试题及答案讲解.docx(41页珍藏版)》请在冰豆网上搜索。

EDA程序设计试题及答案讲解.docx

EDA程序设计试题及答案讲解

1.请画出下段程序的真值表,并说明该电路的功能。

LIBRARYieee;

USEieee.std_logic_1164.all;

ENTITYaaaIS

PORT(oe,dir:

INSTD_LOGIC;

a,b:

INOUTSTD_LOGIC_VECTOR(7DOWNTO0);

ENDaaa;

ARCHITECTUREarOFaaaIS

BEGIN

PROCESS(oe,dir)输入输出

BEGINa1a0x3x2x1x0

IFoe=’0’THENa<=”zzzzzzzz”;b<=”zzzzzzzz”;000001

ELSIFoe=’1’THEN010010

IFdir=’0’THENb<=a;100100

ELSIFdir=’1’THENa<=b;111000

ENDIF;

ENDIF;

ENDPROCESS;

ENDar;

功能为:

2-4译码器…………………………………………..4分

2.请说明下段程序的功能,写出真值表,并画出输入输出波形。

LIBRARYieee;

USEieee.std_logic_1164.all;

USEieee.std_logic_arith.all;

USEieee.std_logic_unsigned.all;

ENTITYaaaIS

PORT(reset,clk:

INSTD_LOGIC;

q:

BUFFERSTD_LOGIC_VECTOR(2DOWNTO0)

);

ENDaaa;

ARCHITECTUREbdOFaaaIS

BEGIN

PROCESS(clk,reset)

BEGIN

IF(reset='0')THENq<="000";

ELSIF(clk'eventANDclk='1')THEN

IF(q=5)THENq<="000";

ELSEq<=q+1;

ENDIF;

ENDIF;

ENDPROCESS;

ENDbd;

功能为:

带进位借位的4位加/减法器。

…………………………………..3分

输入输出波形图如下:

………………………………………………………7分

m

a[3..0]

b[3..0]

c[3..0]

d

1.试用VHDL语言编程实现74LS273芯片的功能。

LIBRARYieee;

USEieee.std_logic_1164.ALL;2’

ENTITYls273IS1’

PORT(

clr,clk:

INstd_logic;

d:

INstd_logic_vector(7DOWNTO0);

q:

OUTstd_logic_vector(7DOWNTO0);4’

);

ENDls273;

ARCHITECTURElock8OFls273IS1’

BEGIN

PROCESS(clk)1’

BEGIN

IF(CLR=’0’)THENq<=”00000000”;2’

ELSEIF(clk’eventANDclk=’1’)THENq<=d;3’

ELSEIF(clk=’0’)THENq<=q;1’

ENDIF;

ENDPROCESS;

ENDlock8;

3.请用VHDL语言编程实现一个状态向量发生器。

LIBRARYieee;

USEieee.std_logic_1164.ALL;2’

ENTITYstasIS1’

PORT(

cp,rst:

INstd_logic;

p:

BUFFERstd_logic_vector(7DOWNTO0);2’

);

ENDstas;

ARCHITECTUREarstasOFstasIS1’

BEGIN

PROCESS(cp)1’

BEGIN

IF(rst=”0”)THENp<=”00000000”;1’

ELSEIF(cp’eventANDcp=’1’)1’

WITHpSELECT

p<=”10101010”WHEN“00000000”;

”01010101”WHEN“10101010”;

”00001111”WHEN“01010101”;

”11110000”WHEN“00001111”;

”11111111”WHEN“11110000”;

”00000000”WHEN“11111111”;

”00000000”WHENOTHERS;6’

ENDIF

ENDPROCESS;

ENDarstas;

1.阅读下段程序,画出该电路的真值表,并详细说明该电路的功能。

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYab_8IS

PORT(a,b:

INSTD_LOGIC_VECTOR(7DOWNTO0);

ahb,alb,aeb:

OUTSTD_LOGIC);

ENDab_8;

ARCHITECTUREbdOFab_8IS

BEGIN

PROCESS(a,b)

BEGIN

IFa>bTHENahb<=’1’;alb<=’0’;aeb<=’0’;

ELSIFa

ELSEahb<=’0’;alb<=’0’;aeb<=’1’;

ENDIF;

ENDPROCESS;

ENDbd;

1.

(1)真值表如下:

(5’)

输入

输出

a、b

ahb

alb

aeb

a>b

1

0

0

a

0

1

0

a=b

0

0

1

(2)该电路是一个8位两输入比较器,(2’)

a、b是两个8位输入端;(1’)

ahb、alb和aeb为比较结果输出端,某种比较结果为真时,相应的输出端为“1”,其余端输出为“0”。

(2’)

1.试用VHDL语言编程实现一个2-4译码器,其真表如下:

输入端

输出端

en

select

y

0

XX

“1111”

1

00

“1110”

1

01

“1101”

1

10

“1011”

1

11

“0111”

2-4译码器码参考程序如下:

(答案不唯一,用case语句、with…select语句都可以。

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;(1’)

ENTITYym24IS

PORT(en:

INSTD_LOGIC;

select:

OUTSTD_LOGIC_VECTOR(1DOWNTO0);

y:

OUTSTD_LOGIC_VECTOR(3DOWNTO0)(3’)

);

ENDym24;

ARCHITECTUREbdOFym24IS

BEGIN

PROCESS(en)(1’)

IF(en=’1’)THEN

y<=”1110”WHENselect=”00”ELSE

”1101”WHENselect=”01”ELSE

”1011”WHENselect=”10”ELSE

”0111”WHENselect=”11”ELSE(4’)

”1111”;

ELSEy<=”1111”;

ENDPROCESS;

ENDbd;

2.试用VHDL语言设计一个六路8位总线复用器,其中A、B、C、D、E、F都是8位输入总线,Q为8位输出总线,S为3位选择端,其功能如下:

输入端

输出端

S2

S1

S0

Q7~Q0

0

0

0

Q=A

0

0

1

Q=B

0

1

0

Q=C

0

1

1

Q=D

1

0

0

Q=E

1

0

1

Q=F

其它

B=“00000000”

六路8位总线复用器参考程序:

(答案不唯一)

LIBRARYieee;

USEieee.std_logic_1164.ALL;

ENTITYmux6IS(1’)

PORT(S:

INstd_logic_vector(2DOWNTO0);

A,B,C,D,E,F:

INstd_logic_vector(7DOWNTO0);

Q:

OUTstd_logic_vector(7DOWNTO0)

);(3’)

ENDmux6;

ARCHITECTUREbdOFmux6IS

BEGIN

PROCESS(S)

BEGIN(1’)

CASESIS

WHEN"000"=>Q<=A;

WHEN"001"=>Q<=B;

WHEN"010"=>Q<=C;

WHEN"011"=>Q<=D;

WHEN"100"=>Q<=E;

WHEN"101"=>Q<=F;

WHENOTHERS=>Q<="00000000";(4’)

ENDCASE;

ENDPROCESS;

ENDbd;

2、已知三选一电路如图,判断下列程序是否有错误,如有则指出错误所在,并给出完整程序。

(10分)

libraryieee;

useieee.std_logic_1164.all;

ENTITYMAXis

port(a1,a2,a3,s0,s1:

inbit;

outy:

outbit);

endmax;(2’)

architectureoneofmaxis

componentmux21a

port(a,b,s:

instd_logic;

y:

outstd_logic);

endcomponent;(2’)

signaltempstd_logic;(2’)

begin

u1:

mux21aportmap(a2,a3,s0,temp);(2’)

u2:

mux21aportmap(a1,temp,s1,outy);(2’)

endone;

1.已知电路原理图如下,请用VHDL语言编写其程序

答:

libraryieee;

useieee.std_logic_1164.all;

entitymux21is

port(a,b,s:

inbit;

y:

outbit);

endmux21;(4’)

architectureoneofmux21is

singled,e:

bit;

begin

d<=aand(not)s;

e<=bands;

y<=dore;

endone;

2.设计一个带有异步清零功能的十进制计数器。

计数器时钟clk上升沿有效、清零端CLRN、进位输出co。

答:

libraryieee;

useieee.std_logic_1164.all;

entitycounter10is

port(clk,CLRN:

instd_logic;

dout:

outintegerrange0to9);

endcounter10;(5’)

architecturebehavofcounter10IS

begin

process(clk)

variablecnt:

integerrange0to9;(3’)

begin

IFCLRN='0'THEN

CNT:

=0;

ELSIF

clk='1'andclk'eventthen

ifcnt=9then

cnt:

=0;

else

cnt:

=cnt+1;

endif;

endif;

dout<=cnt;

endprocess;

endbehav;

(7’)

3.1)用VHDL语言编写半加器和或门器件的程序,如图所示:

答:

半加器程序:

libraryieee;

useieee.std_logic_1164.all;

entityh_adderis

port(a,b:

instd_logic;

co,so:

outstd_logic);

endh_adder;(2’)

architectureoneofh_adderis

begin

so<=not(axor(notb));

co<=aandb;

endone;(3’)

或门程序:

libraryieee;

useieee.std_logic_1164.all;

entityor2ais

port(a,b:

instd_logic;

c:

outstd_logic);

endor2a;(2’)

architectureoneofor2ais

begin

c<=aorb;

endone;

2)在上道题目的基础上用元件例化语句设计1位全加器。

主程序:

libraryieee;

useieee.std_logic_1164.all;

entityf_adderis

port(ain,bin,cin:

instd_logic;

cout,sum:

outstd_logic);

endentityf_adder;

architecturefd1off_adderis

componenth_adder

port(a,b:

instd_logic;

co,so:

outstd_logic);

endcomponent;(5’)

componentor2a

port(a,b:

instd_logic;

c:

outstd_logic);

endcomponent;

signald,e,f:

std_logic;

begin

u1:

h_adderportmap(a=>ain,b=>bin,co=>d,so=>e);

u2:

h_adderportmap(a=>e,b=>cin,co=>f,so=>sum);

u3:

or2aportmap(d,f,cout);

endfd1;(5’)

1.试用VHDL语言编程实现一个总线开关,其真值表如下:

输入

输出

en

select

A0~A6

B0~B6

Y0~Y6

‘0’

‘x’

“ZZZZZZZ”

‘1’

‘0’

A

‘1’

‘1’

B

1.总线开关的参考程序如下:

LIBRARYieee;

USEieee.std_logic_1164.all;(1’)

ENTITYaaaIS

PORT(en,select:

INSTD_LOGIC;

A,B:

INSTD_LOGIC_VECTOR(6DOWNTO0);

Y:

OUTSTD_LOGIC_VECTOR(6DOWNTO0)

ENDaaa;(4’)

ARCHITECTUREarOFaaaIS

BEGIN

PROCESS(en,select)

BEGIN

IFen=’0’THENY<=”ZZZZZZZ”;

ELSIFen=’1’THEN

IFselect=’0’THENY<=A;

ELSIFselect=’1’THENY<=B;

ENDIF;

ENDIF;

ENDPROCESS;

ENDar;(5’)

2.试用VHDL语言编程实现一个M10计数器,要求该计数器有一个时钟输入端clk,一个复位端rst(低电平复位),一个使能端en(高电平时允许计数),一个“计数到”输出端cout,一个4位二进制当前计数值输出口q;cout端仅当计数满的一个时钟周期输出高电平,其余时刻全保持低电平。

2.M10计数器参考程序:

LIBRARYieee;

USEieee.std_logic_1164.all;

USEieee.std_logic_arith.all;

USEieee.std_logic_unsigned.all;(1’)

ENTITYaaaIS

PORT(clk,rst,en:

INSTD_LOGIC;

cout:

OUTSTD_LOGIC;

q:

BUFFERSTD_LOGIC_VECTOR(3DOWNTO0)

);

ENDaaa;(4’)

ARCHITECTUREbdOFaaaIS

BEGIN

PROCESS(clk,reset,en)

BEGIN

IF(rst='0')THENq<="0000";

ELSIF(clk'eventANDclk='1')THEN

IFen=’1’THEN

IF(q=9)THENq<="0000";

ELSEq<=q+1;

ENDIF;

ENDIF;

ENDIF;

ENDPROCESS;

ENDbd;(10’)

3.请用VHDL语言编程,用一个状态机模型实现一个七段码LED字符发生器。

该电路有一个复位输入端RST,一个时钟输入端CP,一组七段码输出端a~g。

在LED上七个段的排列位置如图所示。

该电路的功能为,当复位输入端RST为低电平时,输出端口输出全零,无显示;当RST为高电平时,在时钟信号CP的每个上升沿,输出端依次轮流输出5个字符“HAPPY”的七段码(共阴极接法),周而复始。

3.用VHDL语言编程实现一个LED字符发生器参考程序:

LIBRARYieee;

USEieee.std_logic_1164.ALL;

ENTITYgencIS(1’)

PORT(rst,cp:

INSTD_LOGIC;

a,b,c,d,e,f,g:

OUTSTD_LOGIC

);(1’)

ENDgenc;

ARCHITECTUREaaOFgencIS

TYPEstateIS(s0,s1,s2,s3,s4,s5);

SIGNALpstate:

state;

SIGNALdout:

STD_LOGIC_VECTOR(6DOWNTO0);(2’)

BEGIN

pr1:

PROCESS(cp,rst,)

BEGIN

IFrst='0'THENpstate<=s0;

ELSIF(cp'eventANDcp='0')THEN

CASEpstateIS

WHENs0=>pstate<=s1;

WHENs1=>pstate<=s2;

WHENs2=>pstate<=s3;

WHENs3=>pstate<=s4;

WHENs4=>pstate<=s5;

WHENs5=>pstate<=s1;

WHENOTHERS=>pstate<=s0;

ENDCASE;

ENDIF;

ENDPROCESS;(5’)

pr2:

PROCESS(pstate)

BEGIN

CASEstateIS

WHENs0=>dout<="0000000";--无显示

WHENs1=>dout<="0110111";--“H”

WHENs2=>dout<="1110111";--“A”

WHENs3=>dout<="1100111";--“P”

WHENs4=>dout<="1100111";--“P”

WHENs5=>dout<="0111011";--“Y”

WHENOTHERS=>dout<="0000000";--无显示

ENDCASE;

ENDPROCESS;(5’)

a<=dout(6);b<=dout(5);c<=dout(4);d<=dout(3);e<=dout

(2);f<=dout

(1);g<=dout(0);

ENDaa;(1’)

2.试用VHDL语言和进程语句,编程实现一个3-8译码器。

该译码器的功能为,当使能信号EN为低电平时,输出端Y7~Y0全为高电平(没有输出端被选中);当EN为高电平时,每一种ABC的输入状态组合能惟一地选中一路输出(被选中的端输出低电平)。

真值表如下:

输入

输出

A

B

C

EN

Y7

Y6

Y5

Y4

Y3

Y2

Y1

Y0

0

0

0

1

1

1

1

1

1

1

1

0

0

0

1

1

1

1

1

1

1

1

0

1

0

1

0

1

1

1

1

1

1

0

1

1

0

1

1

1

1

1

1

1

0

1

1

1

1

0

0

1

1

1

1

0

1

1

1

1

1

0

1

1

1

1

0

1

1

1

1

1

1

1

0

1

1

0

1

1

1

1

1

1

1

1

1

1

0

1

1

1

1

1

1

1

×

×

×

0

1

1

1

1

1

1

1

1

LIBRARYieee;

USEieee.std_logic_1164.ALL;2’

ENTITYym38IS1’

PORT(

a,b,c,en:

INstd_logic;

y:

OUTstd_logi

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 成人教育 > 成考

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1