always块中的多个if运行

本文探讨了在Verilog代码中使用多重if语句时遇到的问题,特别是涉及到if-else结构时的优先级和执行顺序。在always块中,后出现的if条件具有更高的优先级,当含有else的if不满足条件时,其else部分将被执行,导致前面的if条件即使满足也无法正常工作。这个细节对于理解和调试数字逻辑设计至关重要,尤其是当遇到预期外的行为时。

今天在调试时出现的问题在一个always中写入了三个if语句,前两个只有if,而最后一个有if ,else关系,在测试时即使第二个if的触发条件满足,但是从在线看还是没进入到begin,end中。观察RTL发现第二个if的内容没被接入到电路。

原因: 

         1.always块中多个if存在优先级关系,越靠近后面的优先级越高,越在后边的也是越靠近输出短的,那么延时也将越短。

         2.当第n个if带有else且第n个if不生效时,那么会直接执行else,这时前n-1个if的判断条件即使成立也无效。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值