L'ambiente di sviluppo

Condividi

Xilinx Platform Studio(XPS)

L'ambiente di sviluppo nel quale è stato sviluppato il progetto ci è stato offerto dalla Xilinx; esso va sotto il nome di Xilinx Platform Studio (XPS) ed è lo strumento che consente ai progettisti di sistemi embedded di creare interi sistemi hardware/software personalizzati e d'integrarli all'interno di logiche FPGA della Xilinx.
XPS è composto da vari moduli che consentono di progettare utilizzando un ambiente grafico molto intuitivo e sofisticato, aiutando l'utente con “wizard” e procedure guidate per accompagnarlo durante tutti i passi necessari a creare, in poco tempo, sistemi di elaborazione dati interamente definiti dall'utente in tutte le sue parti: dalla scelta della CPU e dei moduli standard disponibili a catalogo, alla realizzazione delle periferiche particolari, definite sulle specifiche tipiche di ogni applicazione particolare, per giungere fino allo sviluppo dell'applicazione software e della successiva integrazione delle parti.

Disponibile come parte di un sistema integrato che include, oltre a tutti gli strumenti di sintesi e di implementazione del progetto, i programmi di simulazione, sia hardware che software, tutto ciò che è necessario per il “debug” integrato dell'intero progetto.I moduli fondamentali di XPS:

  • il BSB (Base System Builder) che, grazie alla libreria offerta dal costruttore della scheda, nel nostro caso la società americana Digilent Inc, include la procedura che consente con un semplice processo di “pick and place” da un menu di generare il microcomputer di base con tutte le periferiche messe a disposizione sulla scheda stessa (memorie e dispositivi di I/O);
  • un ampio catalogo di dispositivi standard interfacciabili sul BUS del microprocessore messi a disposizione dalla Xilinx;
  • la procedura guidata per la produzione di “template” relativi alle periferiche “custom” pensate edefinite dall'utente in un linguaggio descrittivo dell'hardware ad alto livello di astrazione, come il VHDL o il Verilog;
  • l'integrazione con l'ambiente di sintesi, “mapping”, “placing” e “routing” ISE di Xilinx;
  • l'esportazione del modello hardware generato verso ambienti IDE più standard, come SDK (SoftwareDevelopment Kit), offerta da Xilinx stessa, che impiega la nota e diffusa interfaccia
  • Eclipse per lo sviluppo del software;
  • la creazione automatica di documentazione.

 

Piattaforma ISE (Integrated System Environment) Design Suite

ISE (Integrated System Environment), di cui Xilinx mette a disposizione una versione WEB gratuita, è la suite dei moduli necessari a trasformare le descrizioni ad alto livello dell'hardware in una stringa di bit necessari a configurare la FPGA in modo da implementare l'intero progetto, hardware e software, così come è stato sviluppato dall'utente. La stringa di bit, una volta prodotta viene scritta su un memoria flash che la FPGA, all'atto dell'accensione, leggerà per configurarsi secondo le specifiche di progetto.
Tra le varie versione disponibili noi abbiamo impiegato quella cosiddetta “Embedded”, che include infatti XPS e SDK, insieme al Core Generator e al programma di debug hardware ChipScope. Il Core Generator, serve a generare i componenti standard configurabili dall'utente, mentre il ChipScope serve a produrre della logica da inserire all'interno della FPGA da usare come un analizzatore di stati logici da impiegare per “tracciare” l'evoluzione dei segnali presenti all'interno di nodi significativi del circuito, adatti a diagnosticare problemi e risolvere situazioni di funzionamento non corretti.
La versione da noi utilizzata per il progetto è la non recentissima 10.3, offerta gratuitamente, ma ancora più che valida per lo sviluppo dei progetti a livello didattico, anche di elevata complessità. 

Il linguaggio di programmazione: C/C++ 

Il linguaggio di programmazione da noi utilizzato è il C/C++.
Le motivazioni de questa scelta sono molteplici e includono considerazioni di vario genere. Innanzitutto è il linguaggio di programmazione che viene insegnato fin dal terzo anno nella nostra scuola; poi è quello che viene offerto come linguaggio di base nella piattaforma che abbiamo impiegato per progettare Nessie.
Ma ci sono anche altre ragioni alla base della scelta fatta.
Il C è un linguaggio di alto livello con un insieme ristretto di costrutti di controllo e parole chiave, ma possiede una struttura che lo rende adatto nelle applicazioni “real time”, dove il software è molto vicino all'hardware; ovvero, interagisce molto strettamente con esso per il controllo di eventi fisici, provenienti da sensori e trasduttori, e deve produrre risposte che controllano attuatori, come i motori di Nessie, a cui bisogna dare indicazioni in tempi molto ristretti.
Il C, infatti, e' diventato un linguaggio professionale ampiamente utilizzato perché è dotato, appunto, di strutture di alto livello ma può' maneggiare attività di basso livello con l'efficienza in un linguaggio Assembler. Il linguaggio produce un codice oggetto molto efficiente e può' essere compilato su un'ampia
gamma di sistemi operativi.
La struttura logica del C consente una progettazione procedurale ben strutturata e ogni programmatore può’ aggiungere nuove librerie rendendo la programmazione estremamente versatile e flessibile. Per i prossimi anni, con un hardware più stabilizzato, si può pensare di estendere il linguaggio alla  programmazione ad oggetti, magari concentrandoci di più sul software e passando al C++. Il compilatore da noi usato, incluso in XPS, permette entrambe le versioni del linguaggio.

Il compilatore


Il compilatore usato è la versione attuale del GCC (GNU Compiler Collection, in origine GNU C Compiler). GCC è un compilatore C e C++ multi-target, creato inizialmente dal fondatore della Free Software Foundation, Richard Matthew Stallman, come parte del progetto GNU.
Esso è successivamente diventato il compilatore per eccellenza utilizzato nel comunità Open Software, che vede in Linux il mattone fondamentale su cui basare i sistemi di informatica aperta allo scambio del codice e alla condivisione dei sorgenti. Si sta pensando ad una nuova edizione di Nessie (Nessie II), in cui inserire un Kernel Linux, ritagliato per i sistemi embedded, come supporto alle prossime applicazione. Ma questo è un discorso da riprendere il prossimo anno.

La scheda madre e la FPGA utilizzata


La famiglia Spartan3E delle FPGA Xilinx, utilizzata nella nostra scheda Nexys2 della Digilent, offre la versatilità e la ricchezza di una vasta gamma di componenti, che includono dalle cinquanta mila ai cinque milioni di porte logiche, un costo basso e facilmente accessibile ai sempre più scarni budget a disposizione della scuola.

Noi stiamo lavorando con il componente Spartan 3E – 1200-5 da 384 pin e tutto l'intero progetto di Nessie occupa in tutto circa 5288 slices su un totale di 8672 disponibili. Ovvero, tutto il progetto da noi ritagliato, prende circa il 60% delle risorse di logica programmabile disponibili e impiega solo il 60% delle porte presenti sul componente. Riguardo alle ulteriori risorse impiegate da Nessie sono due includere:
- i 32 Kbyte di Ram interna utilizzata; circa il 57% di quella disponibile.
- I 128 pin di Input/Output utilizzati di un totale di 250 presenti nel package usato, quindi circa il 51%.
- I 16 moltiplicatori hardware sui 28 presenti, utilizzati per realizzare le periferiche da noi progettate; ovvero il 57% del totale a disposizione.