module CombLock Title 'Combination-Lock State Machine' " Input and Outputs X, CLOCK pin; UNLK, HINT pin istype 'com'; Q1, Q2, Q3 pin istype 'reg'; Q = [Q1..Q3]; Equations Q.CLK = CLOCK; " Q.OE = 1; " State variables Q1 := Q1 & !Q2 & X # !Q1 & Q2 & Q3 & !X # Q1 & Q2 & !Q3; Q2 := !Q2 & Q3 & X # Q2 & !Q3 & X; Q3 := Q1 & !Q2 & !Q3 # Q1 & Q3 & !X # !Q2 & !X # !Q1 & !Q3 & !X # Q2 & !Q3 & X; " Mealy outputs UNLK = Q1 & Q2 & Q3 & !X; HINT = !Q1 & !Q2 & !Q3 & !X # Q1 & !Q2 & X # !Q2 & Q3 & X # Q2 & Q3 & !X # Q2 & !Q3 & X; end CombLock