|
| 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