Capitolo 3
La piattaforma di sviluppo ed il partizionamento del progetto
Nel presente capitolo è descritta la scheda C6713 utilizzata come piattaforma di sviluppo per il sistema di emulazione. La rilevante potenza di calcolo, la grande quantità di memoria disponibile e, non da ultima, la notevole disponibilità di logica programmabile, la rendono un ottimo strumento nello sviluppo di progetti complessi ed in cui sono richieste alte prestazioni in termini di velocità di elaborazione e trasferimento dati.
Ad esclusivo supporto della C6713Compact, e prodotta anch’essa dalla ditta tedesca Orsys, è la Power Supply Board sulla quale, tramite il connettore micro- line, è montata la prima.
Infine si definisce il partizionamento del sistema di emulazione tra hardware e software.
3.1 La scheda Orsys Micro-Line C6713Compact
La C6713Compact, fig. 3.1, è una scheda di elaborazione dati, basata su un DSP ad elevate prestazioni, che monta, in particolare:
¾ un FPGA Xilinx Virtex-II dalla complessità di 1Mgate, sul quale implementare la sezione di logica programmabile;
¾ un DSP floating point Texas Instruments TMS320C6713, a 225 MHz, dotato di una
grande potenza di calcolo (1800 MIPS o 1350 MFLOPS) e di 256k di RAM interna;
¾ un chipset per la gestione della comunicazione via Firewire su due porte;
¾ una gran quantità di memoria esterna, sotto forma di Flash EPROM (32Mbyte, organizzata a 16 bit) e SDRAM (64Mbyte organizzata 32 bit).
Fig. 3.1 : La scheda Orsys C6713Compact.
Alla C6713 va poi affiancata una scheda di supporto per l’alimentazione e la comunicazione seriale.
Sono necessari, per lo sviluppo, il debug e la programmazione della scheda, i seguenti tool aggiuntivi:
¾ un PC per lo sviluppo;
¾ un emulatore JTAG quale lo XDS510PP Plus, della Spectrum Digital Inc, scelto in questa sede;
¾ il software Code Composer Studio, per la programmazione del software del DSP.
3.1.1 Struttura Hardware
Un diagramma a blocchi della struttura della C6713Compact è riportato in fig. 3.2, mentre nella fig. 3.3 sono riportate le proiezioni schematiche delle due facce della scheda.
Fig.3.2 : Diagramma a blocchi della C6713Compact dell’Orsys.
3.1.2 I connettori
La C6713Compact è dotata di:
¾ un connettore micro-line®;
¾ un connettore JTAG;
¾ due connettori IEEE1394 utilizzabili tramite cavi standard a 6 pin;
Ci si sofferma brevemente nella descrizione dei primi due connettori (di cui si è fatto uso durante lo sviluppo del progetto), rimandando ai riferimenti bibliografici per ulteriori approfondimenti, [28].
Fig.3.3 : Component side (in alto) e bottom side (in basso) della scheda C6713 dell’Orsys
3.1.2.1 Il connettore micro-line®
Il connettore micro-line® è il connettore principale della board; risulta diviso in 6 gruppi di 32 pin ciascuno, 2 gruppi da 8 pin e 3 gruppi da 4 pin..
Come precedentemente accennato, esso è realizzato in modo da permettere un’agevole connessione in pila di schede dotate dello stesso standard; è quanto accade ad esempio nel caso della power supply board, posta subito al di sotto della C6713, ed alla quale è connessa proprio tramite tale connettore.
I segnali legati al connettore micro-line possono essere suddivisi in tre gruppi:
¾ Power supply
¾ Segnali di interfaccia col DSP o con la board.
¾ Segnali direttamente legati all’FPGA.
Uno standard micro-line attribuisce a ciascun pin del connettore un compito ed un collegamento specifici; tuttavia è prevista la possibilità di riconfigurare quasi tutte le connessioni secondo le esigenze dell’utente.
3.1.2.2 Connettore JTAG
Il connettore JTAG viene utilizzato durante lo sviluppo delle applicazioni ed è associato alle interfacce JTAG di DSP ed FPGA; di conseguenza è usato sia nella fase di debugging, sia per il download di applicazioni nel DSP che, infine, per il salvataggio nella memoria flash di codice per il DSP o per la programmazione dell’FPGA.
L’interfaccia JTAG del DSP è utilizzabile insieme ad un emulatore JTAG ed al software Code Composer Studio.
Per quanto riguarda l’FPGA, nella fase di sviluppo è possibile scaricare velocemente il codice di programmazione tramite il JTAG, in modo da consentirne un test immediato.
Nell’utilizzo finale il codice è salvato nella memoria flash e caricato sull’ FPGA per mezzo del
DSP.
3.1.3 Componenti Hardware ed Interfacce
3.1.3.1 FPGA
L’FPGA, dalla complessità di 1Mgate, oltre a garantire una notevole quantità di logica programmabile, è reso estremamente versatile dalla flessibilità delle connessioni permesse alla scheda: infatti molti dei pin di ingresso/uscita dell’FPGA possono essere legati a quelli del connettore micro-line e all’interfaccia del DSP.
Fig. 3.4 : Principali possibilità di connessione per l’FPGA
Più in dettaglio l’FPGA ha accesso a:
¾ DSP EMIF (External Memory InterFace): bus dati, bus indirizzi, segnali di controllo;
¾ Pin del connettore micro-line;
¾ Data mover del Link Layer Controller per l’interfaccia IEEE1394;
¾ Periferiche del DSP: HPI, McASP,GPIO…
¾ Bus driver control (data, address, HPI data);
¾ Interfaccia JTAG;
¾ Interrupts del DSP;
In fig. 3.4 è mostrato uno schema di possibili connessioni per l’FPGA; gli utilizzi indicati tra parentesi accanto ai gruppi di pin del connettore micro-line sono quelli definiti dallo standard, ma possono essere completamente riconfigurati dall’utente.
3.1.3.2 Memoria Flash
La C6713 Compact utilizza una memoria flash EEPROM Am29LV256 a 32 Mbyte (organizzata a 16 bit), per la memorizzazione non volatile di codice, applicativo per il DSP e di programmazione per l’FPGA.
All’accensione o al reset, il boot loader interno del DSP carica il primo Kbyte contenuto nella memoria flash, partendo dall’indirizzo 0, e lo esegue. In questo segmento di codice è normalmente contenuta la direttiva di effettuare un secondo boot loader, per caricare il resto dell’applicazione, solitamente di dimensioni maggiori di 1Kbyte.
La memoria flash viene logicamente suddivisa in 32 segmenti di 1Mbyte ciascuno; questi sono accessibili in modo mutuamente esclusivo: i 5 bit più significativi del registro FSR del PLD controllano quale segmento della memoria sia correntemente accessibile.
3.1.3.3 PLD
Il PLD costituisce la glue-logic della scheda: consente infatti, mediante i suoi registri, di
accedere alle varie parti hardware della board e di configurarne alcune opzioni, fig. 3.5.
Figura 3.5: Registri del PLD
Oltre al già citato FSR, è utile evidenziare i seguenti:
¾ FPGA Control Register (FCR) : viene utilizzato dalle applicazioni per caricare il codice sull’FPGA;
¾ HardWare ConFiGuration register (HWCFG) : contiene informazioni sui settaggi hardware della board: dimensioni della memoria RAM, velocità massima della CPU, abilitazione dell’interfaccia HPI del DSP, funzionamento della C6713Compact in modo master o slave;
¾ Module Control Register (MCR): contiene, tra gli altri, un bit per il reset software della scheda;
Altri registri controllano varie altre impostazioni possibili per la scheda; tra cui quelle riguardanti il routing dei segnali di interrupt per il DSP.
Sulla C6713Compact due linee di interruzione sono gestite dal PLD e due dall’FPGA,
come evidenziato in fig. 3.6.
Fig. 2.26 : Routing delle interruzioni sulla C6713Compact.
3.1.3.4 Memoria esterna (SDRAM)
La C6713Compact utilizza una memoria esterna (SDRAM) da 64Mbyte organizzata a 32 bit. L’accesso alla memoria avviene tramite l’EMIF clock, a 90MHz; ne consegue che, pur costituendo un valido appoggio per la memorizzazione dei dati, nelle applicazioni ad alta velocità è consigliabile l’uso, finché possibile, della memoria interna del DSP, che invece risulta essere più veloce; in questa valutazione grava anche la constatazione che l’EMIF sia una risorsa condivisa con altri componenti (tra cui l’UART).
3.1.3.5 EEPROM seriale
Sulla scheda è presente anche una memoria EEPROM seriale di 256 byte, integrata con il sensore di temperatura della C6713; essa può utilmente contenere il serial number ed altri parametri. I driver software per questa memoria sono forniti con la documentazione della C6713Compact.
La EEPROM è connessa al PLD tramite un’interfaccia I2C, e vi si può accedere tramite
l’I2C bus control register.
3.1.3.6 Sensore di temperatura
La scheda contiene un sensore, con interfaccia I2C, che consente di misurare la sua temperatura durante l’utilizzo, con un range tra –55 e +125 0C e la risoluzione di un grado centigrado. Qualora la C6713 operi in un ambiente in cui sia esposta a temperature elevate, tale sensore può divenire indispensabile al fine di evitare condizioni di rischio. La temperatura interna della CPU risulta essere, al massimo, 15 gradi superiore a quella misurata dal sensore. I driver software per il sensore sono forniti con la documentazione della scheda.
3.1.3.7 Interfaccia UART / RS-232
L’interfaccia RS-232 è realizzata tramite il dispositivo UART Texas Instruments TL16C550, connesso al line driver RS-232.
Tale interfaccia è comunemente utilizzata come forma generica di comunicazione (ad esempio la ricezione di parametri da un host computer) oppure come connessione a periferiche remote.
L’interfaccia consiste dei segnali TxD (Transmit Data), RxD (Receive Data), RTS (Request To Send) e CTS (Clear To Send). Questi segnali sono disponibili anche su pin dedicati del connettore micro-line.
3.1.3.8 Il DSP e le sue periferiche
Il DSP montato sulla C6713Compact è il TMS320C6713 della Texas Instruments. E’ un processore di ultima generazione dotato di una notevole potenza di calcolo: 1800 milioni di istruzioni per secondo (MIPS) o 1350 milioni di operazioni floatig-point per secondo (MFLOPS).
La C6713 utilizza un’architettura basata su cache a due livelli: il primo di 4KByte ed il secondo di 256KByte di cui 192Kbyte utilizzabili come mapped SRAM.
Il DSP montato sulla C6713Compact possiede un gran numero di periferiche integrate, tra
cui:
¾ un generatore di clock con oscillatore e PLL;
¾ una External Memory InterFace (EMIF);
¾ due Multichannel Audio Serial Ports (McASP);
¾ due Multichannel Buffered Serial Ports (McBSPs);
¾ due timers;
¾ un controller enhanched DMA (EDMA);
¾ una Host Port Interface (HPI);
¾ un modulo dedicato al General-Purpose Input/Output (GPIO).
In particolare il generatore di clock, a mezzo di un oscillatore interno e di un PLL, può effettuare opportune moltiplicazioni e divisioni al fine di fornire specifici clock, come quello per il funzionamento dell’EMIF o quello del processore stesso.
L’EMIF è, invece, l’interfaccia principale verso tutte le periferiche; ha infatti accesso a:
¾ Memoria esterna (SDRAM e flash);
¾ Periferiche on-board: UART, LLC, e PLD;
¾ Tutte le periferiche interne al DSP;
¾ Connettore micro-line attraverso bus driver;
L’ultima modalità ed un appropriato design dell’FPGA consentono di accedere ad eventuali periferiche esterne collegate alla scheda tramite appositi connettori.
In fig. 3.7 è mostrato un diagramma funzionale a blocchi del processore TMS320C6713.
3.1.3.9 LED
Sulla scheda sono inoltre montati sei LED suddivisi in tre gruppi:
¾ Due LED programmabili dall’utente, controllati dal PLD, che possono essere utilizzati dalle applicazioni software per mostrare determinati eventi o stati;
¾ Due LED, sempre programmabili dall’utente, ma controllati dall’FPGA, con funzioni
definite dal design dell’FPGA stesso;
¾ Due LED di stato legati all’interfaccia IEEE1394.
Per ulteriori dettagli sull’hardware on board si rimanda alla bibliografia [28].
Fig. 3.7 : Diagramma funzionale a blocchi del processore TMS320C6713.
3.2 La scheda di alimentazione
La scheda di alimentazione (Power Supply Board), sempre fornita dalla ditta Orsys, è
costruita in modo da potersi adattare, in maniera modulare, allo standard dei connettori micro-
line, quali quelli presenti sulla C6713Compact. Essa provvede a fornire alla scheda di
elaborazione tutte le tensioni d’alimentazione necessarie al suo corretto funzionamento,
fig.3.8.
Fig. 3.8: La Power Supply Board.
A partire dall’alimentazione di rete (230V, 50Hz), mediante un adattatore AC/DC universale (che fornisce in uscita al massimo 12V DC e 9.6VA), ed un regolatore di tensione switching, vengono prodotti i +5V necessari alla C6713Compact. La massima corrente erogabile dall’uscita a 5V è 2.5A, di conseguenza risulta essere molto superiore a quella richiesta dalla sola C6713Compact; questo trova giustificazione nel fatto che la Power Supply Board è stata pensata per essere utilizzata come scheda di alimentazione per più board impilate modularmene tramite il connettore micro-line.
Sulla Power Supply Board sono inoltre presenti:
¾ un pulsante di reset;
¾ un LED di power-on;
¾ un connettore RS-232 SUB-D 9, collegato ad adeguati pin del connettore micro-line, che consente la comunicazione seriale con la scheda C6713Compact;
¾ componenti per la protezione da interferenze elettro-magnetiche.
3.3 Partizionamento Hardware-Software
Come già accennato nel precedente capitolo, una prima visione del sistema, prevedeva la realizzazione di 60 canali, programmabili individualmente, atti ad emulare i segnali provenienti dalla Detection Board. La loro realizzazione tramite altrettanti contatori dotati di caricamento sincrono ed opportunamente pilotati da registri LFSR
1, ha indotto un primo livello di partizionamento del progetto: l’implementazione in hardware di questi contatori, dei rispettivi registri di pilotaggio e di eventuali registri di appoggio, demandando al software del computer remoto il calcolo dei parametri di configurazione del sistema di emulazione.
Nel seguito sono specificate le funzioni realizzate dal DSP e dall’FPGA,
3.3.1 La partizione tra le risorse della C6713
Un’ulteriore partizione delle funzioni da svolgere è stata effettuata a livello della C6713.
E’ stato previsto, infatti, di implementare su FPGA le strutture fisse quali contatori e registri, lasciando al DSP la gestione delle interfacce necessarie per la configurazione.
In particolare l’FPGA deve:
¾ ricevere i parametri di configurazione;
¾ prevedere un protocollo di sincronizzazione dei dati provenienti da DSP;
¾ produrre in uscita i segnali di stimolo per la DPB;
Questi ultimi devono essere disponibili sui pin A1:A30, C1:C30 del connettore micro-line, essendo questi stessi gli ingressi della scheda di elaborazione dati, fig. 3.9.
1
L’architettura sarà presentata nel dettaglio nel capitolo 4.
FPGA
Parameters from/to DSP
Spada_signal to DPB
60
60 pad on microline