SystemVerilog中的always语句块

描述

“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

 

  审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分