状态机三always写法

来源:互联网 发布:魔法门之英雄无敌3mac 编辑:程序博客网 时间:2024/05/29 07:44
三always块大多用于同步Mealy状态机,两个时序always块分别用来描述现态逻辑和对输出赋值,组合always块用于产生下一状态。这种方式的状态机也是
寄存器输出,输出无毛刺,并且代码比单always块清晰一度,但是面积大于双always块。随着芯片资源和速度的提高,目前这种方式得到了广泛应用。


//构成状态跳转环
always @ (posedge clk or negedge rst_n)
    current_state <= next_state;


//完成状态机的内部逻辑
always @ (current_state or ...) begin
    case(current_state)
    S1:next_state = S2;
    S2:next_state = S1;
    default:...
    endcase
end


//完成状态机的外部逻辑
always @ (current_state or ...) begin
    case(current_state)
    S1:
    S2:
    default:..
    endcase
end