Dave - Thanks for your encouragement! I did message guzunty, and he answered, as you can see
. Making xsvf files on a VMWare PC is possible at first, but it would be pretty awesome to do it all in my pocket. Given that I have Bochs emulating a Win98 system on my jailbroken iPhone, perhaps I could use an old version of Xilinx ISE, as slow as that may be.
guzunty - I knew you'd be a huge help! I'm looking forward to building this and joining the GuzuntyPi community with some new core ideas when it's ready. This is a much cheaper, more portable, and more user-friendly solution than the Windows XP+$250 Xilinx programmer+parallel cable setup I used in UCSB. Developing new cores is a very valuable industrial skill - people might be tempted by headhunters to drop out of high school for top-tier electronic engineering jobs if this takes off!
The Guzunty BOM wasn't on the Wiki as such, but I read it from the schematic as follows:
47k Resistors x3
3u3 Capacitors x2
0u1 Capacitors x3
I don't have a "parts box" per se, because I've been doing short-term internships in several different countries and the whole setup from my dad's workshop doesn't fit in my rucksack. However, the office workshop here in Shenzhen does have a near-limitless supply of broken MP3 players. I also found a power supply in there with some nice through-hole resistors today, so I'll have a look for some 47k ones. I'm hopeful I'll be able to salvage something. I found a spare 44-pin PLCC socket in there today, so things are looking good.
This does seem to be all-or-nothing, but you've done well to reassure me that it's easier than I feared. The PCB company I have friends in have a minimum order of 500 pieces, but I'm only trying to make 2 (one for me to use, one spare for when it breaks). If there are any Guzunty PCBs still on this side of the world, that would make the wiring much easier! Otherwise it's going to be a dead bug.
• Are there any PCBs near to Shenzhen, that I could get by visiting a store/factory?
I exhaustively checked the pinouts for the XC9536XL (mine) and XC9572XL (Guzunty), and made a list of the changes. Everything that's the same has an = sign in the first column. I saw something http://bitcycle.org/electronics/1st_CPLD_project/
that said the PLCC and VQ44 packaging pins are just offset, and that seems to be the case. I also read that the pin numbers start in the middle of a row for PLCC.
• Does that mean the VQ44 would actually fit the GuzuntyPi PCB if I could get my hands on one?
All the JTAG and power pins are the same, thankfully! I believe this means that programming it using gz_load will be a breeze.
• What changes will I need to make, if any, to compensate for the differences in the function blocks? I only have 2 function blocks in the same number of pins, as you can see. That's a problem for the future though, once my hardware is built.
• I may be just getting confused, but the Xilinx JTAG programming docs say that it's quite clock-sensitive. I also read that the Raspberry Pi doesn't have a real-time clock. I believe the GuzuntyPi works, but how did you manage it without an oscillator?
• Is it possible to backup the code that's already on the CPLD? I'm pretty sure I won't need to restore the PCI card I'm salvaging the chip from, but I'm curious about reverse-engineering it.
Guzunty PLCC VQ44 XC9536XL VQ44
1 FB1MC2 39 39 FB2MC1
2 FB1MC5 40 40 FB1MC1
3 FB1MC6 41 41 FB1MC2
4 FB1MC8 42 42 FB1MC4
= 5 GCK1=FB1MC9 43 43 GCK1=FB1MC3
= 6 GCK2=FB1MC11 44 44 GCK2=FB1MC5
= 7 GCK3=FB1MC14 1 1 GCK3=FB1MC7
8 FB1MC15 2 2 FB1MC6
9 FB1MC17 3 3 FB1MC8
= 10 GND 4 4 GND
11 FB3MC2 5 5 FB1MC9
12 FB3MC5 6 6 FB1MC10
13 FB3MC8 7 7 FB1MC11
14 FB3MC9 8 8 FB1MC12
= 15 JTAG_TDI 9 9 JTAG_TDI
= 16 JTAG_TMS 10 10 JTAG_TMS
= 17 JTAG_TCK 11 11 JTAG_TCK
18 FB3MC11 12 12 FB1MC13
19 FB3MC14 13 13 FB1MC14
20 FB3MC15 14 14 FB1MC15
= 21 VCC 15 15 VCC
22 FB3MC17 16 16 FB1MC16
= 23 GND 17 17 GND
24 FB3MC16 18 18 FB1MC17
25 FB4MC2 19 19 FB2MC17
26 FB4MC5 20 20 FB2MC16
27 FB4MC8 21 21 FB2MC15
28 FB4MC11 22 22 FB2MC14
29 FB4MC14 23 23 FB2MC13
= 30 JTAG_TDO 24 24 JTAG_TDO
= 31 GND 25 25 GND
= 32 VCCIO 26 26 VCCIO
33 FB4MC15 27 27 FB2MC12
34 FB4MC17 28 28 FB2MC11
35 FB2MC2 29 29 FB2MC10
36 FB2MC5 30 30 FB2MC9
37 FB2MC6 31 31 FB2MC8
38 FB2MC8 32 32 FB2MC7
= 39 GSR=FB2MC9 33 33 GSR=FB2MC6
= 40 GTS2=FB2MC11 34 34 GTS2=FB2MC5
= 41 VCC 35 35 VCC
= 42 GTS1=FB2MC14 36 36 GTS1=FB2MC3
43 FB2MC15 37 37 FB2MC4
44 FB2MC17 38 38 FB2MC2