-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathturbo-cpu.pld
96 lines (81 loc) · 2.46 KB
/
turbo-cpu.pld
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
Name turbo-cpu ;
PartNo 00 ;
Date 15/12/2020 ;
Revision 01 ;
Designer Dean Netherton ;
Company Dino ;
Assembly None ;
Location Ignored ;
Device g22v10 ;
/************* INPUT PINS *********************/
PIN 1 = CLK;
PIN 2 = !M1;
PIN 3 = !RD;
PIN 4 = !IORQ;
PIN 5 = !MREQ;
//PIN 6 = NC;
PIN 7 = !MODE_FAST;
PIN 8 = !MODE_NORMAL;
PIN 9 = !RFSH;
//PIN 10 = NC;
//PIN 11 = NC;
PIN 12 = GND;
//PIN 13 = ;
/**************** OUTPUT PINS *********************/
//PIN 14 = NC;
PIN 15 = C3;
PIN 16 = C0;
PIN 17 = C1;
PIN 18 = C2;
PIN 19 = IORQ_SLOW_DOWN;
PIN 20 = !BRAKE;
PIN 21 = C4;
PIN 22 = C5;
//PIN 23 = NC;
PIN 24 = VCC;
field WAITCOUNT = [C0, C1, C2, C3, C4];
T00=WAITCOUNT:['b'00000];
T01=WAITCOUNT:['b'00001];
T02=WAITCOUNT:['b'00010];
T03=WAITCOUNT:['b'00011];
T04=WAITCOUNT:['b'00100];
T05=WAITCOUNT:['b'00101];
T06=WAITCOUNT:['b'00110];
T07=WAITCOUNT:['b'00111];
T08=WAITCOUNT:['b'01000];
T09=WAITCOUNT:['b'01001];
T10=WAITCOUNT:['b'01010];
T11=WAITCOUNT:['b'01011];
T12=WAITCOUNT:['b'01100];
T13=WAITCOUNT:['b'01101];
T14=WAITCOUNT:['b'01110];
T15=WAITCOUNT:['b'01111];
T16=WAITCOUNT:['b'10000];
T17=WAITCOUNT:['b'10001];
T18=WAITCOUNT:['b'10010];
T19=WAITCOUNT:['b'10011];
T20=WAITCOUNT:['b'10100];
T21=WAITCOUNT:['b'10101];
T22=WAITCOUNT:['b'10110];
T23=WAITCOUNT:['b'10111];
T24=WAITCOUNT:['b'11000];
T25=WAITCOUNT:['b'11001];
T26=WAITCOUNT:['b'11010];
T27=WAITCOUNT:['b'11011];
T28=WAITCOUNT:['b'11100];
T29=WAITCOUNT:['b'11101];
T30=WAITCOUNT:['b'11110];
T31=WAITCOUNT:['b'11111];
FINISHED=T31;
IORQ_SLOW_DOWN.D = (IORQ_SLOW_DOWN # IORQ) & !FINISHED;
BRAKE = MODE_NORMAL # IORQ_SLOW_DOWN # IORQ;
/* COUNTER INCREMENTS TO FINISHED, AFTER IORQ GOES INACTIVE */
C0.D = !IORQ & IORQ_SLOW_DOWN & (T10 # T12 # T14 # T16 # T18 # T20 # T22 # T24 # T26 # T28 # T30 # T31) #
IORQ_SLOW_DOWN & (T00 # T02 # T04 # T06 # T08);
C1.D = !IORQ & IORQ_SLOW_DOWN & (T09 # T10 # T13 # T14 # T17 # T18 # T21 # T22 # T25 # T26 # T29 # T30 # T31) #
IORQ_SLOW_DOWN & (T01 # T02 # T05 # T06);
C2.D = !IORQ & IORQ_SLOW_DOWN & (T11 # T12 # T13 # T14 # T19 # T20 # T21 # T22 # T27 # T28 # T29 # T30 # T31) #
IORQ_SLOW_DOWN & (T03 # T04 # T05 # T06);
C3.D = !IORQ & IORQ_SLOW_DOWN & (T09 # T10 # T11 # T12 # T13 # T14 # T23 # T24 # T25 # T26 # T27 # T28 # T29 # T30 # T31) #
IORQ_SLOW_DOWN & (T07 # T08);
C4.D = !IORQ & IORQ_SLOW_DOWN & (T15 # T16 # T17 # T18 # T19 # T20 # T21 # T22 # T23 # T24 # T25 # T26 # T27 # T28 # T29 # T30 # T31);