;PALASM Design Description

;---------------------------------- Declaration Segment ------------
;Similar to Page 4-33 to 4-34 in "PALASM 4 Getting Started ...", 1992
TITLE    Up/Down Couter using COMB outputs (NO State bit assignment)
PATTERN  
REVISION 
AUTHOR   E. M. Schwartz
COMPANY  
DATE     2/10/97

CHIP  _count  PAL22V10

;---------------------------------- PIN Declarations ---------------
PIN  1          CLOCK                                        ; INPUT 
PIN  2          UP_DWN                                       ; INPUT 
PIN  3          ENABLE                                       ; INPUT 
PIN  14         CNT0                           COMBINATORIAL ; OUTPUT
PIN  15         CNT1                           COMB          ; OUTPUT
PIN  16         CNT2                           COMB          ; OUTPUT

;----------------------------------- State Segment ------
STATE
MOORE_MACHINE
START_UP := POWER_UP -> ZERO

;begin transition equations
ZERO    := UP   -> ONE
        +  DOWN -> SEVEN
        +  STOP -> ZERO
        +-> ZERO
ONE     := UP   -> TWO
        +  DOWN -> ZERO
        +  STOP -> ONE
        +-> ZERO
TWO     := UP   -> THREE
        +  DOWN -> ONE
        +  STOP -> TWO
        +-> ZERO
THREE   := UP   -> FOUR
        +  DOWN -> TWO
        +  STOP -> THREE
        +-> ZERO
FOUR    := UP   -> FIVE
        +  DOWN -> THREE
        +  STOP -> FOUR
        +-> ZERO
FIVE    := UP   -> SIX
        +  DOWN -> FOUR
        +  STOP -> FIVE
        +-> ZERO
SIX     := UP   -> SEVEN
        +  DOWN -> FIVE
        +  STOP -> SIX
        +-> ZERO
SEVEN   := UP   -> ZERO
        +  DOWN -> SIX
        +  STOP -> SEVEN
        +-> ZERO

;NO state assignments 
;Below are Flip-flop output equations
ZERO.OUTF  = /CNT2*/CNT1*/CNT0
ONE.OUTF   = /CNT2*/CNT1* CNT0
TWO.OUTF   = /CNT2* CNT1*/CNT0
THREE.OUTF = /CNT2* CNT1* CNT0
FOUR.OUTF  =  CNT2*/CNT1*/CNT0
FIVE.OUTF  =  CNT2*/CNT1* CNT0
SIX.OUTF   =  CNT2* CNT1*/CNT0
SEVEN.OUTF =  CNT2* CNT1* CNT0

CONDITIONS
UP      = ENABLE * UP_DWN
DOWN    = ENABLE * /UP_DWN
STOP    = /ENABLE

;----------------------------------- Simulation Segment ------------
SIMULATION
TRACE_ON ENABLE UP_DWN CNT2 CNT1 CNT0
SETF /CLOCK /ENABLE UP_DWN
CLOCKF CLOCK
CHECK  /CNT2 /CNT1 /CNT0
CLOCKF CLOCK
CHECK  /CNT2 /CNT1 /CNT0  ;CHECKQ does NOT work here

SETF ENABLE
CLOCKF CLOCK
CHECK  /CNT2 /CNT1  CNT0
CLOCKF CLOCK
CHECK  /CNT2  CNT1 /CNT0
TRACE_OFF
;-------------------------------------------------------------------
