北京航空航天大学2011~2012学年第二学期数字EDA期末考试试卷(2012年5月23日)班级:__________;学号:______________;姓名:__________________;成绩:___________注意事项:1、填空题与选择题直接在试题上作答2、设计题在答题纸上作答正题:一、填空题(共30分,每道题3分)1.写出表达式以实现对应电路的逻辑功能。ABCDEF2.根据图中输入输出关系将Verilog模块定义补充完整,其中信号A为5比特宽度,其余信号为1比特宽度。tblockCBA5-bit宽3.IEEE标准的硬件描述语言是verilogHDL和VHDL。4.你所知道的可编程逻辑器件有(至少两种):FPGA,CPLD,GAL,PAL(任写其二)。5.假定某4比特位宽的变量a的值为4’b1011,计算下列运算表达式的结果6.Verilog语言规定了逻辑电路中信号的4种状态,分别是0,1,X和Z。其中0表示低电平状态,1表示高电平状态,X表示不定态(或未知状态),Z表示高阻态。assignF=E^((A&B)|(!(C&D)))moduletblock(A,B,C);output[4:0]A;inputB;inoutC;……//省略了功能描述endmodule//模块结束&a=1’b0~a=4’b0100{3{a}}=12’b101110111011{a[2:0],a[3]}=4’b0111(a4’d3)||(a=a)=1’b1!a=1’b07.下面两段代码中信号in,q1,q2和q3的初值分别为0,1,2和3,那么经过1个时钟周期后,左侧程序中q3的值变成0,右侧程序中q3的值变成2。8.Verilog语言规定的两种主要的数据类型分别是wire(或net)和reg。程序模块中输入,输出信号的缺省类型为wire(或net)。9.一个大型的组合电路总延时为100ns,采用流水线将它分为两个较小的组合电路,理论上电路最高工作频率可达20MHz。10.块语句有两种,一种是begin-end语句,通常用来标志顺序执行的语句;一种是fork-join语句,通常用来标志并行执行的语句。二、选择填空题(共30分,每道题3分)。1.inout端口可以定义成下列哪种数据类型(B)。A、reg类型B、net类型C、reg或net类型D、整数类型2.下列数组描述中不正确的代码是(D)。A、integercou[7:0];B、regbool[16:0];C、integermat[4:0][0:127];D、reg[8*8:1]carray_value;3.下列描述中采用时钟正沿触发且reset异步下降沿复位的代码描述是(C)A、always@(posedgeclk,negedgereset)if(reset)B、always@(posedgeclk,reset)if(!reset)C、always@(posedgeclk,negedgereset)if(!reset)D、always@(negedgeclk,posedgereset)if(reset)4.下列代码描述中,不能产生时序逻辑的(A)A、always(*)begainif(a&b)rega=c;elserega=0;endB、always(*)begainalways@(posedgeclk)beginq1=in;q2=q1;q3=q2;endalways@(posedgeclk)beginq1=in;q2=q1;q3=q2;endif(a&b)rega=c;y=rega;endC、always@(a)begainCase(a)2’b00:out=4’b0001;2’b01:out=4’b0010;2’b10:out=4’b0100;endcaseend5.在高速系统设计中,下列哪种优化方案的目的不是为了提高系统的工作频率(D)A、流水线B、树型结构C、迟置信号后移D、资源共享6.状态机的编码风格包括一段式、两段式和三段式,下列描述正确的是(C)A、一段式寄存器输出,易产生毛刺,不利于时序约束;B、二段式组合逻辑输出,不产生毛刺,有利于时序约束;C、三段式寄存器输出,不产生毛刺,有利于时序约束;D、所有描述风格都是寄存器输出,易产生毛刺,有利于时序约束。7.下列描述代码可综合的是(C)A、fork…joinB、assign/deassignC、if…else和caseD、repeat和forever8.关于过程块以及过程赋值描述中,下列正确的是(A)A、在过程赋值语句中表达式左边的信号一定是寄存器类型;B、过程块中的语句一定是可综合的;C、在过程块中,使用过程赋值语句给wire赋值不会产生错误;D、过程块中时序控制的种类有简单延迟、边沿敏感和电平敏感。9.关于函数的描述下列说法不正确的是(B)A、函数定义中不能包含任何时序控制语句;B、函数至少有一个输入,包含任何输出或双向端口;C、函数只返回一个数据,其缺省为reg类型;D、函数不能调用任务,但任务可以调用函数。10.Verilog语言与C语言的区别,不正确的描述是(C)A、Verilog语言可实现并行计算,C语言只是串行计算;B、Verilog语言可以描述电路结构,C语言仅仅描述算法;C、Verilog语言源于C语言,包括它的逻辑和延迟;D、Verilog语言可以编写测试向量进行仿真和测试。三、(10分)试设计一个3/8译码器,规定模块定义为moduleDecoder(Out,In,En),其中Out为译码器输出,In为译码器输入,En为译码使能输入。要求:写出3/8译码器VerilogHDL设计程序并注释;标准答案1:moduledecoder(Out,In,En);(2分)output[7:0]out;input[2:0]in;inputen;//IO定义(3分)assignout=(en==0)?0:1’b1In;/*若En为高电平,3/8译码,否则输出无效电平*/(5分)endmodule标准答案2:moduledecoder(Out,In,En);(2分)output[7:0]out;input[2:0]in;inputen;//IO定义(3分)reg[7:0]out;always@(InorEn)beginif(En==0)//若En为低电平,3输出无效电平(2分)Out=8’b0;else//若En为高电平,3/8译码(3分)case(in)3’b000:Out=8’b00000001;//03’b001:Out=8’b00000010;//13’b010:Out=8’b00000100;//23’b011:Out=8’b00001000;//33’b100:Out=8’b00010000;//43’b101:Out=8’b00100000;//53’b110:Out=8’b01000000;//63’b111:Out=8’b10000000;//7endcaseend四、(20分)试使用VerilogHDL设计一个10进制计数器,规定模块定义为modulecount10(out,clr,clk),其中clk为时钟输入,clr为同步清零输入,低电平有效,out为计数器输出。要求(1)写出10进制计数器VerilogHDL设计程序并注释;(2)写出10进制计数器VerilogHDL测试文件并注释;标准答案(1)modulecounter10(out,clr,clk);inputclr,clk;//IO端口定义outputout;reg[3:0]cnt;//计数always@(posedgeclk)if(!clr)cnt=1’b0;elseif(cnt==4’d9)cnt=1’b0;elsecnt=cnt+1’b1;assignout=(cnt==4’d9);//计数结果输出endmodule(2)modulecounter10_test;regclk,rst;wireout;initial//赋初值beginrst=1’b0;clk=1’b0;#100rst=1’b1;endalways#10clk=~clk;//产生时钟信号counter10u0(.out(out),.clr(rst),.clk(clk));//调用设计模型endmodule五、根据下列Verilog代码给出电路结构图,针对资源共享的思想分析电路的问题点并提出改进方法,用Verilog语言描写并给出电路结构图。(五题和六题任选一题)源代码描述如下:for(i=0,i=3,i=i+1)beginif(enable[i]==1)vsum=vsum+offset[i];elsevsum=vsum;end原代码对应的电路如下所示:Genable[0]enable[1]enable[2]enable[3]enable[4]offset[0]offset[1]offset[2]offset[3]vsumGenable[0]enable[1]enable[2]enable[3]enable[4]offset[0]offset[1]offset[2]offset[3]vsumfor(i=0;i=3;i=i+1)beginif(enable[i]==1)offset_1=offset_1+offset[i];elsevsum=vsum;endvsum=vsum+offset_1;评分标准:画出原代码对应的电路,并分析出资源特点得4分画出优化后的电路,并分析出资源特点得4分写出了优化后的源代码得2分。六、(10分)使用状态机设计一个“11011”序列检测器,序列输入为s_in,检测结果输出为p_out,高电平表示发现指定序列,低电平表示没有发现指令序列。请对状态进行定义,并画出状态转移图。(10分)(五题和六题任选一题)DEABCEIDLE1/01/01/00/01/10/00/01/00/00/00/01/0Dstates_in/p_out状态定义:IDLE:3’b000未检出有效比特A:3’b001检出有效比特1B:3’b010检出有效比特11C:3’b011检出有效比特110D:3’b100检出有效比特1101E:3’b101检出有效比特11011图中使用了4个选择器以及4个4位加法器。可将4个加法器中的共用部分进行共享,即对4个选择器的输出进行求和后再与之前的结果进行相加,其电路如下所示:左图使用了4个选择器和4个加法器,包括2个2位的加法器和1个3位的加法器和1个4位的加法器。电路对应代码如下:评分标准:6个状态,每个状态转换正确得1分,共6分进行状态定义与编码,得1分定义了图例,及图中sin/p_out,得1分输入(即s_in)书写正确得1分输出(即p_out)书写正确得1分