module ConvBDX3(Z, X, CLK, ClrN);
output Z;
input X, CLK, ClrN;
reg Z;
reg [2:0] State, nxtState;
parameter A=3'b000, B=3'b100, C=3'b101, D=3'b111, E=3'b110, H=3'b011, M=3'b010;
always @(posedge CLK or negedge ClrN)
if (~ClrN) State=A;
else State=nxtState;
always @(State or X)
case (State)
A: if (~X) nxtState=B;
else nxtState=C;
B: if (~X) nxtState=D;
else nxtState=E;
C: nxtState=E;
D: nxtState=H;
E: if (~X) nxtState=H;
else nxtState=M;
H: nxtState=A;
M: nxtState=A;
endcase
always @(State or X)
case (State)
A: if (~X) Z=1'b1;
else Z=1'b0;
B: if (~X) Z=1'b1;
else Z=1'b0;
C: if (~X) Z=1'b0;
else Z=1'b1;
D: if (~X) Z=1'b0;
else Z=1'b1;
E: if (~X) Z=1'b1;
else Z=1'b0;
H: if (~X) Z=1'b0;
else Z=1'b1;
M: if (~X) Z=1'b1;
else Z=1'b0;
endcase
endmodule
               (
geocities.com/uxormania)