CHANG 发表于 2010-6-26 08:42:11

能具体说说是什么条件吗?

VVC 发表于 2010-6-26 10:27:54

楼主写的状态机存在反馈,这个反馈信号就是st,因此对毛刺比较敏感。从电路上看,st经过了触发器,然后再经过组合逻辑电路if得到新值反馈回状态判决器。利用retiming技术把触发器后移。可以得到改善。<br>
具体实现上应该定义present state 和next state两个状态,通过对next state操作,然后在时钟沿把next state 传递给present state.

longt 发表于 2010-6-26 12:20:31

大家还是说说根本原因啊

VVC 发表于 2010-6-26 14:06:00

对状态机是不是只定义了两种状态?若不是则case语句不完整。假设除了idle和s1还有一个状态s2。并假设系统上电后(或者因为干扰造成)状态机进入s2状态,那么系统就死在这个状态了,只好用rst来复位。<br>
另外,我对状态机不怎么明白,我不知道编译软件对状态机的编码是不是能保证不出现无效状态。所以即使是仅仅两种状态,我也建议写成when idle =&gt;... when others =&gt; ...;而不是写成when idle =&gt;... when s1 =&gt; ...;<br>
<br>
由于对你阐述的环境我无法全面把握,所以不好确定地说到底是那个地方导致了&ldquo;死机&rdquo;。

longtim 发表于 2010-6-26 15:55:41

你的状态机的写法是不提倡的,11楼的同仁的建议值得楼主自己学习一下。

HANG 发表于 2010-6-26 17:20:59

没其他状态了,而且我的程序中也用WHEN OTHERS了<br>
我是觉得因为毛刺引起了亚稳态,使状态机死在了一个未知的状态,状态机在这种情况下就跳不出来了<br>
即使有when other =&gt;也是没用的。

interige 发表于 2010-6-26 19:10:25

楼主不把整个程序贴出来不好回答你,你连&ldquo;死&rdquo;的现象都没有陈述出来,整个程序如何运作,或者在仿真,运行上什么现象?有些状态机单独看是没有问题,但是和整个电路联系起来会出问题!

interige 发表于 2010-6-26 19:51:24

状态机由于干扰跑到非有效的状态中去的问题我经常遇到,我的解决办法是在case的default状态中根据一些正在使用的寄存器的值,再把状态准确地拉回原来地地方

dlb05061131 发表于 2011-1-12 13:56:00

楼主写的这个,好像不是很好。你看看怎么避免产生锁存器吧,有可能是这个问题
页: 1 [2]
查看完整版本: 毛刺引起状态机的死掉,大家帮说说原因!!!