简单理解Verilog中的阻塞赋值和非阻塞赋值

在做芯片设计写硬件描述语言时,对于初学者必然面对的一个问题是,该如何使用阻塞赋值和非阻塞赋值。对于个问题,首先要理解什么是阻塞赋值?什么是非阻塞赋值?

阻塞赋值

从形式上来看,阻塞赋值用等号(=)表示。从字面意思上来看,赋值时被阻塞了。比如a=b,意思是把b值赋给a,从表达上来看a永远和b的值是相等的。但是如果b是一个表达式,比如b=c+d+e,或者其他复杂表达形式,那么要想让b值赋到a上,那么b必须完成c+d+e计算。那么这样a被赋值是有一个阻塞的过程。

非阻塞赋值

从形式上来看,非阻塞赋值用小于等于号(<=)表示。同样从字面意思上来看,赋值过程是没有阻塞的。为什么没有阻塞呢?因为非阻塞赋值用于时序电路,综合出来的是寄存器。对于a<=b,可以看作2个过程(1)在赋值开始时,计算非阻塞赋值b;(2)在赋值结束时,把a更新为b。

实际使用

在实际使用中,对于可综合电路,只要记住一点,组合电路要使用阻塞赋值,时序电路使用非阻塞赋值。

对于组合电路,需要注意,1.always块的触发条件要写全,或者用always @(*);2. always块中的if else要匹配全。只有if 而没有else与其匹配。或者if ... else if ... 没有else了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值