Günstiges FPGA-Experimentierboard
Das Papilio One von GadgetFactory ist ein sehr preisgünstiges aber auch dünn bestücktes FPGA-Experimentierboard. Es misst nicht mehr als 70x70mm und trägt in seinem Herzen ein Spartan 3E-FPGA. Bestückt man die Platine selber, so passt der Footprint für die Modelle XC3S100E, XC3S250E und XC3S500E, bestellt man sie bestückt, hat man die Wahl zwischen dem XC3S250E und dem XC3S500E. Da dies meine erste FPGA-Erfahrung war, entschied ich mich für die günstigere 250k-Variante. Als besonders angenehm empfinde ich die 48 nach außen geführen GPIOs, die immer in 8er-Blöcken angeordnet sind, sodass ich bequem Pfostenbuchsen auflöten lassen. Zu jedem 8er-Block gehört außerdem noch ein 4er-Block mit 5V, 3,3V, 2,5V und GND, die über entsprechende Bausteine auf dem Board aus der Versorgungsspannung (via USB oder Buchse) erzeugt werden. Bestückt man nur die äußeren 32 IOs mit Pfostensteckern, kann man das Board zum Basteln sogar auf ein Breadboard stecken. Die IOs lassen sich übrigens bankweise mit Jumpern auf Betriebsspannungen von 1,2V, 2,5V oder 3,3V einstellen, die IOs sind nicht 5V-tolerant. Der Systemtakt von 32MHz wird über einen Oszillator erzeugt, aber über die DCMs des FPGAs lässt sich nahezu jede beliebige Taktfrequenz für Anwendung erzeugen.
Betrachtet man die zum Board gehörende Netzliste, mag
einem auffallen, dass es neben den GPIOs auch noch zwei Netze gibt, die mit rx und tx benannt sind. Diese führen direkt an
den sich ebenfalls auf dem Board befindlichen FTDI FT2232D-Chip, ein USB-Transceiver, der zwei UART-Ports zur Verfügung stellt, die auf der PC-Seite wie RS232-Schnittstellen aussehen.
Der eine UART-Kanal ist an die JTAG-Chain angeschlossen, sodass man auch ohne teure JTAG-Extrahardware debuggen und Programme aufspielen kann. Ebenfalls
an der Chain hängt übrigens auch der 2MBit SPI-Flash-Baustein, aus dem der FPGA-Chip zu Beginn sein Programm laden kann. Der zweite UART-Kanal
des FT2232D-Chips hängt währenddessen direkt an den eben besagten rx- und tx-Netzen. Der FTDI-Chip wird allerdings sehr IO-sparend eingesetzt, sodass man die Datenframes (z.B. ein Startbit, acht Datenbits, ein Stoppbit) mitsamt Timing selbst erzeugen muss.
Nun sind Sie gleich voller Eifer zur Tat geschritten, haben nach endlosen Synthese-, Simulator- und Place & Route-Sitzungen eine tadellose Konfiguration erzeugt und
müssen feststellen, dass es die Binaries für die Programmiersoftware nur für Das Böse Betriebssystem™ gibt. Glücklicherweise hat Jack Gasset, der (Haupt-)Entwickler,
seine unglaublich unübersichtliche Software- und Quellcodebibliothek auf github verlegt, sodass wir uns mit einem einfachen
git clone git://github.com/GadgetFactory/Papilio-Loader.git die aktuellen Quellen des Loaders besorgen können. Folgender Weise erzeugen wir uns die
benötigten Binaries:
cd Papilio-Loader/Program ./autogen.sh ./configure make
Dazu musste ich, seitens build-essential auch noch die Pakete automake und libftdi-dev installieren. Das Verzeichnis enthielt, wie erwartet, das Programmierwerkzeug papilio-prog.
Mit einem geeigneten Entwicklungstool, wie z.B. Xilinx ISE, kann dann via Synthese, Mapping und Place\&Route eine FPGA-Konfigurationsdatei erzeugt werden, die Sie folgenderweise auf den Chip laden können:
./butterflyprog -f konfiguration.bit
Der FPGA legt sofort los. Wie man genau den Flash-Speicher anspricht, um die Konfiguration zu erhalten, ist mir noch nicht klar und werde ich zu gegebener Zeit hier nachtragen.