考虑如下所示的状态机,它有一个输入 和一个输出 

 

 实现状态机。 (这部分不在期中,但编写 FSM 是一种很好的做法)。

module top_module (
    input clk,
    input reset,     // synchronous reset
    input w,
    output z);
    parameter A=6'b000001,B=6'b000010,C=6'b000100,D=6'b001000,E=6'b010000,F=6'b100000;
    wire [5:0] state,nstate;
    always@(posedge clk)
        if(reset)
            state<=A;
        else
            state<=nstate;
    
    always@(*)
        case(state)
        A:nstate=w?A:B;
        B:nstate=w?D:C;
        C:nstate=w?D:E;
        D:nstate=w?A:F;
        E:nstate=w?D:E;
        F:nstate=w?D:C;
        default:nstate=A;
    endcase
    assign z=state==E|state==F;

endmodule

posted on 2022-06-04 20:37  USSTer  阅读(75)  评论(0)    收藏  举报