Skip to content

Commit 2e22ef0

Browse files
committedMay 21, 2017
Added initial CoolRunner-II bitstream notes (from new RE + legacy crowbar code)
1 parent 7cfbfd9 commit 2e22ef0

File tree

1 file changed

+167
-0
lines changed

1 file changed

+167
-0
lines changed
 

‎doc/xbr/notes.txt

+167
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,167 @@
1+
========================================================================================================================
2+
XC2C32A (JED file bit ordering)
3+
========================================================================================================================
4+
5+
CONVENTIONS
6+
-------------------------
7+
Leftmost bit in a row is MSB (N), rightmost is LSB (0)
8+
9+
ZIA
10+
-------------------------
11+
320 bits starting at fuse # 0 (FB0), 6128 (FB1)
12+
40 rows, 8 bits per row
13+
Each row is an 8:1 one-hot mux. Inputs are active-low except for bit 7, which is active high.
14+
This is done so that the all-ones reset state is a constant, low-power value.
15+
7 Constant 1 (active HIGH)
16+
6 Constant 0
17+
5:0 Six inputs chosen from the six 11-bit muxes on metal 4
18+
19+
PLA AND
20+
-------------------------
21+
22+
4480 bits starting at fuse # 320 (FB0), 6448 (FB1)
23+
56 rows, 80 bits per row
24+
Each row configures inputs to an 80-input AND gate. 0 selects the signal, 1 selects a constant one.
25+
Each column corresponds to one ZIA output.
26+
27+
TODO discuss bit ordering
28+
29+
PLA OR
30+
-------------------------
31+
896 bits starting at fuse # 4800 (FB0), 10928 (FB1)
32+
56 rows, 16 bits per row
33+
Each column configures inputs to a 16-input OR gate. 0 selects the signal, 1 selects a constant zero.
34+
Each row corresponds to one product term.
35+
36+
TODO discuss bit ordering
37+
38+
Macrocells
39+
-------------------------
40+
432 bits starting at fuse # 5696 (FB0), 11824 (FB2)
41+
16 rows, 27 bits per row
42+
26 Selects input to the "11" clock source mux
43+
0 = Product Term Clock
44+
1 = Control Term Clock
45+
25 1 if FF is falling edge triggered, 0 if rising
46+
24:23 Clock source for the FF
47+
00 = GCK0
48+
01 = GCK1
49+
10 = GCK2
50+
11 = Product Term C or Control Term Clock
51+
22 1 if FF is DDR clocked, 0 if SDR
52+
21:20 Reset source for the FF
53+
00 = Product Term A
54+
01 = Global Set/Reset
55+
10 = Control Term Reset
56+
11 = disabled
57+
19:18 Set source for the FF
58+
00 = Product Term A
59+
01 = Global Set/Reset
60+
10 = Control Term Set
61+
11 = disabled
62+
17:16 Flipflop mode
63+
00 = D flipflop
64+
01 = latch
65+
10 = T flipflop
66+
11 = D flipflop with clock enable
67+
15:14 Input mux of some sort
68+
00 = input to ZIA
69+
11 = unused input
70+
Other values unknown
71+
13:12 "FB val" - no idea what this is yet
72+
11 Selects input to the flipflop
73+
0 = input buffer
74+
1 = XOR gate from PLA
75+
10 Schmitt trigger enable
76+
0 = normal
77+
1 = Schmitt trigger
78+
9:8 XOR gate input mux
79+
00 = Constant zero (pass-through of OR array)
80+
01 = Complement of product term C
81+
10 = Product term C
82+
11 = Constant one (invert output of OR array)
83+
7 Output buffer input source
84+
0 = Flipflop
85+
1 = XOR gate output
86+
6:3 Output enable / mode
87+
0000 Push-pull output
88+
0001 Open-drain output
89+
1000 Tri-state output
90+
1110 CGND (drive constant zero to reduce ground bounce?)
91+
1111 Floating (used for inputs)
92+
Other values unknown
93+
2 Termination mode
94+
0 = Float
95+
1 = Pullup / bus keeper active
96+
1 Slew rate
97+
0 = fast
98+
1 = slow
99+
0 Power-up state of flipflop (inverted)
100+
0 = initialize to 1
101+
1 = initialize to 0
102+
103+
Global clock mux
104+
-------------------------
105+
3 bits starting at fuse # 12256
106+
0 = not used
107+
1 = used
108+
2 GCK0
109+
1 GCK1
110+
0 GCK2
111+
112+
Global set/reset mux
113+
-------------------------
114+
2 bits starting at fuse # 12259
115+
Most likely one controls GS and one GR but not yet known which is which
116+
117+
Global OE mux
118+
-------------------------
119+
8 bits starting at fuse # 12261
120+
Unknown functionality, but related to I/O cells somehow
121+
122+
Global termination mode
123+
-------------------------
124+
Fuse # 12269
125+
0 Bus hold
126+
1 Pull-up
127+
128+
Legacy I/O standard config (for XC2C32A bitstream compatibility)
129+
-------------------------
130+
2 bits starting at fuse # 12270
131+
1 Output voltage
132+
0 Input voltage
133+
Both are always 1 in XC2C32A bitstreams. Seems like they're probably ORed with bank I/O config?
134+
135+
Dedicated input mode
136+
-------------------------
137+
2 bits starting at fuse # 12272
138+
Unknown functionality, but related to the input-only pin (not on a macrocell)
139+
140+
Per-bank I/O standard config
141+
-------------------------
142+
4 bits starting at fuse # 12274
143+
3 Bank 0 input voltage
144+
2 Bank 0 output voltage
145+
1 Bank 1 input voltage
146+
0 Bank 1 output voltage
147+
148+
Meaning of each bit:
149+
0 High voltage (LVTTL, LVCMOS33, or LVCMOS25)
150+
1 Low voltage (LVCMOS18 or LVCMOS15)
151+
152+
It's unclear why there's separate values for input and output; so far it appears they always have the same value.
153+
154+
Special product terms
155+
-------------------------
156+
157+
Some product terms have special functionality beyond their use as general logic.
158+
159+
All product term and function block indexes are zero based.
160+
161+
Control term set: 6
162+
Control term reset: 5
163+
Control term clock: 4
164+
Control term enable: 7 (conjecture)
165+
Product term A: 3N + 8
166+
Product term B: 3N + 9 (conjecture)
167+
Product term C: 3N + 10

0 commit comments

Comments
 (0)
Please sign in to comment.