Verilog 中定义信号为什么要区分 wire 和 reg 两种类型?

在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


  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值