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)多 ...
最新文章
- KRIA SOM,赛灵思自适应计算最近一发“王炸”!
- ASP.NET MVC 的多国语系支持
- 详解中奖概率逻辑:为什么你中不了特等奖(附原件)
- SpringBoot指南(八)——SpringBoot整合Redis
- 戴尔PowerEdge-C服务器新成员:PowerEdge C5125和C5220
- 思科首席技术官解析:统一计算及战略
- Word:不显示图片 + 清空“最近使用的文档”列表
- ffmpeg ts与mp4互相转换
- Flutter基础Widget之按钮(RaisedButton、FlatButton、OutlineButton,IconButton)
- 评价的等级优良差_小学生期末评语-等级优良合格(最佳版本)
- 微信复制统计系统-好多粉如何使用?
- 利用电子邮件“钓鱼”的常见手段
- 【Oracle】 选择题汇总
- 【旧文回顾】中国太阳能因制造业创新而繁荣
- 旋转电机设计_尤哈·皮罗内 PDF完整版下载 网盘分享
- SQL-视图(view)
- gravity和layout_gravity的区别(有时使用layout_gravity=center时失效的原因)
- Cannot satisfy the following dependencies for tc解决
- LongHash 和Cryptic Labs 今天宣布达成战略合作
- MKS MONSTER8 V1.0使用说明书(基于Marlin 2.0.X固件配置Voron 2.4)
热门文章
- vmware挂载san存储_戏说 块存储 文件存储 对象存储
- Python入门--列表元素的增加操作,append(),extend(),insert(),切片
- Go语言基础进阶—程序结构—变量
- JAVA集合四:比较器--类自定义排序
- UnityShader22:序列帧动画
- bzoj 1688: [Usaco2005 Open]Disease Manangement 疾病管理(状压)
- 图像膨胀、腐蚀算法实现 python源码
- 一个demo学会c#
- ubuntu下vim配置成c++开发编辑器
- shiro服务器取不到用户信息,SpringMvc+Shiro有时候shiro取不到用户名