• 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的分支语句,避免进入死锁。

        

  • 相关阅读:
    软件架构师是如何工作
    安装flume由于HBASE出现的错误
    学习记录(Python集合)
    bzoj4199: [Noi2015]品酒大会
    清橙A1484
    codeforces 232D Fence
    bzoj2337: [HNOI2011]XOR和路径
    bzoj3143: [Hnoi2013]游走
    codeforces 235 B. Let's Play Osu!
    bestcoder单调区间
  • 原文地址:https://www.cnblogs.com/zhongguo135/p/2711975.html
Copyright © 2020-2023  润新知