求助大神 代码出现死循环了
时间:10-02
整理:3721RD
点击:
这段代码在always的延时是一个变量 就会出现死循环,达不到想要结果,请问要怎么改啊
C是输出,能调用?
你再always中这么写,是想让E成为一个方波?
是啊
比方说,C ==1, 那C/2 就是0,这应该是死循环的原因吧。
另外,E 要给初值吧,否则怎么翻转呢?另外B 作为除数是不是“ |B ”也不能等于0 这样去做运算比较合适?
她采样输出信号C作为翻转的周期,这么做编译通过,仿真是不通过的,迭代错误
run -all
# ** Error: (vsim-3601) Iteration limit reached at time 0 ps.
还有就是D的位数问题,2个3比特的数相加,你想让结果是几位数,如果强制结果也是3位数,就可能失去高位的数,如果强制将结果的位数变大,又怎么样,你可以试验一下
这代码风格很奇怪,不能综合的
假設A跟B都是0, 那麼得到的C也是0, 就會造成死循環了
仿真的时候,reg需要有初始值,否则是不定态,再加上C的初始值可能是0,也会导致死循环,楼上的答案基本都给你做好解释了,根本原因还是代码不可综合。
很简单:在组合电路里,你把输出又连接到输入。
是否可综合跟仿真结果有毛关系