给定如下所示的状态分配表,实现有限状态机。 重置应该将 FSM 重置为状态 000。

 

module top_module (
    input clk,
    input reset,   // Synchronous reset
    input x,
    output z
);
    parameter
    y0=3'b000,
    y1=3'b001,
    y2=3'b010,
    y3=3'b011,
    y4=3'b100;
    reg [2:0]state,nstate;
    always@(*)
        case(state)
            y0:nstate=x?y1:y0;
            y1:nstate=x?y4:y1;
            y2:nstate=x?y1:y2;
            y3:nstate=x?y2:y1;
            y4:nstate=x?y4:y3;
            default:nstate=y0;
        endcase
    always@(posedge clk)
        if(reset)
            state<=y0;
        else
            state<=nstate;
    assign z=(state==y3||state==y4);
endmodule

 

posted on 2022-06-04 09:58  USSTer  阅读(162)  评论(0)    收藏  举报