Processori fai da te con FPGA




Il presente articolo tenta di riassumere in poche righe la sempre più diffusa tecnologia delle logiche programmabili, fornendo una visione generale a chi per passione, esigenze professionali o per semplice curiosità, si sta addentrando per la prima volta in questo mondo.




Concetti di base

Per dirlo in maniera semplice, le cosiddette logiche programmabili consentono a chiunque di realizzare un sistema digitale complesso su un singolo chip di silicio. La forma più diffusa di dispositivi programmabili è l’FPGA (Field Programmable Gate Array). Questi sono dei veri e propri circuiti integrati ad elevata densità, che possono essere programmati tutte le volte che vogliamo, per mezzo di un opportuno software fornito gratuitamente dallo stesso produttore del dispositivo. Serve inoltre un circuito di programmazione interfacciabile al PC. Quest’ultimo può essere acquistato generalmente con poche decine di euro ancora una volta dal produttore dal dispositivo. Si tenga presente che per la scrittura ed il debug del programma non sono strettamente necessari né il circuito di programmazione né il dispositivo vero e proprio. L’ambiente di sviluppo, infatti, include anche un opportuno simulatore che, un po’ come avviene per lo sviluppo di software per microcontrollori, consente di verificare continuamente la correttezza del programma che si sta sviluppando. Una volta caricato sull’FPGA, il programma fa sì che il dispositivo implementi esattamente le funzionalità da noi descritte.


Vantaggi

Le logiche programmabili sono state introdotte per rispondere all’esigenza degli sviluppatori di avere uno strumento che consentisse di implementare in maniera veloce circuiti specializzati nell’esecuzione di task specifici. In alternativa agli FPGA, è possibile commissionare la fabbricazione di un ASIC (Application Specific Integrated Circuit) o di realizzare lo stesso circuito utilizzato componenti discreti. La prima soluzione permette solitamente di ottenere prestazioni superiori e ingombri ridotti, ma implica dei costi esorbitanti e, per questa ragione, risulta conveniente solo quando si prevede di abbattere i costi per unità acquistando un gran numero di dispositivi (ovviamente non è il caso dell’elettronica fai da te). Lo sviluppo a componenti discreti porta invece ad ottenere prestazioni inferiori, risulta molto più complicato da un punto di vista progettuale, e implica la realizzazione di ingombranti e complesse schede elettroniche (board).


Il VHDL

Lo step di programmazione avviene attraverso l’utilizzo dei cosiddetti linguaggi di descrizione dell’hardware o HDL (Hadware Description Language). Tra questi, vi è il linguaggio VHDL, acronimo di VHSIC HDL; a sua volta, VHSIC è acronimo di Very High Speed Integrated Circuits. Questo linguaggio è diventato standard IEEE nelle sue due versioni rispettivamente nel 1987 e 1993. Oltre che per la programmazione degli FPGA, il VHDL è largamente utilizzato anche per la progettazione degli ASIC.


Sviluppo su FPGA

Molti produttori di FPGA, come Altera, Xilinx e Actel, assieme al software di sviluppo, forniscono generalmente anche librerie di core che facilitano enormemente il lavoro dei progettisti. Queste librerie includono un insieme di moduli IP (Intellectual Property), che sono in sostanza componenti presviluppati che possono essere liberamente utilizzati e integrati nel progetto assieme ai moduli dell’utente. Tale approccio consente di risparmiare moltissimo tempo quando si ha la necessità di realizzare progetti di elevata complessità che includono componenti standard, come interfacce Ethernet, SDRAM controller, FFT/IFFT core, ecc.


FPGA come Co-Processore

Come detto, gli FPGA sono solitamente utilizzati per la realizzazione di circuiti specializzati nell’esecuzione di task specifici. Si consideri a titolo di esempio un sistema embedded per la decodifica o l’elaborazione di un segnale video. Quando, come in questo caso, è richiesta un’elevata capacità computazionale, l’utilizzo di un normale processore non è sufficiente e si ha la necessità di prevedere la presenza di un co-processore: è esattamente quello che avviene anche nei normali personal computer, dove molte delle funzionalità grafiche sono realizzate da un processore separato integrato nella scheda video. Tornando all’esempio, una scelta conveniente consiste nel realizzare il co-processore sul dispositivo FPGA, progettando ed implementando in VHDL parte delle funzionalità del sistema. In questi casi, quando è presente sia un processore che un FPGA, si pone un problema di co-design hardware/software. In altre parole, bisogna individuare quali delle funzionalità del sistema devono essere implementare in hardware e quali in software dal processore. In questo particolare esempio la soluzione più ovvia consiste nell’implementare sul dispositivo FPGA il solo circuito di decodifica video, e lasciare alla CPU il compito di gestire l’eventuale interfaccia utente e la gestione della comunicazione con le eventuali unità periferiche e con la memoria.


FPGA come Chipset

Sino a qualche anno fa, la realizzazione di chip complessi, come microcontrollori, processori general purpose o processori specializzati nel processing di segnali digitali (DSP), non poteva che essere affidata ai cosiddetti chipmaker, ovvero alle azienda dotate della tecnologia richiesta per la fabbricazione dei circuiti integrati. Oggi, grazie alle prestazioni ed alla complessità raggiungibili anche attraverso le tecnologie programmabili, in molti casi è possibile realizzare interi sistemi su un dispositivo FPGA. In altre parole, le tipiche architetture System-on-Chip (SoC), composte solitamente da almeno una CPU, svariati componenti di processing (CODEC hardware Audio/Video, DSP, etc.) e moduli periferici (USB, I2C, etc.), possono essere sintetizzate anche sui dispositivi programmabili. Ovviamente, a meno di non essere parte di un team composto da decine di persone, bisogna necessariamente avvalersi delle librerie di IP fornite (spesso gratuitamente) dai produttori di FPGA.


Esistono veramente tantissimi modi per cominciare in poche ore a sviluppare un sistema hardware su FPGA. Actel, per esempio, fornisce gratuitamente la suite ACTEL Libero, un ambiente di sviluppo piuttosto immediato che consente di realizzare moduli VHDL che possono essere integrati velocemente con svariate IP core di libreria. Attraverso questa suite, è possibile per esempio realizzare un microcontrollore basato sul coreABC e sino a 16 diverse periferiche (SPI, UART, controller VGA, etc.), semplicemente instanziando componenti di libreria.

1 commento:

Unknown ha detto...

Un interessante link....
http://www.opencores.org
tante soluzioni open per progetti hardware

Posta un commento


Thinking Of Open Ware e' un nuovo modo di pensare la tecnologia che ha l'obiettivo di rendere il know-how "accessibile" a tutti, e quindi di creare le condizioni per innescare i meccanismi necessari a generare idee che possono essere trasformate in impresa, alimentando cosi' il progresso tecnologico. Questo obiettivo puo' essere ottenuto attraverso una serie di strumenti, tra i quali sicuramente e' possibile elencare Informazione, Formazione e Consulenza.
In Evidenza

Disponibili per il download gratuito appunti universitari di Elettrotecnica e Controlli Automatici.VAI

... con le scommesse e' matematicamente possibile. Serve solo un po' di pazienza. VAI

Un nuovo blog che racconta personaggi e aneddoti tra storia e umorismo (davvero interessante!). VAI

I computer diventano talmente piccoli da essere confusi con un normale caricabatterie per telefoni cellulari... VAI
Ricerca personalizzata