状态机应由唯一时钟触发,尽量不要设计异步状态机,要设计同步有限状态机。
同步有限状态机:状态的变化还要看输入的条件,若满足,进入下一个状态。下一个状态=Function(当前状态,输入信号)
两种有限状态机(FSM):
1.Moore机:输出=Fun(当前状态)。
2. Mealy机:输出=fun(当前状态,输入信号)
状态机异步置位和复位信号要在敏感列表中。
同步置位复位敏感事件只包括时钟信号。
高速状态机状态码与状态机输出有联系。
状态编码建议采用独热码,一位二进制表示一个状态,有几个状态,状态变量就有几位。
对于复杂的多输出FSM,采用状态变化与输出控制分开的方式,如下:
parameter START = 1;
always @(posedge clk) //该过程块负责控制状态的转换
……
case(state)
START:if(A) state <= STOP;
else state <= START;
……
endcase
always @(state) begin //该过程块负责根据状态决定输出
if(state ==START) out =1;
文章评论(0条评论)
登录后参与讨论