ROOT

Das Board ROOT verbindet den USB Bus des Steuer-PCs mit meinem Netzwerk.

Dieses Board ist der Ort, an dem die Action ist, d.h. die meiste Rechenleistung verbraten wird. Durch die Verwendung eines FPGAs (Field Programmable Gate Array) hat man ungeahnte Möglichkeiten, viele Dinge parallel ausführen zu lassen. Die Rechenleistung ist dabei durchaus mit einem kleinen PC vergleichbar, allerdings zu einem Bruchteil dessen Preises. Der eigentliche Steuer-PC wird durch das FPGA von vielen Aufgaben entlastet, die alle in Echtzeit ablaufen müssen.

Das soll jetzt hier kein Lehrgang in FPGA Design werden (da stecken Jahrzehnte Berufserfahrung dahinter). Ich beschreibe hier nur das Endergebnis.

Das FPGA (MAX10 Familie von Altera/Intel) ist auf einem Aufsteckmodul in der Größe einer Streichholzschachtel enthalten, dazu noch ein USB Interface, Taktgeber, Programm/Konfigurationsspeicher und Datenspeicher (SDRAM). Viele I/O-Pins des FPGA sind auf Steckerpins ähnlich einem alten DIP28-Sockel geführt. Das ganze wird unter dem Namen "MAX1000" verkauft. Früher mal bei ca 20€ kostet es heute leider schon mehr als das Doppelte (falls es gerade mal wieder lieferbar ist).

Dieses Aufsteckmodul ist auf einem Baseboard (ROOT) montiert, das auch noch ein AC/DC-Netzteil für 5V enthält, sowie Treiber für die 6 COMBUS MBNET-Abgänge.

ROOT Board

FPGA Board

Auf diesem Bild sieht man noch ein Relais, das den AC/DC-Wandler einschaltet. Das habe ich inzwischen wieder entfernt, und die Kontakte kurzgeschlossen. Grund: Auf dem MAX1000 ist ein Designfehler. Es gibt einen mit diskreten FETs realisierten Umschalter, der die interne Versorgung von USB auf einen externen Eingang (=AC/DC-Wandler) umschaltet. Wenn man aber das Relais wieder ausschaltet, dann gibt es einen kurzen Moment, in dem VCC zusammenbricht, bevor wieder auf USB-Versorgung gegangen wird. Und das interpretiert das FPGA als Reset-Befehl.

Eine Ebene weiter rein: was steckt im MAX1000?

FPGA Modul MAX1000

Zuerst mal das FPGA vom Typ Altera (zwischendurch mal von Intel aufgekauft, inzwischen wieder Altera) 10M08SAU169C8G. Dazu diverse Zusatzbauteile, ohne die das FPGA kaum was kann: ein Flash Memory zum Speichern seines Programms, ein SDRAM Memory für Anwenderdaten, ein Oszillator als Taktgeber, diverse Kontroll-LEDs und eine USB-Schnittstelle, die dem PC vorgaukelt, er hätte hier einen einfachen seriellen Port vor sich.

Und noch weiter: was steckt im FPGA?

Erstmal nur ein Haufen (knapp 8000) neutraler Register/Logikblöcke und Speicherblöcke (ca 378kbit). Nach dem Einschalten ist so ein FPGA erstmal zu nichts zu gebrauchen. Es muss zuerst aus dem externen FLASH Memory

Wie genau das FPGA programmiert wird, würde den Rahmen dieser Website absolut sprengen. Wer die Source Files für das Altera Quartus (c) Entwicklungssystem will, kann sie gerne haben, viel Spaß damit!

Nach der FPGA Programmierung sieht das Innenleben des FPGAs so aus:

NIOS internal

Der PC sendet ein Kommando über den USB Port (der hier einen Seriellen Port emuliert) zum Nios.Dieser führt das Kommando entweder intern aus oder sendet einen Auftrag zu einem der 6 eigenständigen COMBUS Blöcke. Der generiert daraus ein COMBUS Kommando und sendet das auf die TX-Leitung. Dann wartet er auf Antwort von einem oder mehrerer FDECs auf RX, checkt auf korrektes Format und sendet die Daten zurück zum Nios. Der NIOS sendet das Resultat zurück zum PC (erfolgreich / Fehler oder gelesene Daten).

Alle gezeigten internen Blöcke liegen tatsächlich als Hardware vor und werden nicht über Software durch den NIOS emuliert! In jedem Maschinentakt (50MHz/20nsec) können dadurch hunderte oder sogar tausende Einzelaktionen ausgeführt werden. Und durch die FIFOs (First In First Out Memories), die jedes immerhin 8K Worte tief sind, muss auch niemand auf den anderen warten. Dadurch kommen wir hier auf eine effektive Rechenleistung, die kein PC oder 'normaler' Mikrocontroller erreichen könnten. Und das Ganze mit einem Modul für (früher) ca 20€, das eigentlich als Testvehikel oder Spielzeug für FPGA-Einsteiger gedacht ist!

vorherige Seite nächste Seite