always(*)是什么意思?

在最开始学习verilog时,发现别人写的代码中出现了always@(*)的代码,当时也是一脸懵,不知道啥意思,也找不到人询问,网上也很少解答这种简单问题的,所以写下这样一个解答,希望刚学习的小白可以很快的理解它的含义。

1.always @(posedge clk or negedge rst_n)

这个语句是我们学习verilog最常用到的语句,@后面的括号内是敏感事件列表,也就是执行always后面内容的触发条件。
敏感事件列表可以包含多个敏感事件,但不可以同时包括电平敏感事件和边沿敏感事件,也不可以同时包括同一个信号的上升沿和下降沿。

2.always @(*)

那么按照上面的理解always @(*)中的敏感事件为✳,事实上这里的✳代表的是这个alway块的内容中出现的所有的变量,只要这些变量发生变化这个always块儿就会被触发。这种立即触发的逻辑电路实事上也就是组合逻辑电路。

3.assign 与 always @(*)有啥区别

既然always @(✳)也是组合逻辑电路的表示方法,那么它和assign有啥区别了?
1.assign只能处理wire型变量,always@(✳)处理的是reg型号的变量。
2.assign可以直接赋值一个定值,而always@(✳)不能只赋一个定值,还需要这个值能够发生变化,以触发always块。
always @(*) begin temp <= 1'b1 end
如上面一段代码,由于1’b1永远不会发生改变,always语句块也永远不会被执行,那么temp的值一直处于一个不定态。

以上就是我对always@(✳)的理解,如果你看到了这里觉得对你有帮助,请帮忙点赞收藏加关注,如果有啥不妥的地方,也请评论指正。

  • 24
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

文华也曾献与你

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值