Einstieg in Xilinx FPGA/CPLDs dank Reset Glitch

(2012 – Update 18.01.2012)
Leichter und günstiger Einstieg in Xilinx FPGA/CPLDs dank XBox Reset Glitch.

CPLD im Test, Blick von oben
CPLD im Test, Blick von oben

Seit einiger Zeit gibt es günstige CPLD-Kits in DIL-Bauform bei eBay. Diese beherbergen einen superschnellen CPLD der aktuellen Generation (CoolRunner II) von Xilinx mit 64 Makrozellen. Damit lässt sich was anfangen. Die Software ist kostenlos und den Programmieradapter kann man leicht selbst bauen oder günstig als Parallelport oder USB-Variante kaufen.

Ich habe mich immer für programmierbare Logikschaltungen in Form von CPLDs oder FPGAs interessiert, doch die Programmiergeräte waren immer vergleichsweise teuer und die ICs nur in SMD-Bauform zu haben, diese lassen sich nur einmal verlöten und nicht wiederverwerten. Alternativ gab es zwar diverse Evaluationskits, aber die kann man ja schlecht in andere Schaltungen einbauen. Toll ist daher der Glitch, da man ihn sockeln kann.

Woher diese Kits kommen ist schnell geklärt, denn die XBox lässt sich aktuell nur mit einem CPLD hacken. Diesen gibt es fix und fertig aufgebaut als „XBOX Reset Glitch“. Das Layout ist bekannt und es gibt viele Distributoren dafür. Die Teile sehen zwar manchmal anders aus, aber praktisch alle in DIL-Form haben das selbe PinOut.

Die Eckdaten des XBox Reset Glitches

  • Fertig verlöteter SMD-IC (Coolrunner-II XC2C64A CPLD, 64 Makrozellen)
  • DIL-Bauform, alle Pins zugänglich, leicht in Layouts zu integrieren
  • Stromversorgung für den Core onboard (1,8V Linearregler)
  • Programmierpins extra herausgeführt
  • Die Ein/Ausgänge können maximal 3,3V !
  • <5ns Gatterdurchlaufzeit

Ich habe damals 13€ inkl. Versand bei einem Händler aus Deutschland bezahlt. Vorsicht, es gibt auch unseriöse Anbieter, die das ganze überteuert verkaufen (>99€).

Software und Programmierhardware

Die Software zur Programmierung der Xilinx CPLDs ist kostenlos (Xilinx ISE Webpack) und funktioniert auch direkt mit den günstigen Programmieradaptern am Parallelport.
Wer keinen Parallelport hat, kann sich ein „Xilinx Platform Cable USB“ kaufen oder 100%-kompatibel nachbauen. Da das recht einfach ist, gibt es auch bei eBay verdächtig günstige USB- und Parallelport-Programmieradapter aus Fernost.

Was kann man damit anfangen?

  • Ein schnelles 8Bit-Filter, welches bis zu 7 vergangene Werte berücksichtigen kann
  • Zusätzliches I/Os an einem Mikrokontroller (direkt per SPI als Schieberegister)
  • Zusätzliche I/Os am Mikrocontroller per I²C (Beispiele von Xilinx verfügbar)
  • Prinzipiell alle möglichen Digitalschaltungen die maximal 64 FlipFlops brauchen. (Als Schätzwert für die Anzahl benötigter Makrozellen kann man eine Makrozelle je FF rechnen).

Ich habe bisher nur ein bisschen damit herum experimentiert um zu sehen ob man ihn wirklich mit 200MHz beschicken kann.
Aktuell benutze ich ihn als I/O-Expander am AVR. Das geht ganz einfach in Form eines Schieberegisters an der SPI-Schnittstelle. Die Ausgangswerte werden in den CPLD reingetaktet und gleichzeitig liefert dieser am Taktausgang seine Eingangswerte. Übernahme erfolgt auf die steigende/fallende Flanke an einem CE-Pin.

Ein Beispiel auf dem Breadboard

Was die „Hallo Welt“ Ausgabe bei Programmiersprachen am PC ist, kommt bei Microcontrollern, FPGAs und CPLDs als Blinklicht daher. Um den CPLD in Form des Reset Glitches zum Leben zu erwecken, braucht es ein kleines Programm, eine Spannungsversorgung, eine oder mehrere LEDs und ich verwende noch einen kleinen Taktgenerator. Bilder sind in der Gallerie

Als Testprogramm nehme ich einen Taktteiler, der einen Systemtakt an einem Pin entgegen nimmt, herunter teilt und an LEDs anzeigt.

Die Spannungsversorgung muss stabilisierte 3,3V Gleichspannung liefern. Hierfür muss ein LF33CV („LF 33 CV“ bei Reichelt) herhalten. Er ist pinkompatibel zu den bekannten 78xx-Bausteinen und braucht ebenfalls am Ein- und Ausgang mindestens 100nF. Es handelt sich um einen LoDrop-Regler (~1..1,5V) und es gibt ihn auch in einer 5V-Variante (LF50CV).

An den Ausgängen habe ich low-current LEDs (leuchten ab 2mA) als LO-active über einen 330Ohm-Widerstand angeschlossen: Ein LED-Anode auf 3,3V und Kathode über den Widerstand an den Ausgangspin des CPLD.  Die LEDs leuchten bei LO-Pegel am IC-Pin.

Der Takt wird über eine schnelle und sehr „dreckige“ Schlaltung erzeugt. Einfach drei Gatter eines 74er Inverters hintereinander geschaltet. Mein Oszilloskop hört leider bei 20MHz auf, aber wenn ich die Blinkfrequenz hinter den Teilern zurückrechne, komme ich auf eine Oszillatorfrequenz von etwa 50MHz.


Links

*folgt noch (TODO)

Bilder

DIL-Belegungsplan*

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *