Sequence Detector範例練習
紀錄與分享
module sequence_detector(match,rst,str_in,clk);
input rst,str_in,clk;
output match;
reg match;
reg [1:0]r_reg,n_reg;
parameter S0 = 2'b00,
S1 = 2'b01,
S2 = 2'b10,
S3 = 2'b11;
always @(posedge clk or posedge rst)
if(rst)
r_reg<=S0;
else
r_reg<=n_reg;
always @(r_reg or str_in)
if(r_reg==S0 && str_in==0) n_reg=S0;
else if (r_reg==S0 && str_in==1) n_reg=S1;
else if (r_reg==S1 && str_in==0) n_reg=S0;
else if (r_reg==S1 && str_in==1) n_reg=S2;
else if (r_reg==S2 && str_in==1) n_reg=S2;
else if (r_reg==S2 && str_in==0) n_reg=S3;
else if (r_reg==S3 && str_in==0) n_reg=S0;
else if (r_reg==S3 && str_in==1) n_reg=S1;
always @(r_reg or str_in)
if(r_reg==S2 && str_in==0) match=1;
else match=0;
endmodule