Einer der kostengünstigsten erhältlichen FPGA ist der MachXO2 von Lattice. Hier der Link zum MachXO2 vom Hersteller. Obwohl schon in die Jahre gekommen, ist er weiterhin erhältlich. Er besitzt mehrere RAM-Blöcke die als ROM, Single-Port-RAM oder Dual-Port-RAM benutzt werden können. Der Dual-Port-RAM hat den Vorteil, dass er Daten zwischen Einheiten mit unterschiedlicher Taktquelle verbinden kann.
Der 640er ist um die 5$ erhältlich und eignet sich für verschiedene Anwendungen. Der Vorteil einen FPGA auf der Hardware einzusetzen ergibt sich aus folgendem Grund: Man kann Hardware anbinden und in Echtzeit ansteueren. Anders als bei einem Mikroprozessor kann sich der FPGA auf jede Peripherie zeitlich voll und ganz konzentrieren. Während eine Mikroprozessor nur eine Sache nach der anderen machen kann und dafür mit Interrupts oder Zeitquellen gesteuert werden muss, kommen im FPGA parallele Einheiten zum Werk die zeitgleich arbeiten. Ein anderer Vorteil ist die Flexibilität. Im Gegensatz zu Hardware kann der FPGA jederzeit umprogrammiert werden.
Zum Programmieren bietet sich die JTAG-Schnittstelle an. Man führt 4 Signale auf einen Stecker und kann dan mit einem Programmieradapter von Lattice den FPGA programmieren oder auslesen.
Der MachXO2 verfügt noch über eine andere bemerkenswerte Qualität. Über ein einziges Signal lässt sich der gesamte RAM-Inhalt in einen Flash speichern, so dass er beim nächsten Starten zur Verfügung steht. So gelingen beispielsweise Kalibrierung von analogen Eingängen.
Zur Anbindung an einen Mikroprozessor kann man sich mehrerer verschiedener Schnittstellen bedienen. Die SPI und der I2C ist fest im Chip integriert, damit man mit wenig Aufwand einen internen Wishbone-Bus anbinden kann. Es gibt auch mehrere andere propriotäre Möglichkeiten einen Chip anzusprechen oder als Slave Daten zu liefern. Zum Beispiel eine parallele Schnittstelle oder einen irgendwie gearteten seriellen Bus.
Eine FPGA-Programmierung wird in den Sprachen verilog oder VHDL ausgeführt. Beide Sprachen haben Vor- und Nachteile. Ich empfehle die Beauftragung eines Spezialisten, denn im FPGA sind neben Pinning auch Timings zu beachten. Wenn Sie näheres Interesse haben, erstelle ich Ihnen gerne ein individuelles Angebot.