verilog复习卷.docVIP

  • 116
  • 0
  • 约 9页
  • 2017-01-30 发布于重庆
  • 举报
verilog复习卷

二○一○~二○一一学年  第二学期 (A)卷 课程名称 Verilog硬件描述语言    填空题(共26分,每空 2 分) Verilog的基本设计单元是模块。它是由两部分组成,一部分描述接口;另一部分描述逻辑功能,即定义输入是如何影响输出的。 用assign描述的语句我们一般称之为组合逻辑,并且它们是属于并行语句,即于语句的书写次序无关。而用always描述的语句我们一般称之为组合逻辑或时序逻辑,并且它们是属于串行语句,即于语句的书写有关。 在case语句中至少要有一条default语句 二、简答题(共15分,每小题5分) 怎样理解在进程语句中,阻塞语句没有延迟这句话? 答:这是因为,在进程语句中,有阻塞语句和非阻塞语句这两种,非阻塞语句是有延迟的,而阻塞语句它也是有延迟的,这是因为因果系统都有延迟的,只是阻塞语句的延迟比非阻塞语句的延迟小若干个数量级,因此可视为没有延迟。 在进程中什么情况下综合为时序电路?什么情况下综合为组合电路? 答:在进程中只有当敏感信号是沿触发(即上升沿或下降沿)时,此时综合为时序电路;而在进程中只有当敏感信号是电平沿触发时,此时综合为组合电路。 为什么在Verilog语言中,其综合只支持次数确定的循环,而不支持次数不确定的循环? 答:这是因为,在Verilog语言中,它是为电路设计而设计的一门语言,它如高级语言不同,若循环的次数不确定,则会带来不确定的延迟,而这在电路中是不允许存在的,故综合只支持次数确定的循环,即对于一个具体的芯片,其延迟是一个定值。 三、改错(15分) //下述是一个实现四位数的BCD码加法的程序 module bcdadd(clk,a,b,c,d,a1,b1,c1,d1,q1,q2,q3,q4,cout); input clk; input [3:0]a,b,c,d,a1,b1,c21,d21; output [3:0]q1,q2,q3,q4; output cout; //输出进位 reg [3:0] q1,q2,q3,q4; always @( clk,or a or b or c or d or a1 or b1 or c1 or d1 ) begin q1=a+a1; if(q19) {cout,q1}=q1+6; q2=b+b1+cout; if(q29) {cout,q2}=q2+6; q3=c+c1+cout; if(q39) {cout,q3}=q3+6; q4=d+d1+cout; if(q49) {cout,q4}=q4+6; endmodule 四、编程 (15分) 编程实现带异步清0、异步置1的D触发器。 module DFF1(q,qn,d,clk,set,reset); input d,clk,set,reset; output q,qn; reg q,qn; always @(posedge clk or negedge set or negedge reset) begin if (!reset) begin q = 0; //异步清0,低电平有效 qn = 1; end else if (!set) begin q = 1; //异步置1,低电平有效 qn = 0; end else begin q = d; qn = ~d; end end endmodule 五、编程 (15分) 编程实现求补码的程序,输入是带符号的8位二进制数。 module test12 (clk, din,dout); input clk; input[7:0] din; output [7:0]dout; reg [7:0]dout; reg x; reg [6:0]y; always@( clk or din) begin x=din[7]; //符号位赋给x if(x==1) //当符号位为1,即负数 begin y=din[6:0]; //除符号位之外的7位赋值给y dout[6:0]=~y; //对其取反 dout[7]=x; //符号位不变 end else dout=din; //若符号位不为1,即为0,正数,补码为其本身 end endmodule 六、编程 (14分) 编程实现一个并行加载串行输出的程序,输入是一个8位的二进制数。 module test12 (clk, en, d_in, s_out); input clk; input en; input[9:0] d_in; output s_out; reg s_

文档评论(0)

1亿VIP精品文档

相关文档