verilog 中如何让一个高电平在经过一个时钟周期后回到低电平 用了#延迟没有用啊

我一开始初始化为一个低电平,然后执行一个运算,当运算结束,结果输出的时候,这个电平置高,起到一个done的作用,但是我不想让它一致高下去,让它在一个周期以后变回低电平,请问如何实现。

begin
flout_c={s3,exp3[7:0],man3[22:0]};
done= 1'b1;
//#10 done= 1'b0;
end
end
因为没有用,我把它注释掉了,如果不注释掉的话,done就一直是低电平,根本不会变高,这是为什么呢?

看你的问题你并不是在写测试代码,只是在写设计代码,设计中输出高低电平变化要由输入来控制。延时有关的语句在设计中是不可综合的,在编译综合后,编译器会自动忽略。所以你还要一个输入来控制
当然你这个done 本身就可以定义为一个input 然后对应的 IO 外接控制高低电平的按键来控制done 的高低 简要思路如下:

module XX (done,XX,……);

input done;
output XX;
…… ;
reg XX;
always @ (done)
begin

if (done) //done 由输入IO口控制

XX = 0;
else
XX = ……;

end
........
..........
..........
endmodule
当然如果是些测试代码的话就是上面那位仁兄所写的。希望能帮到你,共同进步,加油!!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-07-26
initial
begin
RSTn = 0; #10 RSTn = 1;
CLK = 0; forever #5 CLK = ~CLK;
end
这是我们一般写测试文本,最常见的语句,你这样写应该是有反映的,不会没有变化的。
initial

begin
done = 1; #10 done = 0;
end

你再试试吧!
相似回答