硬件描述语言试题.docx

上传人:b****7 文档编号:16075641 上传时间:2023-07-10 格式:DOCX 页数:80 大小:236.58KB
下载 相关 举报
硬件描述语言试题.docx_第1页
第1页 / 共80页
硬件描述语言试题.docx_第2页
第2页 / 共80页
硬件描述语言试题.docx_第3页
第3页 / 共80页
硬件描述语言试题.docx_第4页
第4页 / 共80页
硬件描述语言试题.docx_第5页
第5页 / 共80页
硬件描述语言试题.docx_第6页
第6页 / 共80页
硬件描述语言试题.docx_第7页
第7页 / 共80页
硬件描述语言试题.docx_第8页
第8页 / 共80页
硬件描述语言试题.docx_第9页
第9页 / 共80页
硬件描述语言试题.docx_第10页
第10页 / 共80页
硬件描述语言试题.docx_第11页
第11页 / 共80页
硬件描述语言试题.docx_第12页
第12页 / 共80页
硬件描述语言试题.docx_第13页
第13页 / 共80页
硬件描述语言试题.docx_第14页
第14页 / 共80页
硬件描述语言试题.docx_第15页
第15页 / 共80页
硬件描述语言试题.docx_第16页
第16页 / 共80页
硬件描述语言试题.docx_第17页
第17页 / 共80页
硬件描述语言试题.docx_第18页
第18页 / 共80页
硬件描述语言试题.docx_第19页
第19页 / 共80页
硬件描述语言试题.docx_第20页
第20页 / 共80页
亲,该文档总共80页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

硬件描述语言试题.docx

《硬件描述语言试题.docx》由会员分享,可在线阅读,更多相关《硬件描述语言试题.docx(80页珍藏版)》请在冰点文库上搜索。

硬件描述语言试题.docx

硬件描述语言试题

2007/2008学年第一学期末考试试题(A卷)

硬件描述语言及器件

使用班级:

05182401/2/3

总分

 

得分

一、填空题(20分,每空格1分)

1、VHDL是否区分大小写?

2、digital._8标识符合法吗?

12_bit标识符合法吗?

signal标识符合法吗?

3、结构体有三种描述方式,分另寸是、

和。

4、请分别列举一个常用的库和程序包、

5、一个信号处于高阻(三态)时的值在VHDL中描述为

6、将一个信号width定义为一个4位标准逻辑向量的语句为

7、/=是操作符,功能是

8、设D0为'0',D1为'1',D2为'1',D3为'0',D3&D2&D1&D0的运算结果是

(D3orD2)and(D1andnotD0)的运算结果是:

9、赋值语句是(并行/串行)执行的,if语句是(并行/串行)执行的。

10、请列举三种可编程逻辑器件:

得分

二、简答(20分,每小题5分)

1、简述VHDL程序的基本结构。

2、简述信号与变量的区另阮

3、简述可编程逻辑器件的优点。

4、试比较moore状态机与mealy状态机的异同。

得分

三、判断题(10分)

libraryieee;

useieee.std_logic_arith.all;

useieee.std_logic_unsigned.all;

以上库和程序包语句有无错误?

,有的话请在原程序相应位置改正。

entityromis

port(

addr:

instd_logic_vector(0to3);

ce:

instd_logic;

data:

outstd_logic_vector(7downto0);)

endrom;

以上port语句有无错误?

,有的话请在原程序相应位置改正。

architecturebehaveofromis

begin

process

begin

ifce='0'then

caseaddris

when"0000"=>

data<="10001001";

when"0001"=>

data<="10001010";

when"0010"=>

data<="10001011";

when"0011"=>

data<="10001100";

when"0100"=>

data<="10001101";

when"0101"=>

data<="10001110";

when"0110"=>

data<="10001111";

when"0111"=>

data<="10010000";

when"1000"=>

data<="10010001";

when"1001"=>

data<="10010010";

when"1010"=>

data<="10010011";

when"1011"=>

data<="10010100";

when"1100"=>

data<="10010101";

when"1101"=>

data<="10010110";

when"1110"=>

data<="10010111";

whenothers=>

data<="10011000";

endcase;

else

data:

="OOOOOOOO";

endprocess;

endbehave;

以上architecture中有哪些错误?

请在原程序相应位置改正。

得分

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

1、用IF语句编写一个二选一电路,要求输入a、b,sel为选择端(低电平选择a端,高电平

选择b端),输出q。

(本题10分)

 

reset

本题

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

10分)

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

8-3线编码器真值表

en

b

y0y1y2

1

000

1

00000010

001

1

010

1

00001000

011

1

00010000

1

00100000

101

1

01000000

1

111

0

xxxxxxxx

高阻态

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

(本题15分)

libraryIEEE;

useIEEE.std_logic_1164.all;

useIEEE.std_logic_arith.all;

useIEEE.std_logic_unsigned.all;

entityadderis

port(

instd_logic;inoutstd_logic;outstd_logic

a,b,c:

carr:

sum:

);endadder;

architectureadder_archofadderisbegin

sum<=axorbxorc;

carr<=(aandb)or(bandc)or(aandc);endadder_arch;

得分

五、附加题(10分,本题可产生附加分,全卷不能超过100分)

完成下面moore状态机程序,该设计为一个存储控制器状态机。

能够根据微处理器的读

写周期,分别对存储器输出写使能WE^读使能0E信号。

工作过程:

存储控制器的输入信号为微处理器的就绪READY及读写read_write信号。

当上电

复位后,或read有效时,存储控制器开始工作,并在下一个时钟周期判断本次作业任务是读存储器还是写存储器。

判断的依据是,当read_write有效时为读操作,否则为写操作。

也就

是说非读即写。

读操作时,0E信号有效,写操作时,WE言号有效。

当READY信号有效时,表

示读本次作业处理完成,并使控制器恢复到初始状态。

控制器真值表和状态图如下。

存储控制器真值表

状态

输出

O

E

E

W

空闲(IDLE)

0

0

判断

(DECISION)

0

0

写(WRITE)

0

1

读(READ)

1

0

存储器控制器状态图

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYmooreIS

PORT(clk,ready,read_write:

INStd_Logic;

oe,we:

OUTStd_Logic);

ENDmoore;

ARCHITECTUREstate_machineOFMooreIS

TYPEstate_typeIS(,,,);

SIGNALpresent_state,next_state:

state_type;

BEGIN

state_comb:

PROCESS(present_state,ready,read_write)

BEGIN

CASEpresent_stateIS

WHENidle=>

oe<=;

we<=;

IF(ready='1')THEN

next_state<=decision;

ELSE

next_state<=idle;

ENDIF;

WHENdecision=>

oe<=;

we<=;

IF(read_write='1')THENnext_state<=read;

ELSE

next_state<=;

ENDIF;

WHENread=>

oe<=;

we<=;

IF(ready='1')THEN

next_state<=idle;

ELSE

next_state<=read;

ENDIF;

WHENwrite=>

oe<=;

we<=;

IF(ready='1')THEN

next_state<=;

ELSE

next_state<=write;

ENDIF;

ENDCASE;

ENDPROCESSstate_comb;

state_clocked:

PROCESS(clk)

BEGIN

IFTHEN

present_state<=next_state;

ENDIF;

ENDPROCESSstate_clocked;

ENDstate_machine;

2007/2008学年第一学期末考试试题答案及评分标准

(A卷)

硬件描述语言及器件

使用班级:

05182401/2/3

总分

得分

一、填空题(20分,每空格1分)

1、VHDL是否区分大小写?

不区分。

2、digital._8标识符合法吗?

不合法。

12_bit标识符合法吗?

不合法

signal标识符合法吗?

不合法。

3、结构体有三种描述方式,分别是数据流、行为、

和结构化。

4、请分另U列举一个常用的库和程序包libraryieee、useieee.std_logic_1164.all

5、一个信号处于高阻(三态)时的值在VHDL中描述为工

6、将一个信号width定义为一个4位标准逻辑向量为

signalwidth:

stdlogicvector(3downto0)。

7、/=是不相等操作符,功能是在条件判断是判断操作符两端不相等。

8、设D0为'0',D1为'1',D2为'1',D3为'0',D3&D2&D1&D0的运算结果是

“0110”,(D3orD2)and(D1andnotD0)的运算结果是:

‘1’

9、赋值语句是(并行/串行)并行执行的,if语句是(并行/串行)串行执行的。

10、请列举三种可编程逻辑器件:

EEPROM、GAL、FPGA

得分

二、简答(20分,每小题5分)

1、简述VHDL程序的基本结构。

(1)

程序包

(2)

实体

(3)

结构体

(5)若答出配置也可加1分

2、简述信号与变量的区另阮

信号延时赋值,变量立即赋值

(2)

信号的代入使用<=,变量的代入使用:

=;(4)

信号在实际的硬件当中有对应的连线,变量没有(5)

3、简述可编程逻辑器件的优点。

集成度高,可以替代多至几千块通用IC芯片

-极大减小电路的面积,降低功耗,提高可靠性

(1)

具有完善先进的开发工具

-提供语言、图形等设计方法,十分灵活

-通过仿真工具来验证设计的正确性

(2)

可以反复地擦除、编程,方便设计的修改和升级(3)

灵活地定义管脚功能,减轻设计工作量,缩短系统开发时间(4)

保密性好(5)

4、试比较moore状态机与mealy状态机的异同。

 

Moore输出只是状态机当前状态的函数

(3)

Mealy输出为有限状态机当前值和输入值的函数

(5)

 

得分

三、判断题(10分)

libraryieee;

useieee.stdlogicarith.all;.....—一..

一n-—useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

以上库和程序包语句有无错误?

有,有的话请在原程序相应位置改正。

entityromisport(

addr:

instd_logic_vector(0to3);

ce:

instd_logic;

data:

outstd_logic_vector(7downto

0);

endrom;

以上port语句有无错误?

有,有的话请在原程序相应位置改正。

(4)

architecturebehaveofromis

begin

process(ce,addr)

begin

ifce='0'then

caseaddris

when"0000"=>

data<="10001001";

when"0001"=>

data<="10001010";

when"0010"=>

data<="10001011";

when"0011"=>

data<="10001100";

(6)

when"0100"=>

data<="10001101";

 

when"0101"=>

data<="10001110";

when"0110"=>

data<="10001111";

when"0111"=>

data<="10010000";

when"1000"=>

data<="10010001";

when"1001"=>

data<="10010010";

when"1010"=>

data<="10010011";

when"1011"=>

data<="10010100";

when"1100"=>

data<="10010101";

when"1101"=>

data<="10010110";

when"1110"=>

data<="10010111";

whenothers=>

data<="10011000";

endcase;

else

data:

="OOOOOOOO";--data<=00000000”;(8)

endif;(10)

endprocess;

endbehave;

以上architecture中有哪些错误?

请在原程序相应位置改正。

得分

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

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

(本题10分)

Entitysel2is

Port(

a,b:

instd_logic;

sel:

instd_logic;

q:

outstd_logic

);

Endsel2;(3)

Architectureaofsel2isbegin

ifsel=‘0'then

q<=a;(6)else

q<=b;(9)endif;

enda;(10)

reset

本题

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

10分)

Process(reset,clk)

(2)begin

ifreset=‘0'then

q<=“0000”;(4)

elsifclk'eventandclk=‘1'then(6)

q<=q+1;(9)

endif;endprocess;

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

10000000

111

0

xxxxxxxx

高阻态

 

entityeight_triis

port(

b:

instd_logic_vector(7downto0);

en:

instd_logic;

y:

outstd_logic_vector(2downto0)

);

endeight_tri;(3)

architectureaofeight_triis

signalsel:

std_logic_vector(8downto0);(4)

begin

sel<=en&b;

y<=“000”

when(sel=

”100000001”

)else

“001”

when(sel=

”100000010”

)else

“010”

when(sel=

”100000100”

)else

“011”

when(sel=

”100001000”

)else

“100”

when(sel=

”100010000”

)else

101”

when(sel=

”100100000”

)else

110”

when(sel=

”101000000”

)else

111”

when(sel=

”110000000”

)else

(9)

a”

zzz”;

(10)

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

enda;

VHDL程序。

(本题15分)

libraryIEEE;

useIEEE.std_logic_1164.all;

useIEEE.std_logic_arith.all;

useIEEE.std_logic_unsigned.all;

entity

adder

is

port(

a,b,c:

in

std_logic;

carr:

inoutstd_logic;

);

sum:

out

std_logic

end

);adder;

architectureadder_archofadderisbegin

sum<=axorbxorc;

carr<=(aandb)or(bandc)or(aandc);endadder_arch;

entityfull_addis

port(

a,b:

instd_logic_vector(3downto0);

carr:

inoutstd_logic_vector(4downto0);

);

sum:

outstd_logic_vector(3downto0)

);endfull_add;

(5)

architecturefull_add_archoffull_addiscomponentadder

port(

a,b,c:

instd_logic;

carr:

inoutstd_logic;

sum:

outstd_logic

);

endcomponent;

begin

carr(0)<='0';

u0:

adderportmap(a(0),b(0),carr(0),carr

(1),sum(0));

u1:

adderportmap(a

(1),b

(1),carr

(1),carr

(2),sum

(1));

u2:

adderportmap(a

(2),b

(2),carr

(2),carr(3),sum

(2));

u3:

adderportmap(a(3),b(3),carr(3),carr(4),sum(3));

endfull_add_arch;(15)

得分

五、附加题(10分,本题可产生附加分,全卷不能超过100分)

完成下面moore状态机程序,该设计为一个存储控制器状态机。

能够根据微处理器的读

写周期,分别对存储器输出写使能WE^读使能OE信号。

工作过程:

存储控制器的输入信号为微处理器的就绪READY及读写read_write信号。

当上电

复位后,或read有效时,存储控制器开始工作,并在下一个时钟周期判断本次作业任务是读存储器还是写存储器。

判断的依据是,当read_write有效时为读操作,否则为写操作。

也就

是说非读即写。

读操作时,OE信号有效,写操作时,WE言号有效。

当READY信号有效时,表

示读本次作业处理完成,并使控制器恢复到初始状态。

控制器真值表和状态图如下。

存储控制器真值表

输出

状态

O

E

W

E

空闲(IDLE)

0

0

判断

(DECISION)

0

0

写(WRITE)

0

1

读(READ)

1

0

 

存储器控制器状态图

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYmooreIS

PORT(clk,ready,read_write:

INStd_Logic;

oe,we:

OUTStd_Logic);

ENDmoore;

ARCHITECTUREstate_machineOFMooreIS

TYPEstate_typeIS(idle:

decision:

write,read);

SIGNALpresent_state,next_state:

state_type;

BEGIN

state_comb:

PROCESS(present_state,ready,read_write)BEGIN

CASEpresent_stateIS

WHENidle=>

oe<=0';

we<=0';

IF(ready='1')THEN

next_state<=decision;

ELSE

next_state<=idle;

ENDIF;

WHENdecision=>

oe<=0';

we<=0';

IF(read_write='1')THEN

next_state<=read;

ELSE

next_state<=write:

ENDIF;

WHENread=>

oe<=1':

we<=0':

IF(ready='1')THEN

next_state<=idle;

ELSE

next_state<=read;

ENDIF;

WHENwrite=>

oe<=0':

we<=1':

IF(ready='1')THEN

next_state<=i

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

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2