“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
审核编辑:汤梓红
-
Verilog
+关注
关注
30文章
1370浏览量
114138 -
System
+关注
关注
0文章
166浏览量
38456 -
代码
+关注
关注
30文章
4941浏览量
73145
原文标题:SystemVerilog中的“always”语句块
文章出处:【微信号:芯片验证工程师,微信公众号:芯片验证工程师】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
initial和always两者的关系分析
SystemVerilog中对于process的多种控制方式
systemverilog的决策语句if…else语句介绍
决策语句允许程序块的执行流程
数字硬件建模SystemVerilog-组合逻辑建模(1)连续赋值语句
什么是SystemVerilog-决策语句-if-else语句?
Python中什么是语句块
SystemVerilog:处理信号双驱动问题解析

SystemVerilog中的always语句块
评论