FPGA staat voor “Field Programmable Gate Array”. Het concept werd uitgevonden door de Amerikaanse chipsetfabrikant Xilinx, die nog steeds een van de belangrijkste leveranciers is. In feite gaat het om circuits waarvan de logica door middel van software kan worden gedefinieerd. Met andere woorden, een programma kan worden gebruikt om te bepalen hoe circuits worden geschakeld. Het duidelijke voordeel is dat een schakelsysteem niet opnieuw behoeft te worden opgebouwd of vervangen wanneer een nieuw circuit nodig is. Alleen herprogrammering is nodig.
Hoe FPGA’s werken
De gewenste schakeling moet worden geschreven in een totaalsprekend HDL (“Hardware Description Language”). Verilog, bijvoorbeeld, zou geschikt zijn. De schakeling wordt vervolgens overgebracht naar een configuratiebestand en de FPGA wordt geïnstalleerd. Er zijn hier verschillen, afhankelijk van de fabrikant. In het verleden was het gebruikelijk dat slechts één circuit tegelijk kon worden geüpload. Intussen bieden sommige fabrikanten oplossingen met verschillende circuits aan. Als de FPGA’s met korte tussenpozen verschillende taken moeten uitvoeren, is de tweede variant duidelijk voordeliger.
Voordelen en nadelen van FPGA’s
Voordelen:
- Paralleliseerbaarheid: meerdere FPGA’s kunnen in serie worden geschakeld en maken zo de implementatie van zeer complexe scenario’s mogelijk.
I/O-latentie is zeer laag. De tijd tussen input en output is 50 keer korter dan bij een CPU.
- Compatibiliteit: Met een FPGA kan elke gegevensbron rechtstreeks op de chip worden aangesloten. In tegenstelling tot een CPU is er geen standaardisatie nodig.
- Energie-efficiëntie: FPGA’s bieden uitstekende prestaties per watt in vergelijking met CPU’s en GPU’s.
- Een hostcomputer is niet nodig.
Er is eigenlijk maar één nadeel aan FPGA’s: het programmeren is erg omslachtig. De schakelingen worden daarom ongeschikt geacht voor bijvoorbeeld floating-point bewerkingen. Dit zou te snelle veranderingen in de logica vereisen. FPGA’s zijn dan ook geen vervanging voor CPU’s of grafische chips, maar zijn wel geschikt voor bijvoorbeeld hardwareversnelling, sensor fusions (gelijktijdige evaluatie van verschillende sensorgegevens) en network-on-a-chip (NOC) implementaties.