FPGA的状态死锁问题

任何一个状态机都需要有初始化的动作,否则就会出现死锁现象,当芯片上电或者复位后,状态机应该能够自动将所有的

判断条件复位,并进入初始化状态,一般采用异步复位电路来实现状态机的初始化。在状态初始化时,需要防止出现伪初

始化或者说不完全初始的情况特别是针对一些总线或者有位宽要求的输出信号和变量。

未完全初始化的状态机(锁存器)

always@( posedge Clk or negedge Rst_N ) begin

if(!Rst_N ) state <= IDLE;

else case( state )

  IDLE : begin

      s[0] <= 1'b1;

      state <= ACT1;

    end

  ACT1 : begin

      s[1] <= 1'b1;

    state <=ACT2;

  end

  ... ...

default : state <= IDLE;

状态死锁的原因:没有对s[3 : 0] 初始化。改进:从根本来说,所有的初始化

动作都需要对状态机中的每个输出信号和变量进行初始化。对于状态机来说,特别注意

要有default的分支语句,避免进入死锁。

 

    

转载于:https://www.cnblogs.com/zhongguo135/archive/2012/10/05/2711975.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值