输入序列不连续的序列检测 alt

老规矩,状态机和寄存器都可以; 状态机就是第二段n_state跳转的时候检查以下valid的有效; 寄存器就是移位进去的时候检查valid信号;

`timescale 1ns/1ns
module sequence_detect(
	input clk,
	input rst_n,
	input data,
	input data_valid,
	output reg match
	);

    reg[3:0] data_reg;
    always @ (posedge clk or negedge rst_n )
        if(!rst_n)
           data_reg <= 0;
        else if (data_valid)
            data_reg <= { data_reg[3:0],data };
             else 
             data_reg <= 0;
             
     always @ (*)
        if(!rst_n)
           match <= 0;
        else if (data_reg == 4'b0110)
                 match <= 1;
              else
                 match <= 0;  

endmodule

仿真波形: alt