FPGA状态机跑飞 的解决办法

      近期调试程序,对状态机的逻辑梳理没什么问题,但是实际运行时,总感觉状态机不是按照设定逻辑跳转运行,甚至出现了,没有A条件符合的情况,也跳转到只能条件A才能进入的状态机。

      以前不相信FPGA的状态机也会有跑飞的情况,chipscope信号抓取发现确实跑飞。

      从夏宇闻老师那里搜到跑飞的可能原因:

  两种可能:1)状态机的输入信号与本地时钟不同步,出现了冒险竞争现象,造成状态机死锁。
                   2)状态机综合后没有生成一旦进入非有效状态便立即复位,然后进入某个有效状态的电路。
解决办法:1)把外部引入的异步输入信号,做同步处理,作为本状态机的输入。
                   2)用综合指令或者约束,强行规定综合后必须生成一旦进入非有效状态便立即复位随即进入有效状态的电路。

    输入信号是指除了从当前状态反馈信号以外的信号,即从状态机外部输入的信号。
是否会产生一旦进入非有效状态立即进行强制复位的电路,并不会因为你在状态机中加入when others=> state1 综合后就一定生成这样的电路。若想生成这样的电路,必须在综合时要通过综合指令(约束)命令综合器强制生成,才会生成的。

     受益匪浅!

  • 6
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值