Field Programmable Gate Array: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
Etichette: Modifica da mobile Modifica da web per mobile
Botcrux (discussione | contributi)
m Bot: fix wikilink, replaced: Look-Up Table → Lookup table
Riga 21:
 
==Descrizione==
 
Esistono diversi tipi di FPGA, che comprendono sia dispositivi programmabili una sola volta, sia dispositivi riprogrammabili un grande numero di volte. I primi, detti [[Programmable Read Only Memory|OTP]] (''One Time Programmable''), sono costituiti da componenti il cui stato di funzionamento cambia in modo permanente, permettendo di mantenere la configurazione allo spegnimento del dispositivo. Alla seconda categoria appartengono i dispostivi basati su tecnologia [[SRAM]] (''Static Random Access Memory''), i quali devono essere riprogrammati ad ogni accensione, avendo una memoria di configurazione volatile.
 
Line 43 ⟶ 42:
 
==Struttura==
[[File:FPGA cell example.png|thumb|upright=1.6|Descrizione semplificata di una ''logic cell'', in cui sono mostrate due [[Look-UpLookup Tabletable|LUT]] a 3 input, un [[full-adder]] (FA) e un [[flip-flop]] di tipo D.]]
[[Image:switch box.svg|thumb|upright=1.6|Le matrici di scambio (''switch matrix'') sono costituite da pass-transistor programmabili finalizzati all'instradamento dei segnali all'interno dell'organizzazione matriciale che costituisce l'FPGA]]
La struttura di un FPGA è in generale costituita da una matrice di blocchi logici configurabili, detti CLB (''Configurable Logic Blocks''), connessi fra loro attraverso interconnessioni programmabili. Ai margini di tale matrice vi sono i blocchi di ingresso/uscita, detti IOB (''Input Output Block''). I CLB realizzano le funzioni logiche, l'insieme di interconnessioni li mette in comunicazione, mentre gli IOB si occupano dell'interfacciamento del circuito con l'esterno. All'interno di tale matrice sono presenti anche altri tipi di risorsa, come i DCM (''Digital Clock Manager''), che generano il segnale di [[clock]], la rete che trasporta il segnale di clock dai flip-flop ai CLB ed altre risorse di calcolo, come ad esempio le [[Unità aritmetica e logica|ALU]] (''Arithmetic Logic Unit''), e risorse di memoria distribuita. Ciascuno di questi elementi costitutivi ha un modello di funzionamento specifico, che riveste notevole importanza nella comprensione del corretto funzionamento del dispositivo.
Line 50 ⟶ 49:
I blocchi CLB sono composti solitamente da due o quattro celle logiche (''logic cell''), che eseguono le [[Funzione booleana|operazioni booleane]]. Ogni logic cell è solitamente composta da una o più [[Lookup table|LUT]] (''Look-up Table'') programmabili. Le LUT sono utilizzate per implementare funzioni booleane generalizzate, e sono solitamente accompagnate da un registro. L'insieme di questi elementi è detto ''logic cell'', e rappresenta uno dei parametri più importanti nella valutazione della potenzialità di un FPGA.
 
I CLB possono essere connessi fra loro, permettendo così di realizzare funzioni booleane complesse. Le LUT sono composte da una memoria SRAM da 16 bit e da un multiplexer a 4 ingressi: una volta configurate possono generare qualsiasi funzione logica a quattro ingressi ciascuna. Vi sono anche le interconnessioni relative alla logica di set/reset e chip enable, ai segnali di clock, e ai segnali provenienti dalle altre slice del dispositivo. La scelta di utilizzare LUT a soli quattro ingressi risiede nel fatto che la complessità di una LUT cresce esponenzialmente all'aumentare del numero di ingressi, e risulta dunque poco gestibile.
 
Raggruppare insieme alcune LUT in un CLB e di connetterle con una rete locale di interconnessioni consente infatti una maggiore velocità, dovuta al fatto che questi tipo di interconnessione è più veloce di quella generale tra blocchi logici distinti. Il CLB è inoltre dimensionato al fine di ottimizzare il numero di connessioni locali e globali in funzione dell'area occupata: CLB troppo grandi implicano che l'area necessaria per le interconnessioni locali superi quella risparmiata grazie al raggruppamento delle LUT contenute in esse. Lungo il perimetro dei blocchi logici vi sono infine i pin di ingresso e uscita, collegati all'interconnessione adiacente tramite transistor programmabili.