verilog 关于延时表示。

#3 reset = 0;

这两句话是先延时再发出信号。还是保持这个信号3个时间单位。
复位信号要保持多少秒有效 还是发送了就有效。

当执行到这条语句的时候先等3个时间单位,随后reset再被置为0,即时生效。

置为0之后只要你不去改变reset的值就会一直是0,一般习惯是保持复位信号若干个时钟周期,随后把复位信号置为正常即可。追问

复位信号是保持一段时间才能生效么?还是一出发就生效。

追答

这句话的意思是过了3个时间延迟之后reset被置为0,至于什么时候生效其实要看你.v的程序是怎样来实现的了。

我举个例子:
module example(a,b,y);
input a,b;

output y;

always@(posedge clk)
begin
if(reset==0) begin
y=0;

end

else begin

y=a&b;

end

end

end module

这个普通的程序首先要有一个clk的上升沿来触发这个always模块,之后会判断reset是否为0,如果为0的时候就会对把输出y置为0,即起到了复位的效果。如果你reset置为0保持一段时间,你就可以在y的输出波形图上看到y的值一直为0。

所以在这个程序里复位信号需要置0一段时间,等要时钟上升沿来了之后才能生效。

最后,普遍来说,复位信号保持一段时间(若干周期)是非常必要的。

温馨提示:答案为网友推荐,仅供参考
相似回答