home *** CD-ROM | disk | FTP | other *** search
- module _cnt10rom flag '-D82'
- title 'decimal Up/Down counter in PROM
- Dave Pellerin FutureNet - Data I/O Jan 1986'
-
- cnt10rom device 'RA10R8';
-
- "The RA10R8 is a subset of the MMI 63RS881, the registers are not implemented.
-
- Clr,Dir,OE pin 3,4,19;
- I3,I2,I1,I0 pin 5,6,7,8;
- Q3,Q2,Q1,Q0 pin 13,11,10,9 ;
-
- " Inputs I3..I0 are the external feedback from registers Q3..Q0.
-
- Input = [I3,I2,I1,I0];
- Output = [Q3,Q2,Q1,Q0];
-
- X,Z = .X., .Z.;
-
- " Counter States
- S0 = 0; S1 = 1; S2 = 2; S3 = 3; S4 = 4;
- S5 = 5; S6 = 6; S7 = 7; S8 = 8; S9 = 9;
-
- " Counter modes
- Mode = [Clr,Dir];
- Up = [ 1 , 1 ];
- Down = [ 1 , 0 ];
- Clear = [ 0 , X ];
-
- " This FUSES section will set the initialization words to force
- " the device to power up in state S9. A different value could
- " be used for each of the 16 words. Look at the expanded list
- " file (Parse option -E) to see how to create such a FUSES section.
-
- fuses @const a = 1024 * 8;
- @repeat 16 {
- [@expr a; .. @expr a + 7;] = S9; @const a = a + 8;}
-
- test_vectors ( [OE, Mode ,Input] -> Output)
- [ 0, Clear, X ] -> S0;
- [ 0, Up , S0 ] -> S1;
- [ 0, Up , S1 ] -> S2;
- [ 0, Up , S2 ] -> S3;
- [ 0, Up , S3 ] -> S4;
- [ 0, Up , S4 ] -> S5;
- [ 0, Up , S5 ] -> S6;
- [ 0, Up , S6 ] -> S7;
- [ 0, Up , S7 ] -> S8;
- [ 0, Up , S8 ] -> S9;
- [ 0, Up , S9 ] -> S0;
- [ 0, Up , S0 ] -> S1;
- [ 0, Down , S1 ] -> S0;
- [ 0, Down , S0 ] -> S9;
- [ 1, Down , S9 ] -> Z ;
- [ 0, Down , S8 ] -> S7;
- [ 0, Clear, X ] -> S0;
- @page
-
- state_diagram Input->Output
-
- State S0: case (Mode == Up) : S1;
- (Mode == Down) : S9;
- (Mode == Clear) : S0;
- endcase;
-
- State S1: case (Mode == Up) : S2;
- (Mode == Down) : S0;
- (Mode == Clear) : S0;
- endcase;
-
- State S2: case (Mode == Up) : S3;
- (Mode == Down) : S1;
- (Mode == Clear) : S0;
- endcase;
-
- State S3: case (Mode == Up) : S4;
- (Mode == Down) : S2;
- (Mode == Clear) : S0;
- endcase;
-
- State S4: case (Mode == Up) : S5;
- (Mode == Down) : S3;
- (Mode == Clear) : S0;
- endcase;
-
- State S5: case (Mode == Up) : S6;
- (Mode == Down) : S4;
- (Mode == Clear) : S0;
- endcase;
-
- State S6: case (Mode == Up) : S7;
- (Mode == Down) : S5;
- (Mode == Clear) : S0;
- endcase;
-
- State S7: case (Mode == Up) : S8;
- (Mode == Down) : S6;
- (Mode == Clear) : S0;
- endcase;
-
- State S8: case (Mode == Up) : S9;
- (Mode == Down) : S7;
- (Mode == Clear) : S0;
- endcase;
-
- State S9: case (Mode == Up) : S0;
- (Mode == Down) : S8;
- (Mode == Clear) : S0;
- endcase;
- end
-
-