中北大学硬件描述语言及器件课程考试试题2007/2008学年第一学期试题类别A拟题日期2007.12.20拟题教师李圣昆课程编号教师编号1180011教学院长系主任课程结束时间08.1.11印刷份数使用班级05182401/2/3备注:(1)试题要求按指定规格计算机打印,并将其电子稿于课程结束前20天交评估与考试中心命题科。(2)试题类别指A卷或B卷。(3)试题印制手续由院教务科统一到评估与考试中心命题科办理。12007/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程序的基本结构。得分22、简述信号与变量的区别。3、简述可编程逻辑器件的优点。4、试比较moore状态机与mealy状态机的异同。3得分三、判断题(10分)libraryieee;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;以上库和程序包语句有无错误?,有的话请在原程序相应位置改正。entityromisport(addr:instd_logic_vector(0to3);ce:instd_logic;data:outstd_logic_vector(7downto0);)endrom;以上port语句有无错误?,有的话请在原程序相应位置改正。architecturebehaveofromisbeginprocessbeginifce='0'thencaseaddriswhen0000=data=10001001;when0001=data=10001010;when0010=data=10001011;when0011=data=10001100;when0100=data=10001101;when0101=data=10001110;when0110=data=10001111;4when0111=data=10010000;when1000=data=10010001;when1001=data=10010010;when1010=data=10010011;when1011=data=10010100;when1100=data=10010101;when1101=data=10010110;when1110=data=10010111;whenothers=data=10011000;endcase;elsedata:=00000000;endprocess;endbehave;以上architecture中有哪些错误?请在原程序相应位置改正。得分四、编程(共50分,除特殊声明,实体可只写出PORT语句,结构体要写完整)1、用IF语句编写一个二选一电路,要求输入a、b,sel为选择端(低电平选择a端,高电平选择b端),输出q。(本题10分)52、编写一个4位加法计数器VHDL程序的进程(不必写整个结构框架),要求复位信号reset低电平时计数器清零,变高后,在上升沿开始工作;输入时钟信号为clk,输出为q。(本题10分)63、填写完成一个8-3线编码器的真值表(5分),并写出其VHDL程序(10分)。8-3线编码器真值表enby0y1y21000100000010001101010000100001110001000010010000010110100000011110xxxxxxxx高阻态74、根据已给出的全加器的VHDL程序,试写出一个4位逐位进位全加器的VHDL程序。(本题15分)libraryIEEE;useIEEE.std_logic_1164.all;useIEEE.std_logic_arith.all;useIEEE.std_logic_unsigned.all;entityadderisport(a,b,c:instd_logic;carr:inoutstd_logic;sum:outstd_logic);endadder;architectureadder_archofadderisbeginsum=axorbxorc;carr=(aandb)or(bandc)or(aandc);endadder_arch;8得分五、附加题(10分,本题可产生附加分,全卷不能超过100分)完成下面moore状态机程序,该设计为一个存储控制器状态机。能够根据微处理器的读写周期,分别对存储器输出写使能WE和读使能OE信号。工作过程:存储控制器的输入信号为微处理器的就绪READY及读写read_write信号。当上电复位后,或read有效时,存储控制器开始工作,并在下一个时钟周期判断本次作业任务是读存储器还是写存储器。判断的依据是,当read_write有效时为读操作,否则为写操作。也就是说非读即写。读操作时,OE信号有效,写操作时,WE信号有效。当READY信号有效时,表示读本次作业处理完成,并使控制器恢复到初始状态。控制器真值表和状态图如下。存储控制器真值表状态输出OEWE空闲(IDLE)00判断(DECISION)00写(WRITE)01读(READ)109存储器控制器状态图LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYmooreISPORT(clk,ready,read_write:INStd_Logic;oe,we:OUTStd_Logic);ENDmoore;ARCHITECTUREstate_machineOFMooreISTYPEstate_typeIS(,,,);SIGNALpresent_state,next_state:state_type;BEGINstate_comb:PROCESS(present_state,ready,read_write)BEGINCASEpresent_stateISWHENidle=oe=;we=;IF(ready='1')THENnext_state=decision;10ELSEnext_state=idle;ENDIF;WHENdecision=oe=;we=;IF(read_write='1')THENnext_state=read;ELSEnext_state=;ENDIF;WHENread=oe=;we=;IF(ready='1')THENnext_state=idle;ELSEnext_state=read;ENDIF;WHENwrite=oe=;we=;IF(ready='1')THENnext_state=;ELSEnext_state=write;ENDIF;ENDCASE;ENDPROCESSstate_comb;state_clocked:PROCESS(clk)BEGINIFTHENpresent_state=next_state;ENDIF;ENDPROCESSstate_clocked;ENDstate_machine;11