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

    Source: geocities.com/uxormania/galant

               ( geocities.com/uxormania)