module fsm(clk,x,z); input clk,x; output z; reg [2:0] state,nxt_state; parameter s0=0,s1=1,s2=2,s3=3,s4=4; always@(posedge clk) begin state<

= nxt_state; end always@(state or x) begin case(state) s0:if(x) nxt_state=s1; else nxt_state=s0; s1:if(x) nxt_state=s3; else nxt_state=s2; s2:if(x) nxt_state=s0; else nxt_state=s4; s3:if(x) nxt_state=s2; else nxt_state=s4; s4: nxt_state=s0; default:nxt_state=s0; endcase end assign z=(state==s4); endmodule