=> Ich schon...Es dürfte also eher unwahrscheinlich sein, das sich jemand das zu Hobbyzwecken anschafft.
Hallo zusammen,
ich möchte mal das Bild von FPGAs korrigieren. Wie gesagt bastel ich aktuell mit einem FPGA. Und das liegt nicht daran, dass ich bereit bin einen Vierstelligen Betrag für so ein Board und nochmal so viel für die Software auszugeben. Sondern es handelt sich tatsächlich um Bastelware für Jedermann (wenn auch nicht ganz sooooo günstig wie Arduinos oder RPis). Hier mal der Weg, den ich gegangen bin:
1. Xess (http://www.xess.com/):
Extrem gute Aufbereitung von Hardware und Tutorials. Ich hatte mir mal ein XuLA2-Board gegönnt, für sowas wie 120$ (glaub ich). Darauf war ein Spartan 6 (XC6SLX9). Nach aktuellem Stand würde ich sagen, dass man damit schon sehr viel machen kann - auch wenn man effektiv nur ca. 30 von 100 Pins des FPGAs nutzen kann (bzw. ein paar werden noch für die on-board Speicher verwendet). Aber für ein paar Motoren und Sensoren reicht das ja häufig. Und: Steckbretttauglich!
Dicker Pluspunkt: Super Dokumentation und damit toller Einstieg in die VHDL-Programmierung.
Dicker Minuspunkt: Mittlerweile kann man dort keine FPGA-Boards mehr erwerben.
Aktuell komm ich mit meinem noch völlig zurecht. Sollte ich mir mal was neues anschaffen müssen, wäre wohl
2. Trenz-Elektronik (https://shop.trenz-electronic.de/de/...nz-Electronic/) meine nächste Anlaufstelle. Die haben nicht nur vergleichbare Steckbrett-geeignete erschwingliche Boards, sondern auch die deluxeren Ausführungen mit dick RAM, den dickeren FPGAs (Kintex, Virtex und die krassen Ultrascale und besser - für den Fall, dass doch mal das eine oder andere Projekt ausartet) und man kann dort auch alle Pins des FPGA nutzen. Inwiefern man auf deren Boards auch die Tutorials von Xess umsetzen kann wäre mal eine interessante Frage. Sollte das jemand ausprobieren: bitte Bescheid geben!
Thema Software:
Ja, sie kostet viel. Aber: man braucht sie nicht. Es handelt sich um die kommerziellen Versionen, mit Super-Duper-Analyzing-Tools, bei denen man exzessive Timinganalysen und irgendwas machen kann. Braucht der Bastler nicht. Stichwort heißt: WebPack. Registrieren, frei herunterladen, Plug-and-Play-Installation. Ich hatte zumindest keine Probleme.
Wer mit einem Spartan 6, 3 (siehe z.B. c't Lab FPGA-Modul) oder älter anfangen möchte, benötigt das ISE WebPack 14.7. Das läuft zwar standardmäßig nicht mehr auf Win7 oder neuer. Aber wo ein Problem, da eine Lösung:
http://jacobpaulshaffer.com/Getting_..._on_Windows_10
Wer auf Spartan 7 und neuer aufspringt, sollte das Vivado Webpack nutzen können. Das habe ich selber aber noch nicht ausprobiert. Berichte dazu sind hier natürlich auch erwünscht.
Das Webpack bietet ausreichend Funktionen: Man kann nicht nur programmieren und kompilieren (Yeah!), sondern auch Simulationen und Floor-Planning durchführen.
Warum sollte man das jetzt auch noch tun und von PIC & Co weggehen? Achtung: es folgt Propaganda!
Geschwindigkeit und Flexibilität!
Geschwindigkeit: rein hardwarebedingt gehen Rechenoperationen (v.a. multiplikationen) schneller (nur ein Taktzyklus) als bei µCs. Warum, das habe ich nicht durchschaut, nur, dass es so ist.
Wenn da ein 12MHz-Quarz dranhängt (wie bei meinem XuLA2), heißt es nicht, dass ich auf 12MHz arbeiten muss. FPGA-intern kann man auf 300MHz (bei Spartan 6) hochskalieren - die neueren vertragen wohl auch 500MHz. Führt man nicht nur bei steigenden Flanken Operationen durch, sondern auch bei fallenden Flanken, ist man bei 1GHz. Oder man lässt es ohne Taktbezug durchlaufen - das ist am schnellsten, aber ob man es je mit anderen Prozessen wieder synchronisiert bekommt, ist die große Frage.
Außerdem (und das mag ich am meisten): Parallelisierung. Jeder Prozess, den man sich zusammenprogrammiert, arbeitet parallel zu allen anderen Prozessen. Ich kann also mit 12Mhz eine LED blinken lassen und parallel dazu irgendwelche komplexen Berechnungen durchführen. Egal wie und um was ich meinen Code erweitere, hat es keinen Einfluss auf das Timing bereits existierender Prozesse. Auch Subfunktionen, die N mal durchlaufen müssen kann ich parallel arbeiten lassen und erhalte das Ergebnis in der gleichen Durchlaufzeit, wie für einen einzigen Durchlauf benötigt wird.
Allerdings ist die interne "Verschaltung" der Prozesse etwas mühseliger. Da braucht man dann etwas mehr Aufwand, um da den Überblick nicht zu verlieren.
Und auch ganz nett: ich benötige eine Variable mit 4bit länge: ich definiere sie mir. Variable mit 35bit Länge: kein Problem...
Ich selber stehe da gewiss auch noch am Anfang von VHDL und FPGAs insgesamt. Aber mir macht es erheblich mehr Spaß, als eine µC-Programmierung und kann es deshalb nur jedem empfehlen.
Am Ende meiner aktuellen Bastelarbeit steht auch ein Machine Learning auf dem FPGA an. Allerdings muss ich dazu erstmal noch ein paar andere ToDos durchlaufen, ehe ich mich darum kümmern kann. Vielleicht kann ich dazu in einem oder zwei Jahren mal was schreiben.
In diesem Sinne!
Grüß, NRicola
Lesezeichen