FPGA sta per "Field Programmable Gate Array". Il concetto è stato inventato dal produttore di chipset statunitense Xilinx, che è ancora uno dei principali fornitori. In effetti, si tratta di circuiti la cui logica può essere definita per mezzo di un software. In altre parole, un programma può essere utilizzato per determinare come i circuiti vengono commutati. L'ovvio vantaggio è che un sistema di commutazione non deve essere ricostruito o sostituito quando è necessario un nuovo circuito. Solo la riprogrammazione è necessaria.
Come funzionano gli FPGA
Il circuito desiderato deve essere scritto in un HDL ("Hardware Description Language") completo. Verilog, per esempio, sarebbe adatto. Il circuito viene poi trasferito in un file di configurazione e l'FPGA viene installato. Ci sono differenze a seconda del produttore. In passato, era comune che solo un circuito potesse essere caricato alla volta. Nel frattempo, alcuni produttori offrono soluzioni con diversi circuiti. Se gli FPGA devono eseguire diversi compiti a brevi intervalli, la seconda variante è chiaramente più vantaggiosa.
Avantaggi e svantaggi degli FPGA
Avantaggi:
- Parallelizzabilità: diversi FPGA possono essere collegati in serie e quindi permettono l'implementazione di scenari molto complessi.
- La latenza I/O è molto bassa. Il tempo tra ingresso e uscita è 50 volte inferiore a quello di una CPU.
- Compatibilità: un FPGA permette di collegare qualsiasi fonte di dati direttamente al chip. A differenza di una CPU, non è necessaria alcuna standardizzazione.
- Efficienza energetica: gli FPGA offrono prestazioni eccellenti per watt rispetto a CPU e GPU.
- Non è necessario un computer host.
C'è in realtà un solo svantaggio degli FPGA: la programmazione è molto complicata. I circuiti sono quindi considerati inadatti per operazioni in virgola mobile, per esempio. Questi richiederebbero cambiamenti logici troppo veloci. Gli FPGA non sostituiscono quindi le CPU o i chip grafici, ma sono adatti, per esempio, all'accelerazione hardware, alle fusioni di sensori (valutazione simultanea di diversi dati di sensori) e alle implementazioni network-on-a-chip (NOC).