module SMEX3 title 'Example State Machine with Embedded Moore State Definitions' " Input and output pins CLOCK, RESET_L, A, B pin; LASTA, Q1, Q2 pin istype 'reg'; Z pin istype 'com'; " Definitions QSTATE = [Q1,Q2]; " State variables INIT = [ 0, 0]; " State encodings LOOKING = [ 0, 1]; OK = [ 1, 0]; XTRA = [ 1, 1]; RESET = !RESET_L; state_diagram QSTATE state INIT: Z = 0; IF RESET THEN INIT ELSE LOOKING; state LOOKING: Z = 0; IF RESET THEN INIT ELSE IF (A == LASTA) THEN OK ELSE LOOKING; state OK: Z = 1; IF RESET THEN INIT ELSE IF B THEN OK ELSE IF (A == LASTA) THEN OK ELSE LOOKING; state XTRA: Z = 0; GOTO INIT; equations LASTA.CLK = CLOCK; QSTATE.CLK = CLOCK; " QSTATE.OE = 1; LASTA := A; END SMEX3