module tbirdsd title 'State Machine for T-Bird Tail Lights' "TBIRDSD device 'P16V8R'; " Input and output pins CLOCK, LEFT, RIGHT, HAZ, RESET pin 1, 2, 3, 4, 5; Q0, Q1, Q2 pin 14, 15, 16 istype 'reg'; " Definitions QSTATE = [Q2,Q1,Q0]; " State variables IDLE = [ 0, 0, 0]; " States L1 = [ 0, 0, 1]; L2 = [ 0, 1, 1]; L3 = [ 0, 1, 0]; R1 = [ 1, 0, 1]; R2 = [ 1, 1, 1]; R3 = [ 1, 1, 0]; LR3 = [ 1, 0, 0]; equations QSTATE.CLK = CLOCK; state_diagram QSTATE state IDLE: IF RESET THEN IDLE ELSE IF (HAZ # LEFT & RIGHT) THEN LR3 ELSE IF LEFT THEN L1 ELSE IF RIGHT THEN R1 ELSE IDLE; state L1: IF RESET THEN IDLE ELSE IF HAZ THEN LR3 ELSE L2; state L2: IF RESET THEN IDLE ELSE IF HAZ THEN LR3 ELSE L3; state L3: GOTO IDLE; state R1: IF RESET THEN IDLE ELSE IF HAZ THEN LR3 ELSE R2; state R2: IF RESET THEN IDLE ELSE IF HAZ THEN LR3 ELSE R3; state R3: GOTO IDLE; state LR3: GOTO IDLE; end tbirdsd