verilog中阻塞赋值与 非阻塞赋值的区别
非阻塞(Non_Blocking)赋值方式( 如 b <= a; ), 块结束后才完成赋值操作,值并不是立刻就改变的, 这是一种比较常用的赋值方法。(特别在编写可综合模块时)。
阻塞(Blocking)赋值方式( 如 b = a; ), 赋值语句执行完后,块才结束,值在赋值语句执行完后立刻就改变的, 可能会产生意想不到的结果。
一般情况下
组合逻辑使用=赋值,
时序逻辑使用<=赋值。
举个例子:
初始化m=1,n=2,p=3;分别执行以下语句
1、begin
m=n;
n=p;
p=m;
end
2、begin
m<=n;
n<=p;
p<=m;
end
结果分别是:1、m=2,n=3,p=2;(在给p赋值时m=2已经生效)
2、m=2,n=3,p=1;(在begin-end过程中,m=2一直无效而是在整体执行完后才生效)
这两种赋值“=”用于阻塞式赋值;“<=”用于非阻塞式赋值中。
阻塞赋值:阻塞赋值语句是在这句之后所有语句执行之前执行的,即后边的语句必须在这句执行完毕才能执行,所以称为阻塞,实际上就是顺序执行。
非阻塞赋值:非阻塞赋值就是与后边相关语句同时执行,即就是并行执行。
所以一般时序电路使用非阻塞赋值,assign语句一般使用=阻塞赋值;
组合逻辑电路使用阻塞赋值。
在使用阻塞赋值和非阻塞赋值时的八大原则:
1)时序电路建模时,采用非阻塞赋值;
2)锁存器电路建模时,采用非阻塞赋值;
3)用always块建立组合逻辑模型时,采用阻塞赋值;
4)用always块建立时序和组合逻辑混合电路时,采用非阻塞赋值;
5)不要在同一个always块中同时使用非阻塞赋值和阻塞赋值;
6)不要在一个以上的always块中为同一个变量赋值;
7)用$strobe系统任务来显示用非阻塞赋值的变量值;
8)在赋值时,不要用#0延迟;
---------------------
作者:企业云基础平台
原文:https://blog.csdn.net/iPlatForm/article/details/78874239
版权声明:本文为博主原创文章,转载请附上博文链接!
verilog中阻塞赋值与 非阻塞赋值的区别相关推荐
- Verilog中阻塞赋值和非阻塞赋值的区别
Verilog中阻塞赋值(=)和非阻塞赋值(<=)的区别 **阻塞赋值:**前面语句执行完,才可执行下一条语句:即:前面语句的执行(b=a)阻塞了后面语句的执行(c=b).即:always块内, ...
- verilog reg赋初值_Verilog语法之六:阻塞赋值与非阻塞赋值
本文首发于微信公众号"花蚂蚁",想要学习FPGA及Verilog的同学可以关注一下. 一.初步理解阻塞赋值与非阻塞赋值 在Verilog HDL语言中,信号有两种赋值方式: (1) ...
- 【Verilog 基础】阻塞赋值和非阻塞赋值的区别
目录 阻塞赋值 非阻塞赋值 实际工程仿真 阻塞赋值仿真 编写Verilog代码 编写测试文件代码 综合看RTL图 进行实际仿真 非阻塞赋值仿真 编写Verilog代码 编写测试文件代码 综合看RTL图 ...
- 通过举例谈谈阻塞赋值与非阻塞赋值的区别
这篇博客,通过举例说明:非阻塞赋值和阻塞赋值的区别? 一般非阻塞赋值用于时序逻辑,而阻塞赋值用于组合逻辑: 非阻塞赋值语句是并行执行的,等到一个时钟完成后才完成赋值,而阻塞赋值是顺序执行的,下一条赋值 ...
- 07-阻塞赋值与非阻塞赋值原理分析——小梅哥FPGA设计思想与验证方法视频教程配套文档...
芯航线--普利斯队长精心奉献 实验目的:掌握阻塞赋值与非阻塞赋值的区别 实验平台:无 实验原理: 阻塞赋值,操作符为"=","阻塞"是指在进程语句(initia ...
- 查询框赋值后不可编辑_【技巧分享】阻塞赋值与非阻塞赋值
原创 小黑同学 明德扬FPGA科教 关于阻塞赋值和非阻塞赋值的问题,明德扬的学员提得比较多,今天小黑老师专门给大家普及一下阻塞赋值和非阻塞赋值的相关知识. 一.概述 1.阻塞赋值对应的电路往往与触发沿 ...
- Verilog HDL中阻塞语句和非阻塞语句的区别
在Verilog中有两种类型的赋值语句:阻塞赋值语句("=")和非阻塞赋值语句("<=").正确地使用这两种赋值语句对于Verilog的设计和仿真非常重要 ...
- 把变量赋值给寄存器_阻塞赋值和非阻塞赋值的区别与记忆
罗成:Verilog语法之六:阻塞赋值与非阻塞赋值zhuanlan.zhihu.com 通过上面的文章先了解下,阻塞赋值和非阻塞赋值的区别. b<=a; c<=b; 非阻塞赋值 b=a; ...
- 硅芯思见:阻塞赋值与非阻塞赋值
0 丑话说在前边 RHS:运算符(= or <=)右侧的表达式 LHS:运算符(= or <=)左侧的表达式 竞争(Race Condition):在同一仿真时间槽(time-slot)多 ...
最新文章
- JAVA基础——编程练习(一)
- 学python要多少钱-参加python培训要多少钱?
- MySQL 可重复读,差点背上一个 P0 事故!
- NOIP信息奥赛--1995“同创杯”初中复赛题题解(四)
- matlab 设计 18db,基于混沌理论的微弱MPSK信号解调方案设计
- ASP.NET数据库编程入门
- 【剑指offer】面试题05:替换空格(java)
- python 获取内存使用率_获取一个python实例的总内存和cpu使用率
- NFS网络文件系统配置
- orbslam2+azure kinect DK稠密重建
- Cadence 16.6基本操作技巧
- adm浏览器识别为linux,QQ浏览器Linux版qqbrowserlinux_1.0.0-1_amd64.deb能正常使用
- 如何使用DEV-C++(超详细)
- css3制作手风琴,CSS3实现可关闭的下拉手风琴菜单效果
- TeamCity系列教程(二)-teamcity发布前端项目
- 【设计前沿】初级网页设计师需要注意事项
- python按日期排序_Python List拆分,按日期排序,然后加入
- MyDockFinder 5.5体验极致模拟 Mac OS 系统桌面,完美支持最新版Win10 系统,可使用系统级模糊效果
- 优思学院|PDCA与PDSA到底有何分别?
- Python—处理文件(mimetypes和chardet)
热门文章
- android客户端中间人攻击,Android 中间人攻击
- c语言常用转向的语句,java中类似于C语言的goto无条件转向语句的语法是什么?...
- nginx反向代理模块配置详解_nginx反向代理配置详解
- bzoj 3399: [Usaco2009 Mar]Sand Castle城堡
- bzoj 4237: 稻草人(CDQ分治+单调栈+二分)
- bzoj 1614: [Usaco2007 Jan]Telephone Lines架设电话线(二分+SPFA)
- [Python] 根据提供的函数对指定序列做映射:map() 函数
- 线性方程组的5种描述方式
- 五分钟快速过完Verilog HDL基本概念(5)数据类型
- mybatis问题。foreach循环遍历数组报错情况,及其解决方法