module XY_QEP4_32 (qep_out, snap_out, clk_in, clr_in,a_in,b_in,z_in,z_en);
input clk_in,clr_in;
input a_in,b_in,z_in; //A,B,Z
input z_en; // Z-en
output [31:0]qep_out;
output [31:0]snap_out;
// A,B state
reg [1:0]state,prestate; // A, B buffer
reg [1:0]z_reg; // Z buffer
reg [31:0]qep_reg; // qep counter
reg [31:0]snap_reg; // qep snap @ z_in rising edge
reg ri_finished_reg; // index_search finished
assign qep_out=qep_reg;
assign snap_out=snap_reg;
always @( posedge clk_in)
begin
if(!clr_in)
begin
// qep & snap reg
snap_reg[31:0] <=32'b0;
qep_reg[31:0]<=32'b0;
input clk_in,clr_in;
input a_in,b_in,z_in; //A,B,Z
input z_en; // Z-en
output [31:0]qep_out;
output [31:0]snap_out;
// A,B state
reg [1:0]state,prestate; // A, B buffer
reg [1:0]z_reg; // Z buffer
reg [31:0]qep_reg; // qep counter
reg [31:0]snap_reg; // qep snap @ z_in rising edge
reg ri_finished_reg; // index_search finished
assign qep_out=qep_reg;
assign snap_out=snap_reg;
always @( posedge clk_in)
begin
if(!clr_in)
begin
// qep & snap reg
snap_reg[31:0] <=32'b0;
qep_reg[31:0]<=32'b0;