module incr
Title 'quadraturní dekoder inkrementalniho ?idla'

Declarations

clk	pin ;	"vstup hodin cca 1MHz			

xa0	pin;	"vstup incr. snimace A 
xa2,xa1 node istype 'reg';
XA = [xa2..xa1];	
xb0	pin;	"vstup incr. snimace B
xb2,xb1 node istype 'reg';
XB = [xb2..xb1];
xup,xdn	node istype 'reg';

Equations

XA	:= [xa1,xa0];
XA.clk	 = clk;

XB	:= [xb1,xb0];
XB.clk	 = clk;

xup	:=  xa1 & !xa2 & !xb1 & !xb2
	 # !xa1 &  xa2 &  xb1 &  xb2
	 #  xa1 &  xa2 &  xb1 & !xb2
	 # !xa1 & !xa2 & !xb1 &  xb2;	    	
xup.clk	 = clk;	

xdn	:= !xa1 &  xa2 & !xb1 & !xb2
	 #  xa1 & !xa2 &  xb1 &  xb2
	 #  xa1 &  xa2 & !xb1 &  xb2
	 # !xa1 & !xa2 &  xb1 & !xb2;
xdn.clk	 = clk;

end incr
