一文了解阻塞赋值与非阻塞赋值

关于阻塞赋值和非阻塞赋值的问题,明德扬的学员提得比较多,今天小黑老师专门给大家普及一下阻塞赋值和非阻塞赋值的相关知识。
  一、概述
1、阻塞赋值对应的电路往往与触发沿没有关系,只与电平的变化有关系。
阻塞赋值符号“=”。
2、非阻塞赋值对应的电路结构往往与边沿触发有关系,只有在触发沿时才有可能发生赋值的情况。
非阻塞赋值符号“<=”。
二、赋值方式
1、阻塞赋值
阻塞赋值操作符用等号(即 = )表示。阻塞赋值时先计算等号右手方向(rhs)部分的值,这时赋值语句不允许任何别的语句的干扰,直到现行的赋值完成时刻,即把rhs赋值给 lhs的时刻,它才允许别的赋值语句的执行。一般可综合的阻塞赋值操作在rhs不能设定有延迟,(即使是零延迟也不允许)。若在rhs 加上延迟,则在延迟期间会阻止赋值语句的执行, 延迟后才执行赋值,这种赋值语句是不可综合的,在需要综合的模块设计中不可使用这种风格的代码。
阻塞赋值的执行可以认为是只有一个步骤的操作:
所谓阻塞的概念是指在同一个always块中,其后面的赋值语句从概念上(即使不设定延迟)是在前一句赋值语句结束后再开始赋值的。
如果在一个过程块中阻塞赋值的rhs变量正好是另一个过程块中阻塞赋值的lhs变量,这两个过程块又用同一个时钟沿触发,这时阻塞赋值操作会出现问题,即如果阻塞赋值的次序安排不好,就会出现竞争。若这两个阻塞赋值操作用同一个时钟沿触发,则执行的次序是无法确定的。
2、非阻塞赋值
非阻塞赋值操作符用小于等于号 (即 <= )表示。在赋值操作时刻开始时计算非阻塞赋值符的rhs表达式,赋值操作时刻结束时更新lhs。在计算非阻塞赋值的rhs表达式和更新lhs期间,其他的verilog语句,包括其他的verilog非阻塞赋值语句都能同时计算rhs表达式和更新lhs。非阻塞赋值允许其他的verilog语句同时进行操作。
非阻塞赋值的操作可以看作为两个步骤的过程:
     1)在赋值时刻开始时,计算非阻塞赋值rhs表达式。
     2)在赋值时刻结束时,更新非阻塞赋值lhs表达式。
非阻塞赋值操作只能用于对寄存器类型变量进行赋值,因此只能用在“initial”块和“always”块等过程块中。非阻塞赋值不允许用于连续赋值。
三、举例
1、阻塞赋值
2、非阻塞赋值
四、总结
综上所述,明德扬至简设计法提出这样的规则: 
时序逻辑用非阻塞赋值
组合逻辑用阻塞赋值。


TDA8945J各引脚功能及电压
云主机对比物理服务器,云主机的性价比更高
千元机市场的领军者荣耀9X,发布的29天时间里突破300万
安全锁具上锁挂牌上市七个流程的详细介绍
纯电动车的真实市场需求究竟在哪
一文了解阻塞赋值与非阻塞赋值
LG 电子正在研发下一代汽车智能前照灯
胶水粘接工艺及UL94-V0密封粘接胶水
小米6、坚果pro、三星S8、小米mix都是国产旗舰机你选谁?小米6、坚果pro、三星S8、小米mix对比评测
路上太堵了 马斯克:飞不起来就开公司挖地道吧!
蒸汽回收机它是如何实现节能环保降本增效的
RLC并联谐振电路仿真分析
PCIe总线的过去、现在和未来
谷歌Pixel4XL渲染图曝光 采用屏下指纹的可能性很高
APS排产排产如何提升企业生产计划效率
如何使用Arduino开发板制作函数生成器(波形发生器)
用空心铜铆钉制作双面印刷线路板的方法,PCB
通用人工智能仍是白日梦
新型超声波束合成ASIC芯片问世
噪音扬尘在线监测系统