-
Notifications
You must be signed in to change notification settings - Fork 0
/
OpenHDL.txt
134 lines (90 loc) · 1.71 KB
/
OpenHDL.txt
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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
Attributes:
C like bit manipulation syntax (&|^~)
CPP macros - why not just use the actual C preprocesor
pin blocks?
generates:
jedec files (for GALs)
bin files (for EEPROMs)
datasheet (simple ascii art pin diagram for reference with other compilation notes)
Supported devices:
EEPROMs (simple combinitorial logic only, or use external feedback)
28C___
GALs
16V8 (particularly ATF16V8B)
20V8 (particularly ATF20V8B)
22V10 (possibly ATF22V10C)
CPLDs
ATF750C??
ATF2500C??
FPGAs
??
output <symbol> [<pin>]
input <symbol> [<pin>]
signal <symbol>
feedback <symbol> (Breaks recursive loops, each recusive definition must have one feedback, can a compolier determine minimum number of feedbacks)
A = B
A is connected to B, if A is a output
otherwise
A is an alias for (B).
F(X, Y) = A | B;
A = B | C
A
Q = ~(S & Q_B);
Q_B = ~(R & Q);
NOT
NOT(A)
~A
-A
/A
!A
AND
AND(A,B)
A & B
A && B
A * B
(A)(B)
OR
OR(A,B)
A | B
A || B
A + B
XOR
XOR(A,B)
A^B
(A&~B)|(~A&B)
A == 0
NOT(A)
A == 1
(A)
A != 0
(A)
A != 1
(A)
A == B
~(XOR(A,B))
(A&B)|(~A&~B)
A != B
XOR(A,B)
Equations -> {Compile} -> simplified_equation -> fuses
Compile
[Eval Equation -> Truth table]
No removal of redundancy
Only works if there are no more than 8 true or false states.
[Eval Equation -> Multi-dimensional K-map (16 dimensions for ATF16V8)]
[Boolean Algebra based simplifier]
~(A&B)=~A|~B
~(A|B)=~A&~B
0=A&~A
1=A|~A
A=1&A
A=0&A
0=0&A
1=1|A
A=~~A
<SIMPLE_EQ> := <OUT_SYMBOL> '=' <SUM> ';'
<SUM> := <PROD> | <SUM> '|' <PROD>
<PROD> := <TERM> | <PROD> '&' <TERM>
<TERM> := <IN_SYMBOL> | '~' <IN_SYMBOL>
More logic circuits
5 Bit Adder with carry in and out.
4 Bit multiplier (4x4=>8)