Field Programmable Gate Array
Un array di gate programmabile sul campo (spesso abbreviato in FPGA) è un componente elettronico utilizzato per costruire circuiti digitali riconfigurabili. Ciò significa che un FPGA è diverso da un gate logico, perché un gate logico ha una funzione fissa. Al contrario, un FPGA ha una funzione non definita al momento della produzione. Prima che l'FPGA possa essere utilizzato in un circuito deve essere programmato, cioè riconfigurato.
Gli FPGA sono circuiti integrati nella categoria dei dispositivi logici programmabili o PLD. Gli FPGA sono i più performanti, i più flessibili e anche i più costosi tra i tipi di PLD. Uno svantaggio degli FPGA rispetto agli altri PLD è che non ricordano il loro design quando viene tolta l'alimentazione. Un FPGA ha quindi bisogno di un chip di memoria di configurazione separato che contenga il progetto dell'FPGA. Quando l'alimentazione viene restituita all'FPGA una parte fissa dell'FPGA legge la configurazione dal chip di memoria di configurazione. Dopo che l'FPGA è stato configurato, sarà in grado di svolgere la funzione che gli è stata data dal progetto.
Un FPGA è diverso da un microprocessore o da un microcontrollore. Un FPGA nella sua forma di base non è in grado di eseguire il software. Solo quando all'FPGA viene data una configurazione che contiene un processore-architettura ha la capacità di eseguire il software.
I produttori di FPGA forniscono software di ingegneria per Windows e talvolta anche Linux, per sviluppare progetti per FPGA. Il progetto è comunemente scritto in file di computer leggibili dall'uomo chiamati Hardware Description Language (HDL). I più popolari sono VHDL e Verilog. I linguaggi di descrizione dell'hardware sono fortemente paragonabili ai linguaggi di programmazione. Ma l'intenzione degli HDL è quella di progettare circuiti logici digitali mentre i linguaggi di programmazione progettano il software.
Il software di ingegneria FPGA deve tradurre il codice astratto HDL negli elementi logici disponibili nell'FPGA selezionato. Questo si chiama sintesi logica. Poi viene fatto un processo di luogo e percorso per posizionare gli elementi logici nell'FPGA. Il risultato è un bitfile che può essere programmato nell'FPGA o nella memoria di configurazione. Questo viene di solito fatto con un programmatore USB collegato alla porta JTAG dell'FPGA.
Poiché l'FPGA è un circuito integrato, un produttore di FPGA può decidere di aggiungere altri componenti di circuito integrato di uso comune. Queste parti fisse sono chiamate nuclei. Questi sono per esempio controllori Ethernet o anche una completa architettura di processore. Per diversi segmenti di mercato come la difesa, il medicale, le comunicazioni e la robotica, il produttore di FPGA cerca di aggiungere l'insieme più prezioso di questi nuclei aggiuntivi.
Struttura interna
Gli FPGA sono generalmente costruiti su elementi logici programmabili e interconnessioni programmabili. Un elemento costitutivo degli elementi logici è una tabella di ricerca programmabile (LUT). Una LUT può essere programmata per emettere qualsiasi valore dato in ingresso. In questo modo, una LUT può essere programmata per essere qualsiasi tipo di logica con lo stesso numero di ingressi e uscite. Ad esempio, una LUT a 2 ingressi e 1 uscita può essere programmata per emulare la logica di un 2 ingressi AND, OR, NAND, NOR, XOR, ecc. L'uscita di questa LUT può essere salvata utilizzando un registro o collegata all'ingresso di altre LUT. Utilizzando un mux programmabile, l'FPGA può essere programmato per scegliere l'uscita registrata o non registrata. Questa combinazione di una LUT, un registro ed un mux è la struttura generale di un elemento logico.
Per collegare tra loro questi elementi logici si utilizzano dei transistor passanti. Il transistor può essere programmato per collegare o meno un segnale, dando così all'FPGA la possibilità di collegare insieme elementi logici in modo molto specifico. Per esempio, se l'uscita di un elemento logico alimenta l'ingresso di un altro, il transistor passante può essere programmato per collegare questi due fili insieme e corrispondere alla logica specificata. Tra gli elementi logici e i transistor passanti, un compilatore può prendere una descrizione hardware da un HDL, creare la logica per gli elementi logici e collegarli insieme usando i transistor passanti.
Domande e risposte
D: Che cos'è un field-programmable gate array (FPGA)?
R: Un field-programmable gate array (FPGA) è un componente elettronico utilizzato per costruire circuiti digitali riconfigurabili. Ha una funzione non definita al momento della produzione e deve essere programmato, o riconfigurato, prima di poter essere utilizzato in un circuito.
D: In che cosa differisce un FPGA da un gate logico?
R: Un FPGA si differenzia da un gate logico perché un gate logico ha una funzione fissa, mentre un FPGA ha una funzione non definita al momento della produzione.
D: Che tipo di circuito integrato è un FPGA?
R: Un FPGA è un circuito integrato della categoria dei dispositivi logici programmabili o PLD.
D: Quali sono gli svantaggi dell'utilizzo di FPGA rispetto ad altri PLD?
R: Uno svantaggio dell'uso delle FPGA rispetto ad altri PLD è che non ricordano il loro progetto quando viene tolta l'alimentazione, quindi hanno bisogno di un chip di memoria di configurazione separato che contenga il progetto. Inoltre, sono più costosi di altri tipi di PLD.
D: Come si programma un FPGA?
R: Per programmare un FPGA, gli ingegneri utilizzano un software di ingegneria per Windows o Linux per sviluppare progetti scritti in linguaggi di descrizione hardware come VHDL e Verilog. Il software traduce poi questo codice negli elementi logici disponibili sugli FGPA selezionati e li posiziona con processi di place and route che creano un bitfile che può essere programmato nella memoria di configurazione o direttamente nell'FGPA stesso con un programmatore USB collegato alla sua porta JTAG.
D: I microprocessori e i microcontrollori sono simili agli FGPA?
R: No, i microprocessori e i microcontrollori sono diversi dagli FGPA perché nella loro forma di base non possono eseguire software; solo quando viene fornita una configurazione contenente l'architettura del processore, hanno questa capacità.