中北大学试题答案及评分标准硬件描述语言及器件课程(课程名称须与教学任务书相同)2007/2008学年第一学期试题类别A拟题日期2008-1-6拟题教师李圣昆课程编号教师编号1180011使用班级05182401/2/3备注:试题答案要求按指定规格计算机打印,并将其文本与电子稿一并上交:①校级考试课程交评估与考试中心命题科;②院级考试课程交院教务科。12007/2008学年第一学期末考试试题答案及评分标准(A卷)硬件描述语言及器件使用班级:05182401/2/3总分一、填空题(20分,每空格1分)1、VHDL是否区分大小写?不区分。2、digital__8标识符合法吗?不合法。12_bit标识符合法吗?不合法。signal标识符合法吗?不合法。3、结构体有三种描述方式,分别是数据流、行为、和结构化。4、请分别列举一个常用的库和程序包libraryieee、useieee.std_logic_1164.all。5、一个信号处于高阻(三态)时的值在VHDL中描述为‘Z’。6、将一个信号width定义为一个4位标准逻辑向量为signalwidth:std_logic_vector(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程序的基本结构。得分2库(1)程序包(2)实体(3)结构体(5)若答出配置也可加1分2、简述信号与变量的区别。信号延时赋值,变量立即赋值(2)信号的代入使用=,变量的代入使用:=;(4)信号在实际的硬件当中有对应的连线,变量没有(5)3、简述可编程逻辑器件的优点。集成度高,可以替代多至几千块通用IC芯片–极大减小电路的面积,降低功耗,提高可靠性(1)具有完善先进的开发工具–提供语言、图形等设计方法,十分灵活–通过仿真工具来验证设计的正确性(2)可以反复地擦除、编程,方便设计的修改和升级(3)灵活地定义管脚功能,减轻设计工作量,缩短系统开发时间(4)保密性好(5)4、试比较moore状态机与mealy状态机的异同。Moore输出只是状态机当前状态的函数(3)Mealy输出为有限状态机当前值和输入值的函数(5)3得分三、判断题(10分)libraryieee;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;以上库和程序包语句有无错误?有,有的话请在原程序相应位置改正。(2)entityromisport(addr:instd_logic_vector(0to3);ce:instd_logic;data:outstd_logic_vector(7downto0);)endrom;以上port语句有无错误?有,有的话请在原程序相应位置改正。(4)architecturebehaveofromisbeginprocess(ce,addr)(6)beginifce='0'thencaseaddriswhen0000=data=10001001;when0001=data=10001010;when0010=data=10001011;when0011=data=10001100;when0100=data=10001101;when0101=data=10001110;when0110=data=10001111;useieee.std_logic_1164.all;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;--data=“00000000”;(8)endif;(10)endprocess;endbehave;以上architecture中有哪些错误?请在原程序相应位置改正。得分四、编程(共50分,除特殊声明,实体可只写出PORT语句,结构体要写完整)1、用IF语句编写一个二选一电路,要求输入a、b,sel为选择端,输出q。(本题10分)Entitysel2isPort(a,b:instd_logic;sel:instd_logic;5q:outstd_logic);Endsel2;(3)Architectureaofsel2isbeginifsel=‘0’thenq=a;(6)elseq=b;(9)endif;enda;(10)2、编写一个4位加法计数器VHDL程序的进程(不必写整个结构框架),要求复位信号reset低电平时计数器清零,变高后,在上升沿开始工作;输入时钟信号为clk,输出为q。(本题10分)Process(reset,clk)(2)beginifreset=‘0’thenq=“0000”;(4)elsifclk’eventandclk=‘1’then(6)q=q+1;(9)endif;endprocess;(10)63、填写完成一个8-3线编码器的真值表(5分),并写出其VHDL程序(10分)。8-3线编码器真值表enby0y1y21000000000001000000100011000001000101000010000111000100001001001000001011010000001101100000001110xxxxxxxx高阻态entityeight_triisport(b:instd_logic_vector(7downto0);en:instd_logic;y:outstd_logic_vector(2downto0));endeight_tri;(3)architectureaofeight_triissignalsel:std_logic_vector(8downto0);(4)beginsel=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)“zzz”;(10)enda;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;entityfull_addisport(a,b:instd_logic_vector(3downto0);carr:inoutstd_logic_vector(4downto0);sum:outstd_logic_vector(3downto0));endfull_add;(5)architecturefull_add_archoffull_addiscomponentadderport(a,b,c:instd_logic;8carr:inoutstd_logic;sum:outstd_logic);endcomponent;(10)begincarr(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信号有效时,表示读本次作业处理完成,并使控制器恢复到初始状态。控制器真值表和状态图如下。存储控制器真值表状态输出OEWE空闲(IDLE)00判断(DECISION)009写(WRITE)01读(READ)10存储器控制器状态图LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYmooreISPORT(clk,ready,read_write:INStd_Logic;oe,we:OUTStd_Logic);ENDmoore;ARCHITECTUREstate_machineOFMooreISTYPEstate_typeIS(idle,decision,write,read);SIGNALpresent_state,next_state:state_type;BEGINstate_comb:PROCESS(present_state,ready,read_write)BEGINCASEpresent_stateISWHENidle=oe=‘0’;10we=‘0’;IF(ready='1')THENnext_state=decision;ELSEnext_state=idle;ENDIF;WHENdecision=oe=‘0’;we=‘0’;IF(read_write='1')THENnext_state=read;ELSEnext_state=write;ENDIF;WHENread=oe=‘1’;we=‘0’;IF(ready='1')THENnext_state=idle;ELSEnext_state=read;ENDIF;WHENwrite=oe=‘0’;we=‘1’;IF(ready='1')THENnext_state=idle;ELSEnext_state=write;ENDIF;ENDCASE;ENDPROCESSstate_comb;state_clocked:PROCESS(clk)BEGINIFclk’event