输入序列不连续的序列检测
老规矩,状态机和寄存器都可以; 状态机就是第二段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
仿真波形: