VHDL程序设计题.docx

上传人:b****6 文档编号:7768544 上传时间:2023-01-26 格式:DOCX 页数:19 大小:184.88KB
下载 相关 举报
VHDL程序设计题.docx_第1页
第1页 / 共19页
VHDL程序设计题.docx_第2页
第2页 / 共19页
VHDL程序设计题.docx_第3页
第3页 / 共19页
VHDL程序设计题.docx_第4页
第4页 / 共19页
VHDL程序设计题.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

VHDL程序设计题.docx

《VHDL程序设计题.docx》由会员分享,可在线阅读,更多相关《VHDL程序设计题.docx(19页珍藏版)》请在冰豆网上搜索。

VHDL程序设计题.docx

VHDL程序设计题

VHDL程序设计题

四、编程题(共50分)

 

2、编写一个2输入与门的VHDL程序,请写出库、程序包、实体、构造体相关语句,将端

口定义为标准逻辑型数据结构(本题10分)

LIBRARYIEEE;

USE

(2)

ENTITYnand2IS

PORT(ab:

INSTD_LOGIC;(4)

ENDnand2:

(8)

ARCHITECTUREnand21OFnand2IS

BEGIN

y<=aNANDb:

--与y<=NOT(aANDb)等价

ENDnand2_1:

3、根据下表填写完成一个3-8线译码器的VHDL程序(16分)。

LIBRARYIEEE:

USEdecoder_3_to_8IS

PORT(a,b,c,g1,g2a,g2b:

INSTD_LOGIC:

y:

OUTSTD_LOGIC_VECTOR(7DOWNTO0)):

ENDdecoder_3_to_8:

ARCHITECTURErtlOFdecoder_3_to_8IS

SIGNALindata:

STD_LOGIC_VECTOR(2DOWNTO0):

BEGIN

indata<=c&b&a:

PROCESS(indata,g1,g2a,g2b)

BEGIN

IF(g1='1'ANDg2a='0'ANDg2b='0')THEN

CASEindataIS

WHEN

"000"=>y<="":

WHEN

"001"=>y<="":

WHEN

"010"=>y<="":

(10)

WHEN

"011"=>y<="":

WHEN

"100"=>y<="":

WHEN

"101"=>y<="":

WHEN

"110"=>y<="":

(12)

WHEN

"111"=>y<="01111111":

WHEN

OTHERS=>y<="XXXXXXXX":

ENDCASE:

ELSE

y

ENDIF:

ENDPROCESS;

ENDrtl;

週Wt

二iZEIM

■1人蠟

yo

yJ

ytt

yf

b

A

■p

y2

-—™

y3

■7

T

y&

X

1

X

X

X

X

I

11

1

]

J

1

1

I

X

X

1

X

X

X

J

1

I

1

1

1

1

1

o

X

X

X

X

X

J

]

1

1

I

i

1J

J

1

o

o

Q

Q

o

0

I

1

1

]

1

I

]

0

o

O

O

]

1

Q

1

1

T

1

1

1

J

o

o

O

I

o

]

1

o

1

I

1

1

1

1

0

o

D

11

1

1

1

I

0

1

I

1

i

1

o

o

1

o

o

1

1

1

1

o

1

1

T

I

o

o

o

I

1

]

I

1

1

0

1

1

I

0

o

1

1

'o

1

1

I

1

1

1

4

I

I

0

o

1

1

1

1

1

1;

1

1

I

]

0

4、三态门电原理图如右图所示,真值表如左图所示,请完成其(本题14分)

VHDL程序构造体部分。

春7-5三态ns值表

S!

抿输人

控tel閱人

數据播21|

din

CJl

X

c

1—

E

0

1

0

]1

1

J

LIBRARYIEEE;

USEtri_gateIS

PORT(din,en:

INSTD_LOGIC;

dout:

OUTSTD_LOGIC);

ENDtri_gate;

ARCHITECTUREzasOFtri_gateIS

 

BEGIN

PROCESS(din,en)

BEGIN

IF(en=‘)THENdout<=din;

ELSEdout<=Z';

ENDIF;

ENDPROCESS;

ENDzas;

四、编程题(共50分)

 

1、根据一下四选一程序的结构体部分,完成实体程序部分(本题entityMUX4is

portt

instdlogicvector(1downto0);

8分)

S:

d:

instdlogicvector(3downto0);

y:

outstdlogic

⑵⑷⑹(8)

 

endMUX4;

architecturebehaveofMUX4isbegin

process(s)

begin

if(s="00")theny<=d(0);

elsif(s="01")theny<=d

(1);

elsif(s="10")theny<=d

(2);

elsif(s="11")theny<=d(3);

else

null;endif;

endprocess;

endbehave;

);

endeight_tri;

(6)

architectureaofeighttriis

(8)

signalsel:

std_logic_vector(8downto0);beginsel<=en_&b;

y<=“000”when(sel=”100000001”)else

”100000010”when(sel=”100000100

when(sel=”100001000

when(se1=001'0000”)elsewhen(sel=”100100000

001”when(sel=

“010”

“011”

“100”

“101”

110”when(sel=”101000000

“111”when(se1=0000000”)else

((”

zzz;

enda;

)else

(10)

4、图中给出了4位逐位进位全加器,请完成其

)else

)else

(12)

)else

)else

(14)

(16)

VHDL程序。

(本题16分)

libraryIEEE;usefull_addis

port(

a,b:

carr:

sum:

instd_logic_vector(3downto0);inoutstd_logic_vector(4downto0);

outstd_logic_vector(3downto0)

);

endfull_add;

architecturefull_addcomponentadderport(

archoffull_addis

a,b,c:

carr:

sum:

instd_logic;inoutstd_logic;outstd_logic

);

endcomponent;

 

endfull_add_arch;

四、编程(共50分)

1、完成下图所示的触发器。

(本题10分)

portmap(a(0),b(0),carr(0),carr

(1),sum(0));

portmap(a

(1),b

(1),carr

(1),carr

(2),sum

(1));

libraryIEEE;

useVposDffis

port(CLK,CLR,D:

inSTD_LOGIC:

Q,QN:

outSTD_LOGIC);

endVposDf;

architectureVposDff_archofVposDffisbegin

process(CLK,CLR)

begin

QN<='1';

ifCLR='1'thenQ<='0';

elsifCLK'eventandCLK='1'then

Q<=D;QN<=notD;8分

endif;

10分

endprocess;

endVposDff_arch;

2、完成以下

4位全加器代码(本题10分)

libraryIEEE;

usefull_addis

port(

a.b:

in

std_logic_vector(3downto0);

cin:

in

std_logic;

cout:

outstd_logic;

sum:

out

std_logic_vector(3downto0)

);

endfull_add;

architecturefull_add_componentadderport(a.b.c:

archoffull_addis

in

carr:

sum:

out

out

std_logic;std_logic;

std_logic);

 

endcomponent;

signalc1.c2.c3:

std_logic;

portmap(a(0).b(0).cin.c1.sum(0));

portmap(a

(1).b⑴.c1.c2.sum

(1));

portmap(a

(2).b

(2).c2.c3.sum

(2)):

portmap(a(3).b(3).c3.cout.sum(3));

3、补充完整如下代码,使之完成4状态不断循环。

(本题10分)

ARCHITECTUREarcOFssIS

typestatesis(_signaloutc:

states;BEGIN

PROCESS(clk)

BEGIN

IFreset='1'then

outc<=st0;

elsifclk'eventandclk='1'then

CASEoutcIS

WHENst0=>outc<=st1;

WHENst1=>outc<=st2:

WHENst2=>outc<=st3;

WHENst3=>outc<=st0:

8分

9分

10分

 

WHENOTHERS=>outc<=st0;

ENDCASE;

endif;

ENDPROCESS;

ENDarc;

4、设计异或门逻辑:

(本题20分)如下异或门,填写右边的真值表。

(此项5分)

 

A

-1

Y

J

A

B

Y

0^—

0

0

1

1、

1

0

1

C

1

0

其表达式可以表示为:

(此项5分)

 

这一关系图示如下:

试编写完整的VHDL代码实现以上逻辑。

可以采用任何描述法。

(此项10分)

libraryieee;

use

entityyihuo1is

port(

y

endyihuo1;

architectureyihuo1_behaviorofyihuo1isbegin

process

begin

ifa

a,b:

instd_logic;:

outstd_logic);

ab)

y<

=ax

(第

orb;

2种写法)

=btheny<='0';

els

y<='1';endif;endproCess;ehavior;

endyihuo1_b

10分

四、编程(共50分,除特殊声明,实体可只写出PORT语句,结构体要写完整)

1、用IF语句编写一个二选一电路,要求输入a、b,sel为选择端,输出q。

(本题10分)

 

Entitysel2is

Port(

a,b:

instd_logic;sel:

instd_logic;q:

outstd_logic);

Endsel2;

Architectureaofsel2is

begin

ifsel=0'then

q<=a;

else

q<=b;endif;

enda;

(9)

(10)

2、编写一个4位加法计数器VHDL程序的进程(不必写整个结构框架),要求复位信号reset低电平时计数器清零,变高后,在上升沿开始工作;输入时钟信号为clk,输出为q。

(本

题10分)

Process(reset,clk)

begin

ifreset=0'hen

q<=0000”;

elsifclk'ventandclk=0'then

q<=q+1;endif;

endprocess;

(9)

(10)

3、填写完成一个8-3线编码器的真值表(5分),并写出其VHDL程序(10分)。

8-3线编码器真值表

en

b

y0y1y2

1

00000000

000

1

00000010

001

1

00000100

010

 

1

00001000

011

1

00010000

100

1

00100000

101

1

01000000

110

1

111

0

xxxxxxxx

高阻态

architectureaofeight_triis

signalsel:

std_logic_vector(8downto0);beginsel<=en&b;

enda;

4、根据已给出的全加器的VHDL程序,试写出一个4位逐位进位全加器的VHDL程序。

(本题15分)

libraryIEEE;

useadderis

port(

 

四、编程(共50分,除特殊声明,实体可只写出PORT语句,结构体要写完整)

1、用IF语句编写一个四选一电路,要求输入dO〜d3,s为选择端,输出y。

(本题10分)

entityMUX4is

port(instd_logic_vector(1downto0);instd_logic_vector(3downto0);outstd_logic

(8)

(10)

equ_tmp<='1';endif;

else

equ_tmp<='1';

endif;

endprocess;

3、填写完成一个3-8线译码器的真值表(5分),并写出其VHDL程序(10分)。

3-8译码器的真值表

en

a2a1a0

y

1

000

00000001

1

001

00000010

1

010

00000100

1

011

00001000

1

100

00010000

1

101

00100000

1

110

01000000

1

111

0

xxx

00000000

);

endtri_eight;

architectureaoftri_eightis

signalsel:

std_logic_vector(3downto0);

begin

sel(0)<=a(0);sel

(1)<=a

(1);sel

(2)<=a

(2);sel(3)<=en;withselselect

y<="00000001"when"1000",

"00000010"when"1001",

"00000100"when

"1010",

"00001000"when

"1011",

"00010000"when

"1100",

"00100000"when

"1101",

"01000000"when

"1110",

""when"1111",

"00000000"when

others;

enda;

(10)

4、根据已给出的二-十(BCD)分)

进制优先权编码器功能表,试写出其VHDL程序。

(本题15

 

 

二-十(BCD进制优先权编码器功能表

输入

输出

I1

12

13

14

15

16

17

18

I9

Y3

Y2

Y1

Y0

1

1

1

1

1

1

1

1

1

1

1

1

1

X

X

X

X

X

X

X

X

0

0

1

1

0

X

X

X

X

X

X

X

0

1

0

1

1

1

X

X

X

X

X

X

0

1

1

1

0

0

0

X

X

X

X

X

0

1

1

1

1

0

0

1

X

X

X

X

0

1

1

1

1

1

0

1

0

X

X

X

0

1

1

1

1

1

1

0

1

1

X

X

0

1

1

1

1

1

1

1

1

0

0

X

0

1

1

1

1

1

1

1

1

1

0

1

0

1

1

1

1

1

1

1

1

1

1

1

0

entityprioris

port(

d:

instd_logic_vector(9downto1);

q:

outstd_logic_vector(3downto0));

(2)

(4)

endprior;

architecturebehaviorofpriorisbegin

process(d)

begin

ifd="1"thenq<="1111";

elsifd(9)='0'thenq<="0110";

elsifd(8)='0'thenq<="0111";

elsifd(7)='0'thenq<="1000";

elsifd(6)='0'thenq<="1001";

elsifd(5)='0'thenq<="1010";

elsifd(4)='0'thenq<="1011";

elsifd(3)='0'thenq<="1100";

elsifd

(2)='0'thenq<="1101";

elsifd

(1)='0'thenq<="1110";

endif;

endprocess;

endbehavior;

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

当前位置:首页 > 小学教育 > 语文

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

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