module GreyCode; title 'Greycode Counter using State Machine syntax Wendey Mueller - April 23, 1993' GreyCode device 'P750'; CLK,HOLD pin 1,2; C3,C2,C1,C0 pin 23,22,21,20 istype 'reg_d,buffer'; C,K,X,Z,U,D,H,L = .C.,.K.,.X.,.Z.,.U.,.D.,1,0; GCODE = [C3,C2,C1,C0]; "counter bits "define states to generate greycode counter S0 = [0,0,0,0]; S1 = [0,0,0,1]; S2 = [0,0,1,1]; S3 = [0,0,1,0]; S4 = [0,1,1,0]; S5 = [0,1,1,1]; S6 = [0,1,0,1]; S7 = [0,1,0,0]; S8 = [1,1,0,0]; S9 = [1,1,0,1]; S10 = [1,1,1,1]; S11 = [1,1,1,0]; S12 = [1,0,1,0]; S13 = [1,0,1,1]; S14 = [1,0,0,1]; S15 = [1,0,0,0]; EQUATIONS GCODE.CK = CLK; STATE_DIAGRAM GCODE STATE S0: IF HOLD THEN S0 ELSE S1; STATE S1: IF HOLD THEN S1 ELSE S2; STATE S2: IF HOLD THEN S2 ELSE S3; STATE S3: IF HOLD THEN S3 ELSE S4; STATE S4: IF HOLD THEN S4 ELSE S5; STATE S5: IF HOLD THEN S5 ELSE S6; STATE S6: IF HOLD THEN S6 ELSE S7; STATE S7: IF HOLD THEN S7 ELSE S8; STATE S8: IF HOLD THEN S8 ELSE S9; STATE S9: IF HOLD THEN S9 ELSE S10; STATE S10: IF HOLD THEN S10 ELSE S11; STATE S11: IF HOLD THEN S11 ELSE S12; STATE S12: IF HOLD THEN S12 ELSE S13; STATE S13: IF HOLD THEN S13 ELSE S14; STATE S14: IF HOLD THEN S14 ELSE S15; STATE S15: IF HOLD THEN S15 ELSE S0; @IF (1) { TEST_VECTORS ( [CLK] -> [C3,C2,C1,C0]) [ 0 ] -> [0, 0, 0, 0 ]; [ C ] -> [0, 0, 0, 1 ]; [ C ] -> [0, 0, 1, 1 ]; [ C ] -> [0, 0, 1, 0 ]; [ C ] -> [0, 1, 1, 0 ]; [ C ] -> [0, 1, 1, 1 ]; [ C ] -> [0, 1, 0, 1 ]; [ C ] -> [0, 1, 0, 0 ]; [ C ] -> [1, 1, 0, 0 ]; [ C ] -> [1, 1, 0, 1 ]; [ C ] -> [1, 1, 1, 1 ]; [ C ] -> [1, 1, 1, 0 ]; [ C ] -> [1, 0, 1, 0 ]; [ C ] -> [1, 0, 1, 1 ]; [ C ] -> [1, 0, 0, 1 ]; [ C ] -> [1, 0, 0, 0 ]; } END