河北大学课程考核试卷
2008——2009学年第一学期 2006级 电气类专业(类)
考核科目EDA技术 课程类别 必修 考核类型 考查 考核方式闭卷 类别 A
一、 选择题:
1、下列标示符哪些是合法的(B )
A、$time B、_date C、8sum D、mux#
2、如果线网类型变量说明后未赋值,起缺省值是(D ) A、x B、1 C、0 D、z
3、现网中的值被解释为无符号数。在连续赋值语句中,assign addr[3:0]=-3;addr被赋予的值是( A )
A、4’b1101 B、4’b0011 C、4’bxx11 D、4’bzz11 4、reg[7:0] mema[255:0]正确的赋值是(A )
A、mema[5]=3’ d0, B、8’ d0; C、1’ b1; D、mema[5][3:0]=4’ d1 5、在code模块中参数定义如下,请问top模块中d1模块delay1、 #25 r=1’ b1; #5 r=1’ b0; join
3、画出下面程序综合出来的电路图。(7分) always@(posedge clk) begin
q0<=~q2; q1<= q0; q2<= q1; end 4、HA模块程序如下,写出引用HA模块描述FA模块的Verilogdelay2的值是( D )
module code(x,y); module top; paramee
delay1=1,delay2=1; ……………. ……………………………… code #(1,5) d1(x1,y1);
endmodule endmodule A、(1,1) B、(5,5) C、(5,1) D、(1,5) 6、“a=4’ b11001,b=4’ bx110”选出正确的运算结果(B ) A、a&b=0 B、a&&b=1 C、b&a=x D、b&&a=x
7、时间尺度定义为timescale 10ns/100ps,选择正确答案(C ) A、时间精度10ns B、时间单位100ps C、时间精度100ps D、时间精度不确定
8、若a=9,执行$display(“current value=,a= ”,a,a)正确显示为(B )
A、current value=1001,a=09 B、current vale=1001,a=9
C、1001,9 D、current vale=00?001001,a=9 9、aways begin #5 clk=0;#10 clk=~clk;end产生的波形( A ) A、占空比1/3 B、clk=1 C、clk=0 D、周期为10 10、在Verilog中定义了宏名 `define sum a+b+c 下面宏名引用正确的是(C )
A、out=’sum+d; B、out=sum+d; C、out=`sum+d; D、都正确
二、填空题:(共15分,每小题3分)
1、某一纯组合电路输入为in1,in2和in3,输入出为out,则该电路描述中always的事件表达式应写为always@(in1,in2,in3 );若某一时序电路由时钟clk信号上升沿触发,同步高电平复位信号rst清零,该电路描述中always的事件表达是应该写为always @( posedge clk )。
2、在模块中对任务进行了定义,调用此任务,写出任务的调用 mytast(f,g,m,n,p) 。
task mytast; 要求:变量的传递关系如下 output x,y; m——a,n——b,p——c,x——f,y——g input a,b,c; ??. endtask
3、if(a) out1<=int1; 当a= 1 执行out1<=int1
else out1<=int2; 当a= 0 执行out1<=int2 4、4’ b1001<<2= 4’b100100 ,4’ b1001>>2= 4’b0010 。
5、下面程序中语句5、6、7、11是 并行 执行,语句9、10
是 顺序 执行
1 module M(??); 2 input ??. ; 3 output ??;
4 reg a,b??; 5 always@(??..) 6 assign f=c&d; 7 always@(??..) 8 begin 9 a=??.; 10 b=??.; end
11 mux mux1(out,in0,in1); endmodule 四、简答题:(共30分)
1、always语句和initial语句的关键区别是什么?能否相互嵌
套?(5分)
always语句是循环语句,initial只执行一次。它们不能嵌套。
2、画出下面程序段中r(reg型)的仿真波形 (6分)
fork
#20 r=1’ b0; #10 r=1’ b1; #15 r=1’ b1;
程序。(7分)
module HA(A,B,S,C); input A,B;
output S,C;
assign {C,S}=A+B; endmodule
module FA(A,B,Ci,Co,S); input A,B,Ci; output Co,S; wire Sl,C1,C2; HA a(A,B,Sl,C1); HA b(Sl,Ci,C2,S); assign Co=C1|C2; endmodule
5、写出下面程序中变量x,y,cnt,m,q的类型(5分) Assgin x=y;
always@(posegde clk)
x为wire型 begin
y为reg或wire型 cnt=m+1; cnt为reg型 q=~q; m为reg或wire型 end
q为reg型 五、编程题:(6分)
1、设计一奇偶校验位生成电路,输入 八位总线信号bus,输出及校验 位odd,偶校验位even。(6分)
2、设计一个带复位端且对输入时钟clk进行二分频模块,并画
出仿真波形。(9分)
设计要求:复位信号为同步、高电平有效,时钟的下降沿触发
3、设计一带异步复位端、异步置数段(低电平有效)的四位加法计数器,时钟clk上升沿有效),复位信号clr,置数信号load、输入数据data、输出qout。并画出仿真波形。(20分)
五题答案1. module parity(even,odd,bus);
output even,odd;
input[7:0] bus; //奇同偶异 assign even=^bus;//偶校验用异或 assign odd=^~bus;//奇校验用同或 endmodule
2. module m2(out,clk,reset); input reset,clk; output out; reg out;
always @(negedge clk) begin if(reset) out<=0; else
out<=~out; end
endmodule
3. module adder_4(qout,clr,clk,load,data); output[3:0] qout; input[3:0] data; input load,clr,clk; reg[3:0] qout;
always @(posedge clk or negedge load or negedge clk) begin if(!load)
仿真波形
qout<=data; else if(!clr) qout<=0;
else qout<=qout+1; end
endmodule