Verilog实现序列01011010检测

module seq_detector(clk, reset, d, y);
input clk, reset, d;
output y;
reg [2 : 0] state;
wire y;
parameter s0 = 4'b0000, s1 = 4'b0001, s2 = 4'b0010, s3 = 4'b0100,
              s4 = 4'b1000, s5 = 4'b1001, s6 = 4'b1010, s7 = 4'b1011,s8=1100;
always@(posedge clk or posedge reset)
    begin
        if(reset) state <= s0;
        else
        begin
            casex(state)
                s0: begin
                        if(d == 0) state <= s1;
                        else state <= s0;
                      end
                s1: begin
                        if(d == 1) state <= s2;
                        else state <= s1;
                    end
                s2: begin
                        if(d == 0) state <= s3;
                        else state <= s0;
                    end
                s3: begin
                        if(d == 1) state <= s4;
                        else state <= s1;
                    end
                s4:    begin
                        if(d == 1) state <= s5;
                        else state <= s3;
                    end
                s5: begin
                        if(d == 0) state <= s6;
                        else state <= s0;
                    end
                s6: begin
                        if(d == 1) state <= s7;
                        else state <= s1;
                    end
                s7: begin
                        if(d == 0) state <= s8;
                        else state <= s0;
                    end
                s8:begin
                       if(d == 1) state <= s0;
                       else state <= s1;
                    end
                default: state <= s0;
            endcase
        end
    end
endmodule

不知道对不对,求大佬指导下