FPGA状态机跑飞问题

        这个问题遇到了几次,大概现象就是状态机在运行过程中没有根据某些信号的跳变而跳转,看起来就是乱跑。

可能的原因如下:

1.异步时钟信号引起;

解决办法:异步时钟给过来的信号用状态机使用的时钟打两拍,用打拍后的信号;

2.状态机跳转的判断条件不充分,大多数情况下就是a = 1,b = 16‘haabb同时发生时,或者再加上一些其他的判断条件,列举不充分,这样的话,状态机会跑飞。上面的举例太过随意,通俗一点讲就是你给了状态机有些模棱两可,或者还有其他可能性的判断条件,状态机不知道该怎么跳了。

解决方法:

if((a=1) &&(b=16'haabb))

        state <= 1'b0;

else

        state <= 1'b1;

可以写成

if(a=1)

        if(b = 16'haabb)

                state <= 1'b0;

        else

                state <= state;

else

        state <= state;

大概就是这么个意思,你自己都不确定的情况,就分开列出来,给状态机一个明显的跳变条件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值