在Verilog中,wire永远是wire,就是相当于一条连线,用来连接电路,不能存储数据,无驱动能力,是组合逻辑,只能在assign左侧赋值,不能在always @ 中赋值;
但reg可以综合成register,latch,甚至wire(当其只是中间变量的时候),可以用于组合逻辑或者时序逻辑,能存储数据,有驱动能力,在always @模块表达式左侧被赋值。两个共同具有性质:都能用于assign与always @模块表达式的右侧。
作者:young cc
链接:https://www.zhihu.com/question/21021718/answer/56339195
- nets型变量指输出始终根据输入的变化而更新其值的变量,它一般指的是硬件电路中的各种物理连接
- register型变量对应的是具有状态保持作用的电路元件,如触发器、寄存器等
register类型代表类型为reg
nets类型典型代表wire
原文https://www.jianshu.com/p/ec924ed8baa8
连续赋值和过程赋值之间有什么区别?
initial和always中的赋值有什么区别?
initial和always中的赋值都是过程赋值
阻塞和非阻塞赋值之间有什么区别?
阻塞和非阻塞赋值都是过程赋值
连续赋值:
1)语法上,有关键词“assign”来标识;
2)左侧被赋值的数据类型必须是线网型数据(wire);
3)连续赋值语句不能出现在过程快中(initial/always);
5)连续赋值语句产生作用后,赋值表达式中信号的任何变化都将立即被反映到赋值线网型数据的取值上;
过程赋值:
1)语法上,没有关键词“assign”;
2)左侧被赋值的数据类型必须是寄存器类型的变量(reg);
3)过程性连续赋值语句只能出现在过程块中;
4)过程性连续赋值语句主要用来对时序逻辑电路进行行为描述;
5)在过程赋值语句的情况下,只有在过程赋值语句被执行时才执行赋值操作,语句执行完后被赋值变量的取值不再受到赋值表达式的影响;
原文链接:https://blog.csdn.net/J_Hang/article/details/100633261
连续赋值 等号右边操作数发生变化就需要执行(上电便一直执行)可简单的认为bai并列执行
过程赋值语句,在initial块中,过程性赋值只顺序执行一次,而在always块中,每一次满足always的条件时,都要顺序执行一次该always块中的语句,可简单的认为过程赋值是按顺序执行的
原文:https://zhidao.baidu.com/question/571443330.html