|
在下最近才开始接触verilog,边工作边学习,看书的时候还觉得比较好理解,可是一动手写代码,推敲起来就发现有些地方比较难理解了。比如,最近就被一个简单的带异步清零的D触发器的代码弄糊涂了。参考书上是这么写的:
module dff(clk,d,clr,q)
input clk,d,clr;
output q;
reg q;
always @(posedge clk or negedge clr)
begin
if(!clr) q<=0;
else q<=d;
end
endmodule
注意看其信号敏感表,clk是上升沿触发,这个好理解。可是clr也是上升沿触发就不好理解了。按照我们的理解,异步复位信号应该是电平敏感的,而不是上升沿敏感的。我曾经尝试着把信号敏感表写成 always @(posedge clk or clr)进行综合,可是报错。 现在真有点糊涂了,上面的写法,其本意很明白clr应该是对电平敏感的异步复位信号,即如果clr一直保持低电平,那么q会一直保持0输出。可是按照字面的意思,clr又好象是边沿触发的。
我就有些好奇了,上述代码综合后,应用到芯片中去,如果clr一直保持低电平,而clk也来几个脉冲,究竟输出是变还是不变?
相信很多电工都能帮我解决上述疑问,多谢了!!!!! |
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|