FPGA状态机跑飞 的解决办法

本文探讨了FPGA状态机在实际运行中出现的跑飞问题,分析了可能的原因,包括输入信号与本地时钟不同步导致的竞争冒险现象,以及状态机综合后未能正确处理非有效状态。提出了通过同步外部输入信号和使用综合指令确保非有效状态立即复位的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

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

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

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

     受益匪浅!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值