home *** CD-ROM | disk | FTP | other *** search
- module traffic
- flag '-r2','-ky' "Use PRESTO and leave unused OR fuses connected"
- title 'Traffic Signal Controller Data I/O Corp 29 Dec 1985'
-
- TSC device 'F82S167';
-
- Clk,SenA,SenB pin 1, 8, 7;
- PR pin 16; "Preset control
- F3,F2,F1,F0 pin 13,11,10,9;
- P1,P0 pin 15,14;
-
- P7,P6,P5,P4 node 31,32,33,34; " Internal state counter
-
- H,L,Ck,X = 1, 0, .C., .X.;
-
- Count = [P7,P6,P5,P4];
-
- "Define Set and Reset inputs to traffic light flip flops
- GreenA = [P1,P1.R];
- YellowA = [P0,P0.R];
- RedA = [F3,F3.R];
- GreenB = [F2,F2.R];
- YellowB = [F1,F1.R];
- RedB = [F0,F0.R];
- On = [ 1, 0 ];
- Off = [ 0, 1 ];
-
- equations
- enable F0 = 1; "always enabled, pin 16 is preset
-
- @page
- state_diagram Count
-
- State 0: case SenA & !SenB : 0;
- !SenA & SenB : 4;
- (SenA == SenB) : 1;
- endcase;
-
- State 1: goto 2;
- State 2: goto 3;
- State 3: goto 4;
-
- State 4: GreenA := Off;
- YellowA := On ;
- goto 5;
-
- State 5: YellowA := Off;
- RedA := On ;
- RedB := Off;
- GreenB := On ;
- goto 8;
-
- State 6: goto 15; "Unused state
- State 7: goto 15;
-
- State 8: case !SenA & SenB : 8;
- SenA & !SenB : 12;
- (SenA == SenB) : 9;
- endcase;
-
- State 9: goto 10;
- State 10: goto 11;
- State 11: goto 12;
-
- State 12: GreenB := Off;
- YellowB := On ;
- goto 13;
-
- State 13: YellowB := Off;
- RedB := On ;
- RedA := Off;
- GreenA := On ;
- goto 0;
-
- State 14: goto 15; "Unused state
- State 15: GreenA := On ; "Power on initilize state
- YellowA := Off;
- RedA := Off;
- GreenB := Off;
- YellowB := Off;
- RedB := On ;
- goto 0;
- @page
- " State Graph for Traffic Signal Controller
- "
- " SenA&!SenB
- "
- " ---------------------->S0 GrnA/RedB----! SenA==SenB
- " ! ! v
- " S13 RedA/YelB ! S1 GrnA/RedB
- " ^ <------------- ! !
- " ! ! ! !
- " ! ! ! v
- " S12 RedA/GrnB ! ! S2 GrnA/RedB
- " ^ ! ! !
- " ! ! ! !
- " ! ! ! v
- " S11 RedA/GrnB ! ! S3 GrnA/RedB
- " ^ ! ! !
- " ! ! ! !
- " ! ! ! v
- " S10 RedA/GrnB ! ! S4 GrnA/RedB
- " ^ ! ! !SenA&SenB !
- " ! ! ! !
- " ! ! !--------------> v
- " S9 RedA/GrnB ! S5 YelA/RedB
- " ^ ! SenA&!SenB !
- " ! SenA==SenB ! !
- " !------------- S8 RedA/GrnB <----------
- "
- " !SenA&SenB
- "
- "
-
- test_vectors " GreenA,YellowA,RedA,GreenB,YellowB,RedB
- ([Clk,PR,SenA,SenB] -> [Count, P1 , P0 , F3 , F2 , F1 , F0 ])
- [ Ck, 0, 1 , 0 ] -> [ X , X , X , X , X , X , X ];
- [ Ck, 0, 1 , 0 ] -> [ 0 , H , L , L , L , L , H ];
- [ Ck, 0, 1 , 0 ] -> [ 0 , H , L , L , L , L , H ];
- [ Ck, 0, 1 , 1 ] -> [ 1 , H , L , L , L , L , H ];
- [ Ck, 0, 1 , 1 ] -> [ 2 , H , L , L , L , L , H ];
- [ Ck, 0, 1 , 1 ] -> [ 3 , H , L , L , L , L , H ];
- [ Ck, 0, 1 , 1 ] -> [ 4 , H , L , L , L , L , H ];
- [ Ck, 0, 1 , 1 ] -> [ 5 , L , H , L , L , L , H ];
- [ Ck, 0, 1 , 0 ] -> [ 8 , L , L , H , H , L , L ];
- [ Ck, 0, 1 , 0 ] -> [ 12 , L , L , H , H , L , L ];
- [ Ck, 0, 1 , 0 ] -> [ 13 , L , L , H , L , H , L ];
- [ Ck, 0, 1 , 0 ] -> [ 0 , H , L , L , L , L , H ];
- [ Ck, 0, 1 , 0 ] -> [ 0 , H , L , L , L , L , H ];
- [ Ck, 0, 1 , 1 ] -> [ 1 , H , L , L , L , L , H ];
- [ Ck, 0, 1 , 1 ] -> [ 2 , H , L , L , L , L , H ];
- [ Ck, 0, 1 , 1 ] -> [ 3 , H , L , L , L , L , H ];
-
- test_vectors 'This Preset method works with ABEL and LogicPak'
- " GreenA,YellowA,RedA,GreenB,YellowB,RedB
- ([Clk,PR,SenA,SenB] -> [Count, P1 , P0 , F3 , F2 , F1 , F0 ])
- [ 1 , 1, 1 , 1 ] -> [ 15 , X , X , X , X , X , X ];
- [ 1 , 0, 1 , 1 ] -> [ 15 , X , X , X , X , X , X ];
- [ Ck, 0, 1 , 0 ] -> [ 0 , H , L , L , L , L , H ];
-
- end traffic
-
-