Verilog中if 语句与wait语句的区别
区别 语句 if Verilog WAIT
2023-09-11 14:20:47 时间
(1)if语句是非阻塞语句,在initial语句中遇到 if 语句时,会判断条件是否成立,如果if条件成立,将会执行if条件成立后的语句;如果if 语句不成立,那么if后面的语句将会跳过而不执行。不会阻塞后面语句的执行,所以它是非阻塞语句。
(2)wait语句是阻塞语句,遇到wait语句时,会判断wait语句条件是否成立,如果不成立,wait语句将会阻塞,wait语句以及后面的语句将不会执行;直到wait语句条件满足,才会执行wait语句以及后面的语句。所以wait语句是阻塞语句。
如下面的示例:
reg a;
initial
begin
a=0;
#100000000 a=1;
#100 a=0;
end
initial begin:wait_block
wait (a==1)
$display("wait a==1 is %d ",$time);
end
initial begin:if_block
if(a==1)
begin
$display("if statements is %d\n",$time);
$display("****************************");
end
end
上述示例中,reg在0时刻为0,在#100000000延时后变为1,又延时100后变为0。
在wait_block语句块中,因为a变量在0~100000000之间为0,所以wait语句将会阻塞,$display语句将不会执行。在100000000时刻,a变为1,所以wait语句将会执行,且只执行一次。
在if_block语句中,因为a变量在0~100000000之间为0,if_block语句在0时刻开始执行,此时,if(a==1)不满足条件,所以if语句跳过将不执行。
相关文章
- Sqlite和mysql的区别及优缺点
- 如果你不只是个点工,那你应该知道 前后端分离与不分离的区别
- 目标检测one shot 和 multi shot的区别
- java基础—Hashtable,HashMap,TreeMap的区别
- Laravel 运行队列处理器 queue:work 与 queue:listen 区别及 Windows 终端命令问题
- JDBC事务和JTA事务的区别
- 一文看懂推荐系统:召回02:Swing 模型,和itemCF很相似,区别在于计算相似度的方法不一样
- Postgresql与MySQL的区别
- 云堡垒机和普通堡垒机的三大区别分析
- 微信开发 - 详解 JSAPI 与 JS-SDK 是什么?它们之间有什么区别?用谁做微信支付、分享等功能合适?(为什么网上的教程有使用 JSAPI 做功能,但也有大量使用 JS-SDK 做的呢?)
- Linux集群和自动化维1.4.4 Linux下CPU使用率与机器负载的关系与区别
- 浅谈内联函数与宏定义的区别详解
- height、clientHeight、scrollHeight、offsetHeight区别
- TS与JS的区别
- JUnit和TestNG的区别
- 浅析file-loader是什么及如何使用、file-loader与url-loader分别解决了什么问题以及其两者的联系与区别
- Java 语言中 equals 和 == 的区别
- 在浏览器地址栏按回车、F5、Ctrl+F5刷新网页的区别--转
- KeyPress 和KeyDown 、KeyPress之间的区别
- 【学习笔记】zip和mis的区别