Verilog_HDL试卷及答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
reg[7:0]
一、选择题:
1、下列标示符哪些是合法的(B)
A、$time
B、_date
C、8sum
D、mux#
2、如果线网类型变量说明后未赋值,起缺省值是(D)
A、x
B、1
C、0
D、z
3、现网中的值被解释为无符号数。在连续赋值语句中,assignaddr[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、delay2的值是(D)
modulecode(x,y);moduletop;
parameedelay1=1,delay2=1;…………….
………………………………
endmoduleendmodule
A、(1,1)
B、(5,5)
C、(5,1)D
6、“a=4’b11001,b=4’bx110
A、a&b=0
B、a&&b=1
C、b&a=x
D、
7、时间尺度定义为timescale10ns/100ps
A、时间精度10ns
B、时间单位100psC
、都正确
in3,输入出为out,则该电路描述中always的事件表达式应写为always@(in1,in2,in3);若某一时序电路由时钟clk信号上升沿触发,同步高电平复位信号rst清零,该电路描述中always的事件表达是应该写为always@(posedgeclk)。
//@(条件表达式)do_something;
表示等待条件表达式满足,然后do_something,然后就往下走了。通常用在testbench中,不可综合。
------------------------------------
always@(aorborc)begin
do_something;
end
表示不停地监测a、b、c,一旦它们任何一个发生变化,就立刻do_something,并且这个“监测”是始终存在的。这种电路综合出来时组合逻辑电路。
1moduleM(……);
2input…….;
3output……;
4rega,b……;
5always@(……..)
6assignf=c&d;
7always@(……..)
8begin
9a=…….;
10b=…….;
end
11muxmux1(out,in0,in1);
endmodule
四、简答题:(共30分)
1、always语句和initial语句的关键区别是什么?能否相互嵌套?(5分)
always语句是循环语句,initial只执行一次。它们不能嵌套。
2、画出下面程序段中r(reg型)的仿真波形(6分)
fork
#20r=1’b0;
#10r=1’b1;
#15r=1’b1;
#25r=1’b1;
#5r=1’b0;
join
3、画出下面程序综合出来的电路图。(7分)
always@(posedgeclk)
begin
q0<=~q2;
q1<=q0;
q2<=q1;
end
4、HA模块程序如下,写出引用HA
moduleHA(A,B,S,C);
inputA,B;
outputS,C;
assign{C,S}=A+B;
endmodule
moduleFA(A,B,Ci,Co,S);
,m,q的类型(5分)
begin
cnt=m+1;
q=~q;
end
五、编程题:(6分)
1、设计一奇偶校验位生成电路,输入八位总线信号bus,输出及校验位odd,偶校验位even。(6分)
2、设计一个带复位端且对输入时钟clk进行二分频模块,并画出仿真波形。(9分)
设计要求:复位信号为同步、高电平有效,时钟的下降沿触发
3、设计一带异步复位端、异步置数段(低电平有效)的四位加法计数器,时钟clk上升沿有效),复位
信号clr,置数信号load、输入数据data、输出qout。并画出仿真波形。(20分)
五题答案1.moduleparity(even,odd,bus);
outputeven,odd;
input[7:0]bus;//奇同偶异
assigneven=^bus;//偶校验用异或
assignodd=^~bus;//奇校验用同或
endmodule
2.modulem2(out,clk,reset);
inputreset,clk;
outputout;
regout;
always@(negedgeclk)
begin
if(reset)
out<=0;
else
out<=~out;
end
endmodule
3.moduleadder_4(qout,clr,clk,load,data); output[3:0]qout;
input[3:0]data;
inputload,clr,clk;
reg[3:0]qout;
begin
if(!load)
qout<=data;