《VerilogHDL试卷及答案》由会员分享,可在线阅读,更多相关《VerilogHDL试卷及答案(5页珍藏版)》请在金锄头文库上搜索。
1、.reg 7:0 q=8b10000000;右边是最低位,q0q6为0,q7为1q7:0=q0,q7:1相当于一个循环右移操作,将q0的值赋给q7,q7q1依次向右移位一位。根据前值8b10000000,第一个时钟周期后变为8b01000000;第二个时钟周期后变为8b00100000;类推。第八个时钟周期后又回到q=8b10000000一、 选择题:1、下列标示符哪些是合法的(B )A、$time B、_date C、8sum D、mux#2、如果线网类型变量说明后未赋值,起缺省值是(D )A、x B、1 C、0 D、z 3、现网中的值被解释为无符号数。在连续赋值语句中,assign add
2、r3:0=-3;addr被赋予的值是( A )/补码!A、4b1101 B、4b0011 C、4bxx11 D、4bzz114、reg7:0 mema255:0正确的赋值是(A )A、mema5=3 d0, B、8 d0; C、1 b1; D、mema53:0=4 d15、在code模块中参数定义如下,请问top模块中d1模块delay1、delay2的值是( D )module code(x,y); module top; paramee delay1=1,delay2=1; . code #(1,5) d1(x1,y1);endmodule endmoduleA、(1,1) B、(5,5)
3、 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=x7、时间尺度定义为timescale 10ns/100ps,选择正确答案(C )A、时间精度10ns B、时间单位100ps C、时间精度100ps D、时间精度不确定8、若a=9,执行$display(“current value=%0b,a=%0d”,a,a)正确显示为(B )/去除无效0A、current value=1001,a=09 B、current vale=1001,a=9 C、1001,9 D、current
4、vale=00001001,a=99、always begin #5 clk=0;#10 clk=clk;end产生的波形( A )/5占15的1/3A、占空比1/3 B、clk=1 C、clk=0 D、周期为1010、在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 );若某
5、一时序电路由时钟clk信号上升沿触发,同步高电平复位信号rst清零,该电路描述中always的事件表达是应该写为always ( posedge clk )。精品./(条件表达式) do_something;表示等待条件表达式满足,然后do_something,然后就往下走了。通常用在testbench中,不可综合。-always (a or b or c) begin do_something;end表示不停地监测a、b、c,一旦它们任何一个发生变化,就立刻do_something,并且这个“监测”是始终存在的。这种电路综合出来时组合逻辑电路。-always (posedge clk) be
6、gin do_something;end表示不停地监测clk的上升沿,一旦监测到,就立刻do_something,并且这个“监测”是始终存在的。这种电路综合出来时时序逻辑电路。当然,也可以把posedge改成negedge,那就成了监测下降沿。带异步复位端的寄存器的写法类似是这样的always (posedge clk or negedge rst_n) begin / reset is active low if(rst_n) reset_process; else set_register_value;end 2、 在模块中对任务进行了定义,调用此任务,写出任务的调用 mytast(f,g
7、,m,n,p) /。/先输出,再输入task mytast; 要求:变量的传递关系如下output x,y; ma,nb,pc,xf,yginput a,b,c;.endtask3、if(a) out1=int1; 当a= 1 执行out1=int1else out1=int2; 当a= 0 执行out1=int24、4 b10012= 4b0010 。/移位补0!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
8、; 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; #25 r=1 b1; #5 r=1 b0;join 3、画出下面程序综合出来的电路图。(7分) always(posedge clk)
9、begin q0=q2; q1= q0; q2= q1; end 4、HA模块程序如下,写出引用HA模块描述FA模块的Verilog程序。(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;endmodule5、写出下面程序中变量x,y,cnt,m,q的类型(5分)x为wire
10、型y为reg或wire型cnt为reg型m为reg或wire型q为reg型Assgin x=y; always(posegde clk) begin cnt=m+1; q=q; end五、编程题:(6分)1、设计一奇偶校验位生成电路,输入八位总线信号bus,输出及校验位odd,偶校验位even。(6分)2、设计一个带复位端且对输入时钟clk进行二分频模块,并画出仿真波形。(9分)设计要求:复位信号为同步、高电平有效,时钟的下降沿触发3、设计一带异步复位端、异步置数段(低电平有效)的四位加法计数器,时钟clk上升沿有效),复位信号clr,置数信号load、输入数据data、输出qout。并画出仿
11、真波形。(20分)五题答案1. module parity(even,odd,bus);output even,odd;input7:0 bus; /奇同偶异assign even=bus;/偶校验用异或assign odd=bus;/奇校验用同或endmodule2. module m2(out,clk,reset);input reset,clk;output out;reg out;always (negedge clk)begin if(reset)out=0;else out=out;精品.endendmodule3. module adder_4(qout,clr,clk,load,data);output3:0 qout;input3:0 data;input load,clr,clk;reg3: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;endendmodule如有侵权请联系告知删除,感谢你们的配合!精品