logo SBA

ETD

Archivio digitale delle tesi discusse presso l’Università di Pisa

Tesi etd-05102005-113222


Tipo di tesi
Tesi di laurea vecchio ordinamento
Autore
Marcuccetti, Massimo
Indirizzo email
Massimo.Marcuccetti@libero.it
URN
etd-05102005-113222
Titolo
Presentazione dello stato dell'arte nei sistemi per elaborazione numerica dei segnali basati sull'uso concorrente di DSP e FPGA.
Dipartimento
INGEGNERIA
Corso di studi
INGEGNERIA ELETTRONICA
Relatori
relatore Prof. Roncella, Roberto
Parole chiave
  • C6713Compact
  • Dmck
  • Dmdk
  • Dsp
  • Fpga
  • Mve
  • Nallatech Ballynuey2
  • Oruga
  • Quadia
  • Quixote
  • Schede ibride
Data inizio appello
14/06/2005
Consultabilità
Completa
Riassunto
CAPITOLO 1
Caratteristiche delle schede

Le schede utilizzate oltre a mettere a disposizione un numero di risorse di elaborazione congruo all’applicazione, devono essere dotate di bus ad elevato parallelismo e devono poter operare ad alte frequenze.
L’architettura del sistema di comunicazione per lo scambio dei dati entro la scheda assume un’importanza fondamentale. Oltre l’esigenza di garantire elevati bit rate, al sistema di comunicazione si richiede di occupare un numero di risorse accettabile.
Le applicazioni in tempo reale richiedono che i sottosistemi di input mantengano il ritmo del flusso di dati dagli output dei sensori.
In funzione dell’applicazione, un singolo FPGA può sostituire dieci o più processori RISC. In generale, date le notevoli varietà di ambiti di applicazione, la distinzione tra DSP in virgola mobile ("floating-point", in genere a 32 bits) e DSP in virgola fissa ("fixed-point", in genere a 16 bits) risulta fondamentale. .
Per implementare le funzioni DSP, le due tecniche più diffuse sfruttano i DSP general-purpose oppure gli FPGA.
I dispositivi Virtex II Pro di Xilinx si interfacciano con varie interfacce di sensori consentendo al flusso dati di entrare e uscire dall’FPGA a velocità elevate.





CAPITOLO 2
Le schede

2.1 C6713Compact

La C6713Compact della Orsys monta un DSP della Texas Instruments TMS320C6713 del tipo floating point che lavora a 225MHz arrivando ad una potenza di calcolo di 1350MFLOPS appoggiato da una RAM interna di 256kB.

Connettore JTAG
Il connettore JTAG viene usato durante lo sviluppo delle applicazioni, ed è associato alle interfacce JTAG di DSP e FPGA; pertanto è usato sia nella fase di debugging, sia per il download di applicazioni nel DSP, sia per il salvataggio nella memoria flash di codice per il DSP o per la programmazione dell’FPGA.
Esso diventa uno strumento molto versatile grazie alla flessibilità delle connessioni permesse dalla scheda: in particolare esiste la possibilità di legare molti dei pin di ingresso/uscita dell’FPGA a quelli del connettore micro-line e all’interfaccia del DSP.

Memoria esterna SDRAM
La C6713Compact utilizza una memoria esterna SDRAM da 64Mbyte, organizzata a 32 bit. L’accesso alla memoria esterna avviene tramite l’EMIF clock, a 90MHz.
Il PLD, tramite i suoi registri, permette di accedere alle varie parti hardware della scheda e di configurarne alcune opzioni.

EEPROM seriale
E’ presente sulla scheda anche una memoria EEPROM seriale di 256 byte, integrata col sensore di temperatura della board. Il Watchdog Timer è di default disabilitato: per attivarlo basterà porre ad 1 il bit numero 4 del registro di configurazione WDG_PHRST del PLD.

Periferiche del DSP
Il DSP montato sulla C6713Compact possiede un gran numero di periferiche integrate. • Connettore micro-line attraverso bus driver.
Di default, i segnali delle porte McBSP sono connessi al bus micro-line.

Timers
Il DSP TMS320C6713 contiene 2 timer indipendenti, a 32 bit. L’host processor e il DSP possono così scambiare dati sia attraverso la memoria interna del DSP, sia attraverso la memoria montata sulla board.
La connessione tra l’host e lo spazio di memoria del DSP è assicurata da un meccanismo DMA.

Interrupts
Quattro interrupt non mascherabili ed uno mascherabile permettono ai dispositivi della scheda o ad eventuali periferiche esterne di interrompere il programma corrente del DSP e saltare ad una routine di servizio dedicata all’interruzione.
A queste risorse fisse vanno aggiunte dei moduli inseribili dall'utente che contengono elementi di elaborazione vari: memorie RAM, FIFO (First-In First-Out), FPGA, DSP (Digital Signal Processor).


Nallatech Ballynuey2

Il connettore PCI si interfaccia dal lato interno della scheda con un FPGA Xilinx 4000XLA, preprogrammato tramite una memoria PROM; questo FPGA, detto PCI FPGA, ha il compito principale di controllore per il connettore PCI.
I dati scambiati con il PC host vengono trasferiti dal PCI FPGA ad un'altro FPGA detto User FPGA o On Board FPGA.
Lo User FPGA presente sulla scheda in dotazione è uno Xilinx Virtex-E XCV600. Il Backplate IO connector può essere usato per collegare la scheda ad altri dispositivi hardware esterni; il connettore è del tipo a 68 piedini.
Il clock della memoria ZBT viene fornito dallo User FPGA, e deriva da uno dei tre clock della scheda entranti nell’ On Board FPGA.

Moduli DIME e struttura dei Bus

I moduli DIME (DSP and Image Processing Module for Enhanced FPGA), sono i principali elementi di elaborazione a disposizione della Ballynuey.
Il SYS Bus è adibito al trasporto esclusivo di segnali di dato, non può essere usato ad esempio per portare segnali di clock da un punto all'altro del sistema.
Generalmente questo Bus viene diviso in due bus a 32 bit: Il bus SYSVIN (System Video In) e il bus SYSVOUT (System Video Out).
Il GEN IO Bus (Generic Input Output Bus) ha caratteristiche molto simili al SYS Bus. Il bus ADJ (Adjacent bus) connette ogni modulo DIME con gli altri due moduli DIME adiacenti. Si divide in due bus, entrambi con parallelismo 32, detti ADJVIN (Adjacent Video In Bus) e ADJVOUT (Adjacent Video Out Bus).
Il Bus ADJVIN di un modulo DIME corrisponde al bus ADJVOUT del modulo DIME precedente; ovviamente il bus ADJVOUT di un modulo DIME corrisponde al bus ADJVIN del modulo DIME successivo.

La scheda Ballynuey2 è dotata di tre diverse reti di clock, chiamate SYS CLK, PIX CLK e DSP CLK. La programmazione della frequenza avviene tramite il DIME Configuration Software GUI oppure tramite la funzione DIME Set-Oscillator-Frequency della DIME Software Library.

Le reti di reset sono comandate a livello hardware dal PCI FPGA, mentre a livello software dal DIME Configuration Software oppure da funzioni apposite della DIME Software Library.


Il modulo BallySharc2

Modulo BallySharc2.
Sono presenti tre memorie RAM di dimensioni medio-alte, collegate come periferiche ai DSP e all’FPGA. I DSP ricevono il clock dalla rete del DSP CLK, oppure da un oscillatore al quarzo. Oltre i due bus sopraccitati gli Sharc hanno ognuno sei canali di comunicazione di tipo parallelo a 10 bit, detti Link Port, e due canali di tipo seriale a 6 bit. Un primo canale parallelo si connette ad un header , consentendo la comunicazione fra gli Sharc e dispositivi hardware esterni alla scheda. Il Link Port sul DIME bus del DSP0 si connette allo User FPGA, mentre quello del DSP1 ad un altro modulo DIME. Dei collegamenti seriali, uno connette i DSP fra loro, mentre l'altro è diretto alla DIME FPGA.
Il reset agli Sharc arriva direttamente dal CPLD e come si può notare è distinto dal segnale di reset della DIME FPGA, collegato al system reset della scheda, e comandabile via software.
Alcuni segnali di controllo dei DSP sono connessi direttamente al BallySharc FPGA. Il primo metodo sfrutta la catena JTAG dei DSP; i segnali μP TDI (Test Data In) e μP TDO (Test Data Out) sono infatti connessi al μP JTAG Connector della scheda Ballynuey2.
La DIME FPGA si interfaccia al resto del sistema: oltre il SYS BUS verso lo User FPGA, i bus ADJVIN e ADJVOUT ad altri moduli DIME si hanno 2 SLink, uno diretto allo User FPGA(SLink0) e uno ad un modulo DIME(SLink1), e altri due PLink, diretti a due moduli DIME diversi.
La DIME FPGA può connettersi ad un dispositivo esterno tramite il J1 I/O Header. La memoria, divisa in due banchi, è comandata esclusivamente dalla DIME FPGA.


Il modulo BallyBlue

Oltre il modulo BallySharc sulla scheda Ballynuey2 sono presenti due moduli DIME BallyBlue. Come si può notare solo uno degli FPGA ha accesso ai DIME bus, questo FPGA viene pertanto definito DIME FPGA o primary FPGA, mentre l'altro è detto secondary FPGA.
I bus cui ha accesso il DIME FPGA sono quelli più volte citati : SYS BUS, ADJ BUS, GEN IO BUS, 4 PLink e 2 SLink. Diversamente dal modulo BallySharc, tutti i 20 bit del GEN IO BUS sono disponibili per applicazioni utente. I due FPGA sono connessi tramite un bus a 101 bit, completamente programmabile. Il modulo BallyBlue fornisce un segnale di clock indipendente ad entrambe le SDRAM, tramite il secondary FPGA, tuttavia non è conveniente usare regimi di clock diversi, soprattutto ad alte frequenze. Il secondary FPGA può scambiare dati con dispositivi esterni alla scheda tramite un connettore a 49 bit; il collegamento è completamente programmabile dall'utente.
La configurazione e la gestione della scheda Ballynuey2 avviene tramite l'uso di pacchetti software eseguiti dal PC host, il quale dialoga con la scheda tramite l'interfaccia PCI.


ORUGA
Scheda Oruga.
La scheda possiede un set molto completo di periferiche per una veloce integrazione del sistema compresi ingressi e uscite digitali, porte dati esterne e sincronismi per più schede.
Una modalità di decimazione supporta anche 2 stream concorrenti, uno a bassa velocità e l’altro ad alta velocità per un utilizzo ottimizzato del bus e della banda del CPU così come della CPU host.
Oruga è una scheda a 64 bit/33MHz PCI che supporta operazioni burst da 254 Mbyte/s da e per la memoria del PC host, ed è anche compatibile con un bus PCI a 32 bit.
La scheda presenta anche numerose caratteristiche per una facile integrazione del sistema: 64 bit di ingresso e uscita digitale d’uso generale, una porta veloce e bidirezionale FIFO esterna per i dati e una porta SyncLink/ClockLink per una facile sincronizzazione di più schede o hardware esterno.
Il controllore DMA pilota 16 canali indipendenti che alleggeriscono il carico dati della CPU.
Sul chip sono presenti inoltre 2 timer da 32 bit.
Le risorse sulla scheda includono una Sdram a 32 Mbyte, 3 timer a 24 bit, una DDS base dei tempi da 0 a 25 MHz, un’interfaccia PCI a 33 MHz con buffer FIFO.
Un chip logico della Xilinx controlla i convertitori analogici, i segnali di trigger start-stop e i 32 bit di ingresso-uscita digitali.
Il firmware include il buffering FIFO dei dati A/D, la correzione digitale del guadagno e dell’offset e la decimazione dei canali a bassa velocità.
Un secondo dispositivo Xilinx pilota l’interfaccia PCI, la matrice di selezione della base dei tempi, l’interfaccia della porta FIFO e gli altri 32 bit di I/O digitali.
Per i dati ad alta velocità i segnali di trigger per la base dei tempi possono essere scelti fra molte sorgenti di clock: DDS su scheda, i timer del DSP, i timer logici, clock esterno, un pin SyncLink/ClockLink o da comando software.
Il campionamento dei dati è definito con segnali di start e stop che di base applicano una maschera o una finestra sul segnale di clock della base dei tempi.


Scheda MVE.

L’architettura della scheda è costituita da vari moduli: DSP, FPGA, Memoria, Video input, Video output, I/O analogico, Periferiche.
Il DSP è il componente su cui si basa la scheda.
Oltre ad una ragguardevole potenza di calcolo, il TMS320C6415 possiede anche abbondanti risorse per l’interfacciamento fra cui: un bus a 64 bit, un bus a 16 bit, un bus PCI a 32 bit, tre seriali sincrone multicanale.
Per ultimo, un evoluto controllore DMA a 64 canali permette una complessa gestione del flusso dei dati.
Un banco da 4MB, 64-bit, 133MHz di memoria SBSRAM.
Un banco da 512MB, 64-bit, 133MHz, di memoria SDRAM, costituita da un modulo DIMM opzionale. Il dispositivo permette inoltre di interfacciare la scheda ad un modulo di pre-processing.
Entrambi i buffer sono collocati nella memoria interna del DSP. Infine, i dati sono spostati nel buffer di playback sul processore grafico attraverso il bus PCI.



Scheda Quadia.
Le altre risorse on chip includono un’interfaccia PCI a 32 bit, due porte McBSP, 64 canali DMA, 3 timer e la porta HPI.
Ogni DSP ha una propria SDRAM da 133 Mhz 64 Mb mappata sul bus a 64 bit EMIF-A. Questo ampio bus è la scelta migliore per l’utilizzo della memoria dedicata e per ottimizzare l’andamento dei task.
La maggiore innovazione della architettura della Quadia risiede nell’alta connettività fra i DSP, gli FPGA, l’host e l’hardware esterno.

DMDK
Il nuovo DSP DM642 della Texas Instruments appartiene alla famiglia DigitalMedia che è basata sul potente C64.

Si nota al centro della scheda il DSP TMS320DM642 della Texas Instruments con frequenza 600 MHz
Una Sdram da 32 Mb con frequenza di lavoro di 133 MHz affiancata a una flash da 4 Mb.
Interfaccia seriale per i dati: McASP, I2C.


DMCK
La scheda DMCK è una scheda completa che usa sia l’ FPGA che il DSP, per una vasta gamma di applicazioni, incluse, quelle nel campo video e audio, e applicazioni a banda larga, radiodiffusione, video-sicurezza, campo medico, militare,del trasporto, industriale, ecc....
La scheda sfrutta un DSP della Texas Instruments, il DM642, che lavora a 600 MHz, con 32 Mb di Sdram e 4 Mb di memoria Flash.

La piattaforma hardware include delle entrate e uscite audio e video, connesse sia al DSP che all’FPGA, così il trattamento dei dati può essere sviluppato su DSP e successivamente portati su FPGA.

Quixote.
Quixote è una scheda a 64 bit per rilevare, generare e coprocessare segnali; combina un DSP C6416 con un Virtex 2 FPGA, utilizzando il meglio dei due mondi nella tecnologia del processamento del segnale per avere un’estrema flessibilità e efficienza.
Quixote 1 è dotato del nuovo DSP TMS320C6416 della Texas Instruments che utilizza l’ultima architettura a virgola fissa a 32 bit nel C6000 series. Lavorando a 1 GHz, questo DSP offre un processamento del segnale a 8000 MIPS. L’interfaccia a 32 bit sul chip PCI è interfacciata all’host bus tramite un ponte PCI e connesso allo SPARTAN 2 e al PMC.
L’FPGA è caricato con tutte le funzioni che controllano le sue interfacce come il set up della conversione della base dei tempi, la regolazione digitale del guadagno e dell’offset, l’interpolazione dei dati, il controllo delle FIFO, il controllo della base dei tempi PLL, e il controllo del trigger.
Il range della frequenza di uscita è 50-105 MHz. La scheda monta un DSP TMS320C6713 che lavora a 225MHz appoggiato da una memoria di 32 Mb a 100Mhz. Il DSP comunica con un FPGA XC2V3000.

La scheda monta un DSP della Texas Instruments, il TMS320C6701, che lavora a 150 MHz arrivando a 1 GFlops. L’FPGA è un VirtexII della Xilinx, con connettore Jtag e 16 Mb di memoria Sdram.


CAPITOLO 3
Analisi sistemi ibridi Dsp-Fpga

Tutte le schede, descritte si sono dimostrate uno strumento flessibile e potente per la realizzazione di sistemi di elaborazione per applicazioni sia di tipo intrachip che di tipo SoC (System On a Chip), che utilizzano dispositivi DSP e FPGA.
Fra le caratteristiche positive delle schede si possono citare:
Il numero elevato di risorse di elaborazione programmabili, sia hardware che software.
Il numero elevato di risorse di comunicazione (bus) fra i vari dispositivi di tipo FPGA e DSP e la loro disposizione funzionale entro la scheda.
La possibilità di trasferire i dati su bus ad elevate frequenze e utilizzando dei protocolli di comunicazione sincroni.
La disponibilità di reti di clock indipendenti e programmabili in vari modi, sia per la sorgente del segnale di clock, sia per la frequenza di tale segnale, specialmente nella Nallatech Ballynuey2.
La possibilità di gestire le schede da PC host tramite un'ampia libreria di funzioni software.
La disponibilità di un ampio numero di connettori su scheda, per l'interfacciamento con dispositivi esterni.
Un aspetto negativo che bisogna considerare per quasi tutte le schede è la banda ridotta sul canale di comunicazione fra PC host e scheda (User FPGA), a causa dell'interfaccia PCI a 33 MHz

DSP-FPGA
L’approccio DSP e quello FPGA si differenziano fortemente; il DSP è un processore specializzato programmato tipicamente in C ma viene usato talvolta anche l’Assembler, specialmente quando non vengono soddisfatte le specifiche di real time.
Si adatta molto bene a compiti estremamente complessi ma è limitato nelle prestazioni dalla frequenza di clock e dal numero di operazioni utili che può svolgere ad ogni clock.
Come esempio si può prendere in considerazione un TMS320C6201, che ha due moltiplicatori e una frequenza di funzionamento di 200 MHz, così si possono raggiungere 400M moltiplicazioni al secondo.
Al contrario un FPGA è un “sea of gates”, che viene programmato connettendo i vari gates tra loro per formare multiplexer, registri, sommatori ecc…
Tutto questo è svolto a livello di diagramma a blocchi, e molti di questi possono essere di alto livello, si parte da un singolo gate fino ad arrivare a un FIR o FFT.
Le prestazioni in questo caso sono limitate dal numero di gates che possiede ciascun FPGA e dalla frequenza di clock, così, per esempio un 200K gate della Virtex con una frequenza di 200 MHz può implementare dieci moltiplicatori da 16 bit.
Quando si hanno alte frequenze di campionamento, oltre qualche MHz, un DSP può eseguire solo operazioni molto semplici sui dati mentre un FPGA non ha nessun problema.
Con basse frequenze di campionamento la situazione si inverte, il DSP può implementare in maniera massiccia programmi complessi che sarebbero difficili da far eseguire all’FPGA.
Infatti a basse frequenze il DSP risulta essere più funzionale, può mettere in coda i vari dati, assicurando che tutti quanti vengano elaborati, anche se sarebbero presenti delle latenze prima di venire trattati.
Al contrario l’FPGA non può gestire così tanti dati, ciascuno di essi deve avere un hardware a lui dedicato anche se ogni singolo dato può essere trattato allo stesso tempo degli altri.
Se è richiesto un “context swith” il DSP può implementarlo diramandolo a una nuova parte del programma, mentre un FPGA ha bisogno di costruire risorse dedicate per ciascuna configurazione.
Se le configurazioni sono piccole allora possono coesistere allo stesso tempo nello stesso FPGA.
Configurazioni più grandi fanno sì che l’FPGA abbia bisogno di essere riconfigurato, processo che necessita di molto tempo.
Un DSP può prendere un programma standard in C ed eseguirlo. Questo codice C può avere un alto livello di complessità, cosa invece difficile da implementare con un FPGA.
Infine un FPGA è programmato come diagrammi a blocchi, dove il flusso dei dati è facilmente osservabile. Un DSP invece è programmato con un flusso sequenziale di istruzioni.
Molti sistemi di “signal processing” infatti nascono come diagramma a blocchi. Attualmente riportando il diagramma a blocchi ad un FPGA può risultare più semplice che convertirlo in codice C per il DSP.
Quindi quando si deve compiere una scelta fra DSP e FPGA la prima cosa da chiedersi è la frequenza di campionamento della parte del sistema interessata.
Se è maggiore di qualche MHz l’FPGA è la scelta naturale.
Si analizza se il sistema è già in codice C. Se così è un DSP può implementarlo direttamente; certo non sarà la soluzione con prestazioni migliori ma sarà molto più veloce a svilupparsi.
Un’altra cosa importante prima di effettuare una scelta è vedere la frequenza dei dati del sistema. Se è maggiore di 20-30 Mbyte per secondo allora l’FPGA sarà in grado di trattarli nel migliore dei modi.
Un aspetto importante che rende bene l’idea della differenza tra i due dispositivi è la presenza o meno di operazioni condizionate. Se non è presente nessuna di queste operazioni allora l’FPGA risulta perfetto. Se invece se ne riscontrano parecchie di queste operazioni un’implementazione software può essere l’ideale.
L’FPGA quindi viene usato quando abbiamo di fronte algoritmi ripetitivi mentre algoritmi più irregolari e meno standard vengono trattati con il DSP.
Un ulteriore analisi può essere fatta a seconda che il sistema usi o meno floating point. Infatti se così è questo fattore gioca in favore al DSP, nessun “core” della Xilinx ad esempio supporta floating point al giorno d’oggi, sebbene possa essere progettato personalmente.
Molti componenti complessi potrebbero non essere disponibili; sia i DSP che gli FPGA offrono librerie con blocchi base a disposizione come blocchi FIR e FFT,e questo può influenzare la decisione su un approccio anziché su un altro. In realtà molti sistemi sono composti da tanti blocchi e, alcuni di questi sono meglio implementati nell’FPGA altri nel DSP. CAPITOLO 4
Tendenze

FPGA per applicazioni DSP
Un paio d’anni fa era stato scritto che gli FPGA sarebbero entrati prepotentemente nelle applicazioni DSP. Infatti al giorno d’oggi si possono trovare blocchi DSP embedded negli FPGA , ad esempio Stratix di prima generazione dell’Altera. Ora gli FPGA sono divenuti i protagonisti del mercato DSP. Al posto di una matrice di processori DSP, vengono utilizzati in misura sempre maggiore un singolo DSP con un coprocessore FPGA per realizzare le applicazioni di elaborazione del segnale più impegnative. [1]

La tendenza appena descritta trova una conferma tangibile nei recenti seminari relativi a Code: DSP focalizzati sui coprocessori basati su FPGA per applicazioni di elaborazione dell’immagine e dei segnali video.
DSP Builder, infine, mette a disposizione dei progettisti DSP un flusso di progetto semplice e intuitivo che permette di risolvere i problemi di integrazione e ridurre il time to market.


File