三段式状态机
三段式状态机优点
- 将组合逻辑与时序逻辑分开,所写代码层次清晰,方便理解和后续的维护
- 相较两段式状态机,解决了输出毛刺的影响。
书写格式
三段式状态机一般有两种书写格式,作者更推荐格式一的形式,这些写的状态机更加稳定,因为格式二形式书写的状态机很容易出现毛刺:
- 格式一:
always@(posedge clk_i or negedge rstn_i)begin
if(!rstn_i)
c_state<=IDLE;
else
c_state<=n_state;
end
//---------------------------------------------------
always@(*)begin
if(!rstn_i)
n_state<=IDLE;
else
case(c_state)
IDLE:
default:
endcase
end
//----------------------------------------------------
always@(posedge clk_i or negedge rstn_i)begin
if(!rstn_i)begin
end
else
case(n_state)
IDLE:
default:
endcase
end
- 格式二
always@(posedge clk_i or negedge rstn_i)begin
if(!rstn_i)
c_state<=IDLE;
else
c_state<=n_state;
end
//---------------------------------------------------
always@(*)begin
if(!rstn_i)
n_state<=IDLE;
else
case(c_state)
IDLE:
default:<