-- MEG program -- 7 November 2000 -- tracecounter should be enable-able and setable -- order of precedence (highest first): SET ENABLE -- state bits are the output, as is LAST, which is 1 when counter=000 INPUTS: RESTART ENABLE SET NEW0 NEW1 NEW2; OUTPUTS: LAST; RESET ON RESTART TO state0 (LAST); state0: case (ENABLE SET NEW0 NEW1 NEW2) 0 0 ? ? ? => state0 (LAST); -- no action requested ? 1 0 0 0 => state0 (LAST); -- highest order: set to new entered values ? 1 0 0 1 => state1; ? 1 0 1 0 => state2; ? 1 0 1 1 => state3; ? 1 1 0 0 => state4; ? 1 1 0 1 => state5; ? 1 1 1 0 => state6; ? 1 1 1 1 => state7; 1 0 ? ? ? => state1; -- lowest order: enable - step up 1 endcase => ANY; state1: case (ENABLE SET NEW0 NEW1 NEW2) 0 0 ? ? ? => state1; -- no action requested ? 1 0 0 0 => state0 (LAST); -- highest order: set to new entered values ? 1 0 0 1 => state1; ? 1 0 1 0 => state2; ? 1 0 1 1 => state3; ? 1 1 0 0 => state4; ? 1 1 0 1 => state5; ? 1 1 1 0 => state6; ? 1 1 1 1 => state7; 1 0 ? ? ? => state2; -- lowest order: enable - step up 1 endcase => ANY; state2: case (ENABLE SET NEW0 NEW1 NEW2) 0 0 ? ? ? => state2; -- no action requested ? 1 0 0 0 => state0 (LAST); -- highest order: set to new entered values ? 1 0 0 1 => state1; ? 1 0 1 0 => state2; ? 1 0 1 1 => state3; ? 1 1 0 0 => state4; ? 1 1 0 1 => state5; ? 1 1 1 0 => state6; ? 1 1 1 1 => state7; 1 0 ? ? ? => state3; -- lowest order: enable - step up 1 endcase => ANY; state3: case (ENABLE SET NEW0 NEW1 NEW2) 0 0 ? ? ? => state3; -- no action requested ? 1 0 0 0 => state0 (LAST); -- highest order: set to new entered values ? 1 0 0 1 => state1; ? 1 0 1 0 => state2; ? 1 0 1 1 => state3; ? 1 1 0 0 => state4; ? 1 1 0 1 => state5; ? 1 1 1 0 => state6; ? 1 1 1 1 => state7; 1 0 ? ? ? => state4; -- lowest order: enable - step up 1 endcase => ANY; state4: case (ENABLE SET NEW0 NEW1 NEW2) 0 0 ? ? ? => state4; -- no action requested ? 1 0 0 0 => state0 (LAST); -- highest order: set to new entered values ? 1 0 0 1 => state1; ? 1 0 1 0 => state2; ? 1 0 1 1 => state3; ? 1 1 0 0 => state4; ? 1 1 0 1 => state5; ? 1 1 1 0 => state6; ? 1 1 1 1 => state7; 1 0 ? ? ? => state5; -- lowest order: enable - step up 1 endcase => ANY; state5: case (ENABLE SET NEW0 NEW1 NEW2) 0 0 ? ? ? => state5; -- no action requested ? 1 0 0 0 => state0 (LAST); -- highest order: set to new entered values ? 1 0 0 1 => state1; ? 1 0 1 0 => state2; ? 1 0 1 1 => state3; ? 1 1 0 0 => state4; ? 1 1 0 1 => state5; ? 1 1 1 0 => state6; ? 1 1 1 1 => state7; 1 0 ? ? ? => state6; -- lowest order: enable - step up 1 endcase => ANY; state6: case (ENABLE SET NEW0 NEW1 NEW2) 0 0 ? ? ? => state6; -- no action requested ? 1 0 0 0 => state0 (LAST); -- highest order: set to new entered values ? 1 0 0 1 => state1; ? 1 0 1 0 => state2; ? 1 0 1 1 => state3; ? 1 1 0 0 => state4; ? 1 1 0 1 => state5; ? 1 1 1 0 => state6; ? 1 1 1 1 => state7; 1 0 ? ? ? => state7; -- lowest order: enable - step up 1 endcase => ANY; state7: case (ENABLE SET NEW0 NEW1 NEW2) 0 0 ? ? ? => state7; -- no action requested ? 1 0 0 0 => state0 (LAST); -- highest order: set to new entered values ? 1 0 0 1 => state1; ? 1 0 1 0 => state2; ? 1 0 1 1 => state3; ? 1 1 0 0 => state4; ? 1 1 0 1 => state5; ? 1 1 1 0 => state6; ? 1 1 1 1 => state7; 1 0 ? ? ? => state0 (LAST); -- lowest order: enable - step up 1 endcase => ANY;