Field Programmable Gate Array: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Folto82 (discussione | contributi)
Folto82 (discussione | contributi)
Nessun oggetto della modifica
Riga 1:
[[File:Altera Flex EPF10K20 20000 cell FPGA.jpg|thumb|FPGA contenente 20.000 [[porta logica|porte logiche]]]]
In [[elettronica digitale]], un dispositivo '''Field Programmable Gate Array''', solitamente abbreviato in '''FPGA''', è un [[circuito integrato]] le cui funzionalità sono [[programmazione|programmabili]] via [[software]]. Tali dispositivi consentono l'implementazione di [[Funzione booleana|funzioni logiche]] anche molto complesse, e sono caratterizzati da un'elevata [[scalabilità]]. Questo tipo di tecnologia ha assunto un ruolo sempre più importante nell'[[elettronica industriale]] così come nella [[ricerca scientifica]]. Grazie al continuo progredire delle tecniche di miniaturizzazione, le capacità di tali dispositivi sono aumentate enormemente nel corso di due soli decenni, durante i quali si è passati da poche migliaia di [[Porta logica|porte logiche]] a qualche milione di porte logiche per singolo dispositivo FPGA.
 
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.
 
I circuiti FPGA sono elementi che presentano caratteristiche intermedie rispetto ai dispositivi [[Application specific integrated circuit|ASIC]] (''Application Specific Integrated Circuit'') da un lato e a quelli con architettura [[Programmable Array Logic|PAL]] (''Programmable Array Logic'') dall'altro. L'uso di componenti FPGA comporta alcuni vantaggi rispetto agli ASIC: si tratta infatti di dispositivi standard la cui funzionalità da implementare non viene impostata dal produttore che quindi può produrre su larga scala a basso prezzo. La loro genericità li rende adatti a un gran numero di applicazioni come ''consumer'', comunicazioni, ''automotive'' eccetera. Essi sono programmati direttamente dall'utente finale, consentendo la diminuzione dei tempi di progettazione, di verifica mediante simulazioni e di prova sul campo dell'applicazione. Il grande vantaggio rispetto agli ASIC è che permettono di apportare eventuali modifiche o correggere errori semplicemente riprogrammando il dispositivo in qualsiasi momento. Per questo motivo sono utilizzati ampiamente nelle fasi di [[prototipizzazione]], in quanto eventuali errori possono essere risolti semplicemente riconfigurando il dispositivo. L'ambiente di progettazione è anche più ''[[user-friendly]]'' e di relativamente facile apprendimento. Di contro, per applicazioni su grandi numeri sono antieconomici perché il prezzo unitario del dispositivo è superiore a quello degli ASIC (che di converso hanno elevati costi di progettazione).
 
Il costo di tali dispositivi è oggi in rapida diminuzione: ciò li rende sempre di più una valida alternativa alla tecnologia [[standard cell]]. Usualmente vengono programmati con linguaggi come il [[Verilog]] o il [[VHDL]], ma non bisogna dimenticare la modalità "schematic-entry", che consente un approccio veloce e semplificato a tale tecnologia pur essendo di pari potenzialità. Molte case costruttrici (ad esempio [[Xilinx]] e [[Altera]]) forniscono gratuitamente sistemi di sviluppo che supportano quasi tutta la loro gamma di prodotti.
 
==Storia==
Line 24 ⟶ 18:
* 2010: Si stima 2.75 miliardi.<ref name="instat"/>
 
==Descrizione==
==Principali tecnologie==
 
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.
 
I circuiti FPGA sono elementi che presentano caratteristiche intermedie rispetto ai dispositivi [[Application specific integrated circuit|ASIC]] (''Application Specific Integrated Circuit'') da un lato e a quelli con architettura [[Programmable Array Logic|PAL]] (''Programmable Array Logic'') dall'altro. L'uso di componenti FPGA comporta alcuni vantaggi rispetto agli ASIC: si tratta infatti di dispositivi standard la cui funzionalità da implementare non viene impostata dal produttore che quindi può produrre su larga scala a basso prezzo. La loro genericità li rende adatti a un gran numero di applicazioni come ''consumer'', comunicazioni, ''automotive'' eccetera. Essi sono programmati direttamente dall'utente finale, consentendo la diminuzione dei tempi di progettazione, di verifica mediante simulazioni e di prova sul campo dell'applicazione. Il grande vantaggio rispetto agli ASIC è che permettono di apportare eventuali modifiche o correggere errori semplicemente riprogrammando il dispositivo in qualsiasi momento. Per questo motivo sono utilizzati ampiamente nelle fasi di [[prototipizzazione]], in quanto eventuali errori possono essere risolti semplicemente riconfigurando il dispositivo. L'ambiente di progettazione è anche più ''[[user-friendly]]'' e di relativamente facile apprendimento. Di contro, per applicazioni su grandi numeri sono antieconomici perché il prezzo unitario del dispositivo è superiore a quello degli ASIC (che di converso hanno elevati costi di progettazione).
 
Il costo di tali dispositivi è oggi in rapida diminuzione: ciò li rende sempre di più una valida alternativa alla tecnologia [[standard cell]]. Usualmente vengono programmati con linguaggi come il [[Verilog]] o il [[VHDL]], ma non bisogna dimenticare la modalità "schematic-entry", che consente un approccio veloce e semplificato a tale tecnologia pur essendo di pari potenzialità. Molte case costruttrici (ad esempio [[Xilinx]] e [[Altera]]) forniscono gratuitamente sistemi di sviluppo che supportano quasi tutta la loro gamma di prodotti.
 
===Principali tecnologie===
* [[SRAM]] - Tecnologia basata su tecnologia a memoria statica [[CMOS]], in uso. Le SRAM-FPGA sono programmabili e riprogrammabili molte volte, e richiedono l'utilizzo di dispositivi esterni per essere configurate.
* [[Antifusibile]] - Circuiti programmabili una sola volta (''One-time programmable''); CMOS.
Line 33 ⟶ 35:
* [[Fusibile]] - Circuiti programmabili una sola volta; bipolare; obsoleta.
 
===Principali produttori===
[[Xilinx]] e [[Altera]] sono (2014) i due maggiori fabbricatori di FPGA.<ref>{{Cita web|nome=John |cognome=Edwards |sito=EDN |url=http://www.edn.com/article/CA6339519.html |titolo=No room for Second Place: Xilinx and Altera slug it out for supremacy in the changing PLD market |data=1º giugno 2006 |accesso=11 maggio 2012}}</ref> Le due aziende sono rivali "storiche", e insieme controllano oltre l'80% del mercato.<ref>{{Cita web|sito=Seeking Alpha|url=http://seekingalpha.com/article/85478-altera-and-xilinx-report-the-battle-continues|titolo= Altera and Xilinx Report: The Battle Continues|data=17 luglio 2008|anno=2008|accesso=13 novembre 2013}}</ref>
Sia Xilinx sia Altera forniscono il relativo software di sviluppo per [[Microsoft Windows|Windows]] e [[Linux]], in versioni gratuite o a pagamento, e con licenza [[Software proprietario|proprietaria]]<ref>{{Cita web|nome=Xilinx Inc.|sito=Xilinx.com|url=http://www.xilinx.com/support/documentation/sw_manuals/end-user-license-agreement.txt |titolo=End User License Agreement|accesso=15 ottobre 2015}}</ref><ref>