Sequence Detector in Verilog

  • 1732
  • 0

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