"
"  File:	C:\FNDTN\ACTIVE\PROJECTS\CHAPTER8\MPYSM.abl
"  created:	03/29/99 21:47:01
"  from:	'C:\FNDTN\ACTIVE\PROJECTS\CHAPTER8\MPYSM.asf'
"  by:		fsm2hdl - version: 2.0.1.49
"
module mpysm
Title 'mpysm'

Declarations

"clocks
CLK PIN;

"input ports
MAXCNT PIN;
MPY0 PIN;
RESET PIN;
START PIN;

"output ports
CLEAR PIN;
LDHP PIN;
LDMCND PIN;
MPYS1..MPYS0 PIN;
MPYS = [MPYS1..MPYS0];
RUNC PIN;
SELSUM PIN;

"******** BINARY ENCODED state machine: Sreg0 ******
	Sreg0_0 NODE istype 'reg';
xilinx property 'save Sreg0_0';
	Sreg0_1 NODE istype 'reg';
xilinx property 'save Sreg0_1';

	Sreg0 = [Sreg0_1, Sreg0_0];

	IDLE = ^b00; 
	INIT = ^b01; 
	RUN = ^b10; 
	WAIT = ^b11; 


Equations

"diagram ACTIONS

"************* state machine: Sreg0 *************
" clock signals definitions
	Sreg0.clk = CLK;
	Sreg0.clr = RESET == 1;

State_diagram Sreg0


State IDLE:
    
     IF (START == 0) THEN 
    IDLE
     ELSE  IF (START == 1) THEN 
        INIT;


State INIT:
    
    CLEAR = 1;
    LDHP = 1;
    LDMCND = 1;
    MPYS = [1,1];
     IF (1) THEN 
    RUN;


State RUN:
    
    RUNC = 1;
    LDHP = 1;
    MPYS = [0,1];
    SELSUM = MPY0;
     IF (MAXCNT == 1) THEN 
    WAIT
     ELSE  IF (MAXCNT == 0) THEN 
        RUN;


State WAIT:
    
     IF (START == 1) THEN 
    WAIT
     ELSE  IF (START == 0) THEN 
        IDLE;

" end of state machine - Sreg0


end mpysm
