“always”关键字意味着这个语句块“总是”一直执行。大多数时候“always”后面跟一个边沿事件或者延迟。
always后面不能0延迟,不然仿真会一直hang,例如下面这行代码:
always clk = !clk; //zero delay loop. Simulation
will get stuck at time 0
always #10 clk = !clk; //correct time control
在实际的项目当中“always” 后面经常跟着一个边沿事件上升沿或者下降沿。
always @(posedge) always @(negedge )
但问题是,你真的清楚posedge和negedge的准确定义么?
实际上:
posedge意味着
0->1, 0-> x, 0-> z, x->1, z->1
negedge意味着
1->0, x->0, z->0, 1->x, 1->z
还有一种不那么常见的写法就是即对上升沿又对下降沿敏感:
always @(edge clk) begin ... end
或者
always @(clk) begin ... end
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !