1
INTRODUZIONE
L’elaborazione numerica dei segnali (nota come Digital Signal Processing, DSP) riveste un
grande importanza e una indiscussa popolarità nei sistemi elettronici che ormai ci circondano
su ogni fronte tecnologico. L’elevata potenza di calcolo a disposizione in dimensioni ridotte e
con costi vantaggiosi permette di realizzare sistemi che offrono nuove funzionalità,
impensabili fino a qualche decina di anni fa, oltre che soppiantare complessi circuiti
analogici. Nell’ambito delle telecomunicazioni il DSP ha trovato un campo tecnologico su cui
evolversi rapidamente, rivoluzionando il modo di concepire la comunicazione e la
realizzazione stessa degli apparati di trasmissione e ricezione e accelerando lo sviluppo verso
la direzione della software defined radio, un sistema di comunicazione, cioè, interamente
costruito via software.
In questo Tesi sono stati implementati sistemi di trasmissione basati su tecnica di
modulazione OFDM, con sottoportanti modulate BPSK e M-QAM, su piattaforma DSP
C6713DSK della Texax Instrument con successiva comunicazione Real-Time tra PC e scheda
DSP e tra due schede DSP.
L’OFDM è una tecnica di modulazione multi-portante che permette di raggiungere elevate
prestazioni a costi ridotti grazie alla disponibilità di circuiteria dedicata all’elaborazione
numerica. Tra i vantaggi principali della modulazione OFDM possiamo citare l’elevata
efficienza spettrale, la robustezza nei confronti del fading selettivo in frequenza (dovuto
principalmente ai cammini multipli) e dell’interferenza e la possibilità di realizzare reti a
singola frequenza consentendo sia su supporto fisico che a onde radio. Per queste ragioni,
l’OFDM è oggi la tecnologia maggiormente utilizzata nei sistemi di comunicazione digitali
quali, ad esempio, Wi-Fi, DVB-T, WiMax, ADSL, ecc. e, quindi, la tecnologia considerata in
questa tesi per l’implementazione su scheda DSP.
La presenti tesi è argomentata come segue.
Il Capitolo 1 descrive la scheda DSP a livello hardware fornendo una panoramica dei
dispositivi installati e delle funzionalità messe a disposizione dell’utente. Inoltre si occupa di
illustrare il software fornito a corredo della scheda, il suo utilizzo, e la possibilità di
programmazione assistita mediante ambiente di lavoro integrato su PC per una veloce
prototipazione. Si introduce la programmazione mediante codice di alto livello e in particolare
il software Simulink di Mathworks.
2
Nel Capitolo 2 è descritta la modulazione OFDM da un punto di vista puramente teorico,
fornendo le relazioni che legano i domini temporali e frequenziali su cui fare l’elaborazione
del segnale. Si citano inoltre degli accorgimenti mirati a migliorare la robustezza del sistema e
facilitare l’operazione di decodifica dal lato del ricevitore. Vengono, inoltre, introdotte le
caratteristiche principali dello standard WiMAX IEEE 802.16, come riferimento reale per il
sistema OFDM da implementare.
Il Capitolo 3 tratta l’implementazione di sottosistemi di telecomunicazione (trasmissione con
modulazione tradizionale, quale la BPSK e QAM, filtraggi, ecc.). In questo modo è stato
possibile testare le funzionalità e la capacità di calcolo del processore della scheda oltre che
della componentistica presente sulla scheda stessa. Inoltre descrive la realizzazione del
sistema di trasmissione OFDM con modulazione BPSK e QAM. In questa sezione si affronta
la progettazione del trasmettitore e del ricevitore.
Il capitolo 4 si occupa della ricetrasmissione del sistema dati multi-portante OFDM tra due
schede DSP C6713DSK e di mettere in evidenza le problematiche che nascono in un
collegamento di questo tipo.
Il processo si appoggia sia alla pura simulazione mediante PC, sia al test reale su scheda
hardware. Questo ci permette di individuare i problemi che di volta in volta si presentano,
analizzarli passo-passo e trovare una soluzione ingegneristica che li possa risolvere.
3
Capitolo 1
Digital Signal Processing (DSP)
Con il termine DSP (Digital Signal Processing) o Elaborazione Numerica dei Segnali, si
intende un qualunque processamento numerico di segnali numerici. Il sistema specializzato
per l’elaborazione numerica di segnali digitali è chiamato con la medesima sigla DSP (Digital
Signal Processor): si tratta di un microprocessore ottimizzato per eseguire in maniera
estremamente efficiente e versatile operazioni matematiche e/o logiche (ad esempio sequenze
di istruzioni ricorrenti come somme, moltiplicazioni e traslazioni) su una successione di
numeri rappresentativi del segnale.
I processori di segnali digitali possono essere utilizzati da diversi Hardware, infatti sono usati
per un vasto campo di applicazioni, sia in ambito consumer che a livello industriale.
Le caratteristiche principali sono:
• elaborazioni real-time
• ottimizzazione per operazioni di streaming dati
• modeste dimensioni
• basso consumo di potenza
• elevate prestazioni
• complessità ridotta al minimo
• separazione fra memoria programmabile e memoria dati (architettura HARVARD)
• Nessun supporto hardware per il funzionamento in Multitasking
• ottimizzazione per algoritmi di elaborazione numerica dei segnali (FFT, filtri…)
• Possibilità di effettuare l’ accesso diretto (DMA) alla memoria di un Host
• Risposta indipendente alla temperatura della scheda
Le operazioni numeriche sul segnale, anch’esso numerico, avvengono in real-time, attraverso
operazioni composte di tipo MAC (Multiply And Accumulate) che sono eseguite in un unico
ciclo di clock tramite un hardware specializzato.
Inoltre implementano speciali istruzioni dedicate denominate operazioni SIMD (Single
Instruction, Multiple Data) per poter trattare contemporaneamente piu dati.
I DSP sono quindi classificati a seconda dell'ampiezza e del tipo di dato che sono in grado di
processare: si parla ad esempio di DSP a 32, 24 oppure a 16-bit; a virgola fissa o mobile.
4
Ogni DSP è quindi adatto ad applicazioni specifiche: ad esempio, i DSP a 16-bit a virgola
fissa sono impiegati per il condizionamento di segnali vocali e trovano il loro principale
campo di applicazione nella telefonia (fissa e mobile), mentre i DSP a 32-bit in virgola
mobile, avendo una dinamica molto superiore, sono principalmente impiegati
nell'elaborazione di immagini e nella grafica tridimensionale.
L’impiego dei DSP ha consentito lo sviluppo di hardware a basso costo. Pertanto li possiamo
trovare nei telefoni cellulari, nei fax/modem, nelle unità dei dischi rigidi, nelle radio, nelle
stampanti, negli apparecchi acustici, nei lettori MP3, nelle televisioni ad alta definizione
(HDTV), nelle telecamere digitali, e così via.
Tipiche applicazioni sono rappresentate da: tecnologie spaziali, medicina, commercio,
telefonia, multimedialità e applicazioni militari.
1.1 La scheda DSP TMS320C6713 DSK
La scheda utilizzata nel corso della tesi, per implementare i vari modelli di elaborazione
numerica, è un sistema DSP fornito dalla Spectrum Digital e rappresenta una piattaforma di
sviluppo a basso costo per applicazioni basate su processori della famiglia TMS320C6000. La
CPU DSP, prodotta dalla Texas Instrument (TI), permette di realizzare algoritmi numerici
con alta precisione di calcolo data la capacità di eseguire operazioni in virgola mobile
(floating point) già in hardware.
Il TMS320C6713 è una CPU basata su architettura avanzata (VLIW : Very Long Instruction
word) e quindi eccellente per applicazioni multi-funzione e multi-canale (esegue fino a 8
istruzioni da 32bit per ciclo). Lavorando a 225MHz svolge fino a 1350 milioni di operazioni
per secondo in virgola mobile (~1300 MFLOPS) e 1800 milioni di istruzioni per secondo
(1800 MIPS). Per avere un riferimento della capacità di calcolo a disposizione nel DSP si
osserva che un Pentium4 a 3.2GHz arriva a circa 3000 MFLOPS.
Usa un’architettura basata su cache a due livelli, la prima di 4K-Byte e la seconda di 256K-
Byte di cui 192 Byte utilizzati come Mapped SRAM. Possiede un elevato numero di
periferiche integrate: due Multichannel Audio Serial Ports (McASPs), due Multichannel
Buffered Serial Ports (McBSPs), due Inter-Integrated bus Circuit (I2C), un modulo dedicato
al General-Purpose Input/Output (GPIO), due timers, una host-port interface (HPI), un
generatore di clock con oscillatore PLL e una external memory interface (EMIF) capace di
interfacciarsi alla SDRAM a 32bit e a tutte le altre periferiche.
5
La ALU lavora con numeri floating-point a 32 bit di cui 24 sono bit di mantissa e i restanti 8
di esponente permettendo di raggiungere precisioni di calcolo elevatissime oltre ad un grande
range dinamico.
Come si può osservare dalle Figura 1.2, la scheda C6713 DSK oltre alla CPU include anche:
• un ADC/DAC AIC23 High-quality 24-bit stereo codec
• 16 Mbytes di DRAM (Dynamic Random Access Memory)
• 512 Kbytes di memoria Flash non volatile (di cui 256 Kbytes usabili nella configurazione
di default)
• una CPLD (Complex Programmable Logic Device) necessaria a collegare “logicamente”
i vari dispositivi
• Connettori standard di espansione per schede compatibili
• Emulatore J-TAG (Joint Test Action Group) con interfaccia USB
• 4 jack audio per ingresso microfono, line-in e uscita speaker e line-out
• 4 LEDs e 4 switches DIP
Figura 1.1 – Scheda TMS320C6713
Inoltre, dagli schemi a blocchi di e si possono osservare tutte le connessioni fra i vari
dispositivi della scheda.
6
Figura 1.2 – Schema a blocchi della scheda
Al fine di programmare la scheda si sono presi in considerazione i seguenti software di
sviluppo:
- Simulink di Matlab
- Code Composer Studio (CCS) fornito del DSK della scheda
Simulink è stato utilizzato sia per simulare ciò che si voleva implementare, sia per generare ad
alto livello il codice da inviare al DSP attraverso il CCS.
CCS semplifica la progettazione e l’analisi software per i DSP della famiglia TMS320 grazie
all’alta efficienza di un compilatore C, un assemblatore ottimizzato, un debugger e software
complementari di supporto.
1.2 Software per la simulazione e l’implementazione dei
modelli
1.2.1 Simulink
Simulink è l’ambiente di programmazione grafico associato a Matlab ed è particolarmente
indicato per costruire schemi a blocchi di sistemi grafici lineari e non lineari e per eseguire la
loro simulazione.
Questo programma fornisce all’utente un ambiente grafico interattivo e una libreria molto
ampia con lo scopo di progettare, simulare e testare una serie di sistemi tempo-varianti,
includendo :
7
- le comunicazioni
- il signal processing
- il video processing
- l’image processing
Simulink è uno tra i programmi di simulazione attualmente piø utilizzati data la sua facilità
d’uso e le sue caratteristiche principali, tra le quali si possono ricordare:
- estese librerie di blocchi predefiniti
- editor grafico interattivo per l’assemblaggio dei diagrammi a blocchi
- abilità di riarrangiare schemi complessi segmentando i modelli attraverso gerarchie di
design di componenti
- ricercatore di modelli per navigare, creare, configurare e cercare tutti i segnali,
parametri, proprietà per generare il codice
- APIs (applicazioni per la programmazione delle interfacce) che permettono la
connessione con altri programmi di simulazione
- blocchi di funzioni per portare gli algoritmi di Matlab all’interno di Simulink
- diversi tipi di simulazione (normale, accelerata, accelerata rapida) per mandare in
esecuzione la simulazione o per compilare il codice C usando risolutori fissi (fixed-
solvers) o variabili (variable-solvers)
- debugger grafico per esaminare i risultati della simulazione
- pieno accesso a Matlab per l’analisi e la visualizzazione dei risultati
- tools per il riconoscimento di errori negli schemi a blocchi o nei codici.
Simulink include una vasta libreria di funzioni che vengono spesso usate nella creazione di
modelli in un sistema.
Questa include:
- blocchi dinamici di tipo continuo o discreto
- blocchi che svolgono funzioni algebriche come somma, prodotto, ecc
- blocchi strutturali come Mux, Switch e bus di sistema.
L’utente può utilizzare questi blocchi oppure crearne di nuovi.
Blocchi addizionali estendono Matlab con funzionalità specifiche per le comunicazioni, radio
frequency, elaborazione di segnali, elaborazione video e di immagini e per altre svariate
applicazioni.
La scelta di tutti questi blocchi avviene attraverso il Simulink Library Browser come si può
vedere in Figura 1.3.
8
Figura 1.3 – Simulink Library Browser
1.2.2 Definizione e uso di Segnali e Parametri
Simulink offre la possibilità di controllare le proprietà sia dei segnali che dei parametri
associati al modello che si desidera implementare.
I segnali sono quantità tempo-varianti rappresentati da linee che connettono i diversi blocchi.
I parametri cono coefficienti che aiutano a definire la dinamica e il comportamento del
sistema. Entrambi possono essere specificati direttamente nel diagramma di lavoro oppure
separatamente nel dizionario dati.
Si possono definire le seguenti specifiche per segnali e parametri:
- tipi di dati: single, double, con segno o senza segno, interi a 8-, 16- o 32-bit
- dimensioni: scalari, vettori, matrici, o array a N dimensioni
- tipi di valori: complessi o reali
- range minimo e massimo
- valore iniziale.
La tipologia dei segnali può essere impostata come sample-based o frame-based, per abilitare
l’esecuzione in maniera piø rapida delle applicazioni in Simulink e SPB (Signal Processing
Blockset).
Il programma offre anche la possibilità di determinare il livello delle specifiche dei segnali: se
infatti non si scelgono determinate caratteristiche, Simulink provvede autonomamente a
9
ricavarle attraverso la realizzazione dello schema a blocchi, controllando di volta in volta
l’integrità dei dati.
1.2.3 Testare una simulazione
Dopo aver costruito il modello, è possibile, in tempo reale, controllarne il comportamento
dinamico ed i risultati attraverso una serie di tools, come ad esempio risolutori fissi (fixed-
step) o variabili (variable-step), un debugger grafico e un profiler per il modello.
I risolutori sono algoritmi di integrazione numerica che elaborano nel tempo le dinamiche di
sistema usando le informazioni contenute nel modello.
Tra questi i piø importanti sono quattro:
- risolutori tempo-continui (per segnali analogici)
- risolutori tempo-discreti (per i segnali digitali)
- risolutori ibridi (per segnali misti)
- risolutori per sistemi multi-rate di qualsiasi grandezza.
Altri possibili elementi da settare sono i tempi di inizio e di fine simulazione, il salvataggio
dei dati e le informazioni sull’ottimizzazione del modello.
In Simulink troviamo anche un debugger, cioè un tool per l’analisi dei risultati e per la
diagnosi dei comportamenti inaspettati del modello.
Il debugger riesce a determinare i problemi presenti nel modello misurando, all’interno della
simulazione, mediante l’utilizzo di elementi chiamati “metodi”, i risultati che si dovrebbero
avere in quell’istante.
I metodi sono funzioni specifiche che Simulink adotta per risolvere un modello ad ogni passo
della simulazione; i blocchi, ad esempio, sono formati da metodi multipli.
Questo strumento di Simulink lascia all’utente la possibilità di porre dei breakpoints nel
modello e di controllare l’esecuzione della simulazione. Può essere lanciato da una interfaccia
grafica (GUI) oppure dalla linea di comando di Matlab.
L’interfaccia grafica fornisce una chiara e colorata vista dello stato di esecuzione del modello.
Mentre questo è in esecuzione, si possono visualizzare le informazioni sugli stati dei blocchi,
sugli ingressi e le uscite di quest’ultimi.
Per il lancio vero e proprio del modello viene scelto di volta in volta uno tra i seguenti tipi di
simulazione:
- normale (di default): simula il modello senza cambiamenti
10
- accelerato: aumenta la velocità di esecuzione creando un codice obiettivo che viene
compilato lasciando comunque la possibilità di cambiare alcuni parametri
- accelerato rapido: simula il modello ancora piø velocemente del secondo modo ma
offre meno spazio a cambiamenti di parametri e di solito il codice viene generato in un
ambiente diverso da Simulink.
1.2.4 Libreria Embedded Target
per la piattaforma TI_TMS320C6000 DSP
L’Embedded Target per la piattaforma TI TMS320C6000 DSP è uno strumento che integra in
Simulink e Matlab i tools della Texas Instruments eXpressDSP.
La libreria “Link to Code Composer Studio” per Matlab permette di sviluppare e verificare
l’elaborazione digitale del DSP tramite la stesura di un codice generato dal “Real-Time
Workshop (RTW)” presente in Simulink.
Il Real-Time Workshop, partendo dallo schema a blocchi ad alto livello realizzato in
Simulink, traduce il codice in linguaggio C e, passandolo al Code Composer Studio (CCS) (di
cui si parlerà in dettaglio nel seguito), lo manda in esecuzione sul processore digitale di
segnali (DSP). La compilazione vera e propria del codice binario per la CPU del DSP
avviene, quindi, tramite l’ambiente di sviluppo chiamato CCS.
Figura 1.4 - Livelli di sviluppo del codice
Schematicamente i vari livelli di sviluppo sono collegati tra di loro come si può vedere dalla
Figura 1.4.
Per costruire in Simulink un progetto che andrà poi mandato in esecuzione sulla scheda, la
prima operazione da compiere è di aggiungere al nostro sistema il tipo di scheda sul quale
11
andremo poi a testare il nostro modello. In questo caso selezioniamo la C6713SDK come da
Figura 1.5; in tal modo Simulink è in grado di settare determinati parametri dell’RTW e di
generare codice specifico per l’hardware voluto.
Figura 1.5 - Selezione del target hardware
Il blocco C6713DSK permette di settare i seguenti parametri illustrati in Figura 1.6.
Figura 1.6 - Parametri TI C6000 Target DSP
Nella libreria messa a disposizione dalla TI, dopo aver scelto la famiglia di DSP che include il
TMS320C6713 DSK, si possono scegliere i vari blocchi che descrivono ad alto livello i
componenti della scheda come si può notare in Figura 1.7.