今天在调试时出现的问题在一个always中写入了三个if语句,前两个只有if,而最后一个有if ,else关系,在测试时即使第二个if的触发条件满足,但是从在线看还是没进入到begin,end中。观察RTL发现第二个if的内容没被接入到电路。
原因:
1.always块中多个if存在优先级关系,越靠近后面的优先级越高,越在后边的也是越靠近输出短的,那么延时也将越短。
2.当第n个if带有else且第n个if不生效时,那么会直接执行else,这时前n-1个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的判断条件即使成立也无效。
7933
408
800

被折叠的 条评论
为什么被折叠?