Un FPGA (field-programmable gate array) è un chip logico del computer che non è cablato dal produttore. Ciò significa che può essere programmato dopo l’acquisto. Ci sono migliaia di opzioni per la personalizzazione disponibili su un tipico FPGA. Queste entità programmabili sono le porte, note anche come blocchi logici o file di tabella di ricerca (LUT).
Poiché il numero di blocchi logici su un FPGA è troppo elevato per essere creato manualmente, vengono generati tramite un programma software. I programmatori possono quindi scegliere tra una varietà di categorie per personalizzarle per un particolare sistema. Possono utilizzare i propri programmi per interagire con il programma sul chip FPGA e apportare le modifiche.
Quando si programma un FPGA, è possibile utilizzare diversi elementi interconnessi per configurare i blocchi logici secondo necessità. Il contenuto delle LUT varia a seconda del modo in cui sono state programmate. Alcuni eseguono singole funzioni mentre altri sono in grado di svolgere una serie di compiti più complessi. Alcuni FPGA possono anche contenere elementi sia analogici che digitali. Questi chip spesso hanno anche la capacità di consentire a questi elementi di funzionare insieme.
Le LUT sono collegate da una rete di fili. A seconda della funzione richiesta, i fili possono percorrere i file in linea retta o in una rete più complessa di collegamenti diagonali. Una LUT può essere collegata a diversi altri file tramite connessioni multiple. I file possono anche essere collegati da una serie di fili chiamati carry o catene di routing dedicate che aiutano a spostare solo determinati tipi di informazioni in modo che possano essere elaborate più rapidamente.
Per programmare una funzione logica con un FPGA, deve prima essere delineata in file di testo o visivi. Quindi le informazioni vengono scaricate nel software fornito con l’FPGA. Una volta che tale processo è completo, la funzione è solitamente operativa.
Sebbene un FPGA sia più costoso di un chip logico cablato, può aiutare a risparmiare risorse poiché gli utenti possono programmare per soddisfare le loro esigenze specifiche. Ciò può ridurre la necessità di lavoro extra e il tempo aggiuntivo necessario per ospitare un chip non realizzato su misura. Un chip programmabile può anche essere più facile da usare, poiché le sue funzioni utente, come i menu, possono essere personalizzate.
I circuiti di array di porte programmabili sul campo sono un’alternativa al circuito integrato specifico per l’applicazione (ASIC). Questi circuiti sono cablati prima di lasciare la fabbrica. Sono componenti a livello di scheda, al contrario degli elementi a livello di gate programmabili sul campo.