Introduzione alle FPGA

FPGA_1

Le prime logiche programmabili nate negli anni ‘80 offrivano la possibilità di manipolare migliaia di gate di logica programmabile nelle tecnologie allora presenti. Questi dispositivi si indirizzavano ai progettisti che ambivano ad integrazioni logiche e volevano evitare i rischi connessi alle rigidità dei gate array ,ove potevano farne a meno. Inoltre,il tempo di ingresso nel mercato, dalla fase di stesura delle specifiche, era divenuto un requisito critico per la competitività sul mercato stesso.

Sfruttando la riduzione del ciclo progettuale che ne scaturiva con questo metodo di lavoro, i vari progettisti riuscivano ad introdurre nuovi prodotti sempre più rapidamente. Inizialmente questi dispositivi venivano chiamati High Density PLD ed erano considerate un’estensione logica delle logiche programmabili allora presenti (PAL e GAL). Essi venivano utilizzati in modo simile, cioè integrazione di logica sparsa (glue logic) precedentemente implementata usando circuiti integrati TTL e sostituzione di gate array di bassa densità.

Pian piano con l’avanzare del tempo e con l’introduzione di nuove famiglie di componenti, nel tentativo di distinguere le differenti architetture di PLD, le varie case produttrici proposero il termine Field Programmable Gate Array (FPGA). Attualmente il processo tecnologico a 28nm ha permesso alle grosse case produttrici come ad esempio la Xilinx, di produrre FPGA ad elevatissimo numero di celle logiche programmabili: ad esempio l’ultimo arrivato in casa Xilinx è il Virtex 7  il quale presenta ben 2 milioni di celle logiche, 8 porte PCIe GEN3 e la possibilità di disporre di 1200 pin di I/O..e molto altro!

 

Struttura interna delle FPGA:

 

 

 

Ogni FPGA viene realizzata attraverso una matrice di blocchi logichi configurabili o Configurable Logic Blocks (CLB), i quali vengono connessi attraverso delle opportune Interconnessioni (piste metalliche) sia tra di loro che con pin di I/O per comunicare con segnali esterni all’FPGA. Analizziamo prima i CLB: ogni elemento logico della matrice viene interconnesso a quelli circostanti tramite due canali: uno verticale e uno orizzontale. Nei punti in cui il canale orizzontale incrocia quello verticale, vengono posizionati degli elementi contenenti la logica programmabile necessaria a gestire le connessioni: gli switch modules.

Quindi grazie a tali elementi, è possibile realizzare un certo numero (finito) di funzioni logiche e il vantaggio sta tutto nel poter riprogrammare opportunamente le connessioni tra le varie CLB in modo tale da cambiare la funzione logica. Il limite ovviamente è dovuto al fatto che i CLB e i pin di I/O sono in numero finito quindi la funzione o le funzioni avranno un nummero di operazioni finito (ad esempio al più non possiamo realizzare più di 10 funzioni che fanno quattro somme tipo Y=A+B+C+D ecc..).

 

 

Per non appesantire troppo l’articolo descriviamo brevemente la struttura di un CLB: Ogni CLB è costituito a sua volta da un altro elemento logico di base chiamato BLE. Il BLE è composto a sua volta da elementi logici combinatori e sequenziali, in pratica una Look Up Table(a 4 ingressi nell’esempio in figura) e un flip flop D.

Il motivo per il quale si utilizza questa tecnica di raggruppare le LUT in BLE e poi in CLB è dovuto essenzialmente al fatto che facendo in questo modo si riducono i tempi di ritardo medi dovuti alla propagazione del segnale nelle varie interconnessioni. Le interconnessioni: Come già detto in precedenza i vari elementi logici sono connessi tra loro tramite due canali: ciascuno di questi due canali viene realizzato tramite delle piste metalliche le quali vengono anche dette "wire segment": ogni interconnessione si misura a seconda di quante CLB essa attraversa.

In realtà ci sono diverse tipologie di segment wire a seconda della loro lunghezza come mostrato in figura:

 

 

I programmi che eseguono l’operazione di routing delle CLB assegnano delle opportune funzioni di costo a tutte le possibili interconnessioni individuate, in modo da ridurre i tempi di ritardo e minimizzare i cammini di interconnessione.

8 Comments

  1. Piero Boccadoro 9 ottobre 2011
  2. Mingele 8 ottobre 2011
  3. Mingele 9 ottobre 2011
  4. Fabrizio87 10 ottobre 2011
  5. divivoma 10 ottobre 2011
  6. susanacanel 30 ottobre 2011
  7. stefano88 13 ottobre 2011
  8. divivoma 13 ottobre 2011

Leave a Reply