Académique Documents
Professionnel Documents
Culture Documents
E REGGIO EMILIA
Relatore:
Chiar.mo Prof. Ing. Giorgio Matteo Vitetta
1 Introduzione 1
1.1 Contenuti della tesi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
4
INDICE 5
5 Conclusioni 137
Ringraziamenti 143
6 INDICE
Capitolo 1
Introduzione
1
2 1. Introduzione
in numerosi standard moderni per trasmissione ad alta velocità: DAB, DVB, IEEE
802.11a/g, IEEE 802.16, IEEE 802.20.
Nell’implementazione per DSP si è quindi sviluppato tale schema di modulazione,
che viene descritto nella sezione 3.2.
D’altra parte però l’OFDM comporta anche una certa complessità implementati-
va (dovuta anche alle operazioni di FFT/IFFT che essa richiede) nel trasmettitore e
soprattutto nel ricevitore (dove sono necessari svariati algoritmi di sincronizzazione).
Questa complessità addizionale unita alla assenza di know-how legato alla tecnologia
FPGA (che a dispetto dei DSP richiede una differente “impostazione concettuale”) ha
fatto propendere la scelta del formato di modulazione, per quanto riguarda l’imple-
mentazione FPGA-based, su una soluzione più semplice quale quella PAM a singola
portante, che viene descritta nella sezione 4.2.
In entrambi i casi comunque è stato fondamentale l’ausilio di una simulazione ad
alto livello (nel nostro caso in MATLAB) prima dell’implementazione vera e propria.
Nelle sezioni 3.4 e 4.4 vengono quindi descritti gli sforzi profusi in tale studio per le
due differenti piattaforme hardware e per i due diversi formati di modulazione.
Nelle sezioni 3.5, 3.6, 4.5 e 4.6 vengono poi descritte nel dettaglio le implementazioni
vere e proprie.
Infine, nel capitolo 5 si propongono alcune considerazioni conclusive.
Capitolo 2
Ai fini di una migliore comprensione dei contenuti trattati nei Capitoli successivi,
vengono riportati di seguito alcuni cenni relativi ad argomenti legati alle Power Line
Communications (PLC). Per maggiori informazioni sull’argomento e in particolare sul
rumore e le interferenze presenti su questo tipo di canale si rimanda al lavoro [?].
In particolare, nel paragrafo 2.1 viene fornita una breve e generale descrizione della
struttura dei sistemi di trasmissione e di distribuzione dell’energia elettrica; nel para-
grafo 2.2, invece, viene presentato un conciso quadro relativo alla storia e alle numerose
applicazioni delle PLC, con particolare riferimento a quelle attuali. Nel paragrafo 2.3,
infine, vengono delineati i principali vantaggi e le più importanti problematiche che
caratterizzano oggi questa tipologia di sistemi.
• il terzo livello, a bassa tensione (LV: Low Voltage — al di sotto di 1 kV), porta
elettricità ai singoli utenti. Esso realizza reti a capillarità ancora più elevata
rispetto a quelle di media tensione, adattate alla distribuzione degli utilizzatori
3
4 2. Comunicazione su linee elettriche
sul territorio; queste possono essere a stella, anello o maglia. La lunghezza delle
linee a bassa tensione è dell’ordine di qualche centinaio di metri.
Gli impianti elettrici interni alle abitazioni rientrano in questo livello; essi sono
tuttavia di proprietà degli utenti e sono collegati alle linee esterne, appartenenti alle
compagnie elettriche fornitrici, attraverso opportuni contatori di energia (Meter Unit).
Dal momento che nessun utilizzatore è direttamente connesso alle linee elettriche del
primo livello, quest’ultimo viene considerato di sola trasmissione; di contro, il terzo
livello è considerato di sola distribuzione, mentre il secondo di trasmissione o di di-
stribuzione, a seconda dei casi. In prevalenza, le reti elettriche operano con segnali a
corrente alternata trifase (fanno eccezione i sistemi HVDC: High Voltage Direct Cur-
rent, utilizzati talvolta nel livello ad alta tensione) e il trasferimento di energia tra due
livelli della gerarchia avviene attraverso appositi trasformatori, che consentono una
conversione dei valori di tensione. Le linee che trasportano energia elettrica possono
essere aeree (realizzate con conduttori tipicamente non isolati, sostenuti da tralicci o
pali) oppure in cavo (realizzate con conduttori isolati, sotterranei o sottomarini).
La fig. 2.1 riassume i concetti appena esposti.
A seconda del Paese, le caratteristiche specifiche dei sistemi di trasmissione e di
distribuzione possono variare. Facendo riferimento a parametri che verranno ripresi in
seguito, ad esempio, si può dire che in Italia, in Spagna, in Germania (e, in generale,
nei paesi europei) la frequenza di rete è pari a 50 Hz (nominali) e gli avvolgimenti di
primario e secondario di un trasformatore MV/LV presentano tipicamente una confi-
gurazione trifase a triangolo/stella, con centro stella collegato a terra. Dal secondario
si irradiano le linee principali a quattro fili (tre fasi e neutro), mentre le singole deri-
vazioni possono essere anche a due fili (fase e neutro) o a tre fili (due fasi e neutro);
2. Comunicazione su linee elettriche 5
tipicamente, il valore efficace di tensione tra fase e fase è di 400 V, mentre tra fase e
neutro è di 230 V.
Negli Stati Uniti la frequenza di rete è pari a 50 Hz, mentre in Giappone è pari a
50 o 60 Hz, a seconda della regione. Il trasformatore MV/LV è caratterizzato da un
primario a due fili (una fase e neutro) e da un secondario a presa centrale a tre fili
(due fasi e neutro): tale sistema è detto a fase divisa (split phase system). Negli Stati
Uniti, l’utente può disporre di un valore di tensione efficace di 120 V tra fase e neutro
oppure di 240 V tra fase e fase; in Giappone, invece, ha a disposizione 100 V efficaci
tra fase e neutro oppure 200 V tra fase e fase.
Alcune delle considerazioni precedenti sono illustrate nella fig.2.2.
Per ragioni storiche, la struttura dei sistemi di trasmissione e distribuzione nei
paesi meno sviluppati ricalca quella dei paesi europei o quella degli Stati Uniti.
Figura 2.4: Esempio di struttura di un sistema PLC utilizzato per la building auto-
mation. EIB è acronimo di European Installation Bus, standard oggi confluito nel più
esteso (sia a livello geografico, sia a livello di contenuto) KNX.
8 2. Comunicazione su linee elettriche
so, quali ad esempio quelli della famiglia xDSL (DSL: Digital Subscriber Line) oppure
IEEE 802.16 (o WiMAX: Worldwide Interoperability for Microwave Access). La fig.
2.5 illustra un esempio di struttura di rete di accesso basata sull’utilizzo delle PLC; in
essa si può notare la presenza di una Base/Master Station, collocata all’interno della
cabina di trasformazione MV/LV, che rende possibile l’accesso ai vari utenti del livello
a bassa tensione e consente la connettività ad una rete geografica (WAN: Wide Area
Network).
Un altro settore che ha suscitato (e suscita tuttora) grande interesse è quello del
cosiddetto “ultimo metro” (“last meter”): esso è relativo alla implementazione di LAN
(Local Area Network) all’interno di edifici ed abitazioni, in grado di connettere nu-
merosi dispositivi ivi presenti. In tale ambito è possibile realizzare sia funzioni di
automazione (utilizzando sensori, attuatori e impianti come già visto per i sistemi
narrow-band), sia funzioni di comunicazioni veloci e di intrattenimento (con riferi-
mento ad esempio a telefoni, computer, stampanti, impianti video e audio, console per
videogiochi, elettrodomestici, interfacce con dispositivi che utilizzanoaltre tecniche tra-
smissive). E’ interessante osservare come la presenza di imprese concorrenti nel mer-
cato dell’energia, susseguente alla deregolamentazione, abbia portato all’idea di nuovi
e più personalizzati energy-related services, quali ad esempio tariffazioni differenziate
in base alle esigenze e ai consumi dei vari utenti [24].
Nel campo dell’“ultimo metro”, i sistemi PLC - detti anche in-house o in-home
PLC — sono risultati (e risultano oggi) essere supplementari o in competizione con al-
tri sistemi e tecniche, come reti IEEE 802.3, WLAN (Wireless LAN), Bluetooth. Nella
fig. 2.6 viene rappresentato un esempio di sistema in-house PLC; in questo è presente
una Base Station che coordina l’accesso al mezzo di ciascuno degli apparati collegati
alla rete che possiedono un modem PLC. La BS può essere collocata in corrisponden-
2. Comunicazione su linee elettriche 9
za del contatore (come illustrato) o in una qualunque altra presa elettrica. Ricerche
attuali riguardano la possibilità di utilizzare le PLC nei settori automobilistico, aereo,
satellitare, ferroviario, navale, dell’industria mineraria [28], dove, seppur con ulteriori
e specifici obiettivi, si cerca ancora una volta di sfruttare le linee elettriche preesi-
stenti per realizzare comunicazioni digitali. Al fine di ottenere sistemi caratterizzati
da velocità trasmissive dell’ordine di unità, decine o centinaia di megabit per secondo
è necessario disporre di una banda estesa decine di megahertz. In generale, è stato
mostrato (sia a livello teorico che a livello sperimentale) come l’intervallo 1†30 MHz
offra eccellenti possibilità per le applicazioni prima citate [24].
Dalla fine degli anni ’90, numerosi sono i dispositivi che il mercato ha proposto e
che riguardano le applicazioni prima descritte, soprattutto nel settore in-house: og-
gi, alcuni di questi sono capaci in linea teorica di raggiungere velocità superiori a
100 Mbit/s. Ancora diversi aspetti, tuttavia, devono essere chiariti sulla funzione di
trasferimento e sulle interferenze che caratterizzano il canale Power Line. Inoltre, è
attesa l’emanazione di standard completi che regolamentino a livello internazionale le
comunicazioni su linee elettriche a larga banda (sia in termini di tecniche trasmissive,
sia in termini di compatibilità elettromagnetica — vedi paragrafo 2.3), ma al momento
essa è solo parzialmente avvenuta.
E’ importante sottolineare, in quest’ultimo ambito, l’attività di ETSI, attraverso il
suo comitato tecnico Powerline Telecommunications (PLT), iniziata nel 1999 proprio
con lo scopo di sviluppare standard e specifiche per la fornitura di servizi di teleco-
municazione attraverso le reti elettriche, cercando di evitare interferenze con gli altri
utilizzatori dello spettro radio. ETSI ha pubblicato diversi documenti; tra questi ri-
cordiamo in particolare il primo, ETSI TS 101 867 [30], risalente al novembre 2000, in
cui si forniscono alcune indicazioni per garantire la coesistenza tra “ultimo miglio” e
10 2. Comunicazione su linee elettriche
“ultimo metro”: la modalità base prevede di utilizzare la banda 1,6†10 MHz per l’ac-
cesso e la banda 10-30 MHz per sistemi in-house. Si possono citare poi ETSI TR 102
494 [31], emanato nel giugno 2005, dove si definiscono alcune specifiche relative alla
realizzazione di modem per comunicazioni in-house, e ETSI TR 102 578 [32], emesso
nell’agosto 2008, in cui si specifica un meccanismo per evitare problemi di coesistenza
tra modem PLC e sistemi di radiodiffusione nel campo delle onde corte (Short Wave
radio broadcasting).
E’ assai significativo inoltre ricordare che nel giugno 2005 è stato creato un grup-
po di lavoro all’interno di IEEE6, denominato P1901, con lo scopo di sviluppare uno
standard per alte velocità (Broadband over Power Line: BPL), maggiori di 100 Mb/s,
relativo al livello PHY e al sottolivello MAC del sistema di riferimento ISO/OSI; es-
so si affianca a P1675 (standard relativo all’installazione e al collaudo di dispositivi
PLC, nonché al test e alla verifica dell’hardware normalmente utilizzato — già appro-
vato e pubblicato), P1775 (standard concentrato su specifiche questioni inerenti alla
misurazione delle emissioni elettromagnetiche causate da dispositivi PLC — in fase di
approvazione) , P2030 (standard contenente linee guida per energy-related services —
in fase di sviluppo) e prevede di utilizzare frequenze al di sotto di 100 MHz.
Nello specifico, da febbraio 2009 è disponibile una bozza su cui si sta lavorando
per combinare le proposte accettate nel dicembre 2008 e provenienti dai tre differenti
cluster di lavoro: in-home (IH), access (AC) e coexistence (CX). A quest’ultimo settore
è stato dato notevole rilievo, in vista di consentire una interoperabilità tra dispositivi
PLC IEEE ed altri dispositivi non conformi a detto standard; in particolare, l’attuale
sottogruppo tecnico TSG4 ha presentato nel maggio 2009 una bozza di documento in
cui si descrive Inter-System Protocol (ISP), un protocollo che permetterà la comunica-
zione tra apparati IEEE e apparati realizzati secondo lo standard ITU-T7 G.hn [28],
[29], [33].
G.hn, noto anche come G.9960, è infatti un altro importante riferimento: esso è
stato approvato da ITU-T nel dicembre 2008 (il gruppo di lavoro corrispondente ha
iniziato la sua attività nel maggio 2006) ed è relativo alla realizzazione di reti in-home
di prossima generazione su linee elettriche ed altri due tipi di mezzo cablato, doppino
telefonico e cavo coassiale. Prevede specifiche nel livello PHY (compresa l’utilizzazione
degli intervalli di frequenze 2-100 MHz, 100-200 MHz e 300-2500MHz), in parte del
sottolivello MAC e in parte del livello di rete [29].
ETSI, IEEE e ITU-T collaborano con diversi enti in tutto il mondo: limitandosi a
citare i nomi di alcuni, ricordiamo l’associazione PLCforum [34], le alleanze industriali
HomePlug e HD-PLC (High Definition Power Line Communication), le associazioni
commerciali HomeGrid forum, CEPCA (Consumer Electronics Powerline Communica-
tion Alliance) e UPA (Universal Powerline Association). HomePlug e HD-PLC hanno
emesso a loro volta standard nel passato: HomePlug 1.0, HomePlug AV e HomePlug
Command & Control (quest’ultimo a banda stretta) nel primo caso, uno omonimo
all’alleanza nel secondo.
Da ricordare, infine, la presenza dell’annuale International Symposium on Power
Line Communications and Its Applications (ISPLC), che si tiene ogni anno, dal 1997,
negli ultimi giorni di marzo o nei primi giorni di aprile, ogni volta in una diversa
città. Esso rappresenta un importante momento d’incontro, poiché in questo vengono
2. Comunicazione su linee elettriche 11
presentati i lavori di ricerca che di anno in anno spaziano in tutti i campi relativi alle
comunicazioni su linee elettriche.
La visione d’“insieme” sul canale illustrata nei punti precedenti è stata acquisita
soltanto di recente. Il problema dello sviluppo di modelli è stato infatti avvertito in
maniera significativa solo con l’avvento delle promettenti prospettive a larga banda
per i sistemi PLC, anche perché grazie alla “complessità contenuta” delle applicazioni
narrow-band, le ostilità che si verificano in banda stretta furono combattute con alcune
tecniche di trasmissione, ad esempio attraverso la modulazione FSK o alcune versioni
di quella a spettro espanso (spread-spectrum) [24], [26]. Ulteriori e più approfondite
conoscenze si sono mostrate invece necessarie per lavorare su bande di frequenza più
ampie, ad esempio fino a 30 MHz, in vista di utilizzare o sviluppare tecniche specifiche
che permettano di mitigare in maniera efficace i problemi introdotti dal canale: da qui
si comprendono i molteplici tentativi di analisi dell’ultimo decennio.
I primi approcci relativi alla descrizione della funzione di trasferimento e delle
interferenze, che hanno condotto alle osservazioni sull’attenuazione, sulla selettività in
frequenza e sulla tempo-varianza a lungo termine, nonché ad alcune considerazioni sui
disturbi additivi, si sono basate sull’ipotesi di un canale LTI (Linear Time-Invariant):
tra questi è possibile citare i noti lavori di Philipps, Zimmermann e Dostert [24], [35].
Successivamente, Cañete et al. hanno iniziato a prendere in considerazione anche la
tempo-varianza a breve termine, a partire da osservazioni sperimentali condotte su
numerosi dispositivi elettrici [36], [37], [38] e sono arrivati a concludere che il canale
è non lineare ma approssimabile attraverso un sistema LPTV (Linear Periodically
Time-Variant), con periodo pari all’inverso della frequenza di rete. In questi ultimi
lavori sono emerse anche importanti considerazioni relative alle interferenze. Nelle fig.
2.7 e 2.8 sono illustrati alcuni dei concetti appena esposti; in esse si può notare una
variazione ciclica del comportamento, mostrata in questo caso sul semiperiodo (10 ms)
del segnale alternato di potenza.
Ad oggi non è ancora presente un modello che riesca ad approssimare in maniera
completa, cioè tenendo conto di tutti i punti elencati in precedenza, la funzione di
trasferimento di un canale Power Line; consistenti, comunque, sono gli sforzi in que-
st’ambito di studio. Per rimediare alle difficoltà introdotte dal mezzo trasmissivo, nei
sistemi wide-band la scelta della tecnica di modulazione multiportante OFDM (Or-
thogonal Frequency Division Multiplexing) appare quella più adeguata. Questa infatti
presenta numerosi vantaggi rispetto alle altre tecniche potenzialmente utilizzabili; ad
esempio, consente di ottenere un’elevata efficienza spettrale e richiede ridotte necessità
di equalizzazione in ricezione rispetto a sistemi a singola portante, oppure riesce ad
adattarsi meglio rispetto a tecniche spread-spectrum in un ambiente multiutente dove
i segnali interferenti provenienti da altri sistemi PLC possono raggiungere livelli eleva-
ti. Inoltre, il problema legato all’interferenza interblocco (IBI: interblock interference)
può essere agilmente affrontato grazie al prefisso ciclico. Di contro, potrebbero esservi
emissioni elettromagnetiche rilevanti (vedi righe successive) nel caso in cui il parametro
PAPR (Peak-to-Average Power Ratio) assuma valori troppo elevati [24], [36]. Nei la-
2. Comunicazione su linee elettriche 13
vori relativi agli standard IEEE P1901 e ITU-T G.hn (ma anche in quelli di HomePlug
e HD-PLC) sono state proposte soluzioni a livello fisico proprio basate sull’utilizzo di
alcune versioni della tecnica OFDM [29]. Alle precedenti valutazioni sul canale, si
devono aggiungere notevoli problemi di compatibilità elettromagnetica (EMC: Elec-
tromagnetic Compatibility): le linee elettriche possono essere infatti considerate come
strutture “elettromagneticamente aperte” non protette a sufficienza contro l’emissione
di segnali ad alta frequenza, i quali possono interferire con i segnali prodotti da sistemi
wireless o da altri sistemi di telecomunicazione, anche PLC, operanti nelle vicinanze
e nelle medesime bande di frequenza. Facendo riferimento in particolare alla banda
1-30 MHz, numerose sono le comunicazioni radio che possono risultare disturbate: tra
queste, quelle relative a servizi di radiodiffusione nel campo delle onde medie e corte
(Medium e Short wave), a radio amatori, alla radio astronomia, ai settori aeronautico,
marittimo e militare.
L’argomento relativo alla EMC è da sempre piuttosto “scottante”: senza entrare
nel dettaglio, ci si limita ad accennare che il processo di emanazione di standard
internazionali che stabiliscano i limiti di emissioni per gli apparati PLC è tuttora
in atto; esso ha conosciuto nel passato un decorso lento, sia a causa di discordanze
verificatesi in fase di approvazione dei documenti, sia a causa di difficoltà tecniche
legate a questa tecnica di comunicazione.
Ulteriori particolari sull’argomento sono disponibili ad esempio nei riferimenti [24],
[25], [26].
Capitolo 3
15
16 3. Implementazione con processori DSP
Figura 3.1: Architettura hardware del modem basato su DSP con dettagli sulle
interconnessioni.
3. Implementazione con processori DSP 17
cedentemente svolto sui DSP (si veda, ad esempio, [5] e [6]) si è inizialmente scelta
l’architettura mostrata nella figura 3.1.
Una ulteriore importante caratteristica dell’architettura scelta che può sfuggire ad
una prima analisi è la mancanza di alcun anello di retroazione analogico; in particolare
la frequenza di campionamento del convertitore analogico-digitale (ADC) del ricevitore
è indipendente dal segnale ricevuto. Tale caratteristica è nota come “non-synchronous
sampling clock” [8]; da una parte ciò semplifica il sistema, ma dall’altra richiede l’u-
tilizzo di un interpolatore nel ricevitore. Per maggiori informazioni si rimanda alla
sezione 3.6.
Si noti infine che la figura 3.1 indica non solo le generiche interconnessioni fra DSP,
computer e blocchi analogici (LNA e PA) ma anche vari parametri elettrici utili per la
progettazione di questi ultimi. Per maggiori informazioni relative alla modellizzazione
del canale powerline e delle impedenze di ingresso/uscita del canale, si rimanda a [9].
• necessità di un singolo oscillatore locale, sia nel ricevitore che nel trasmettitore,
per generare tutte le sottoportanti.
Tutte queste sue caratteristiche hanno fatto sı̀ che tale tecnica di modulazione
ortogonale multiportante sia stata suggerita e standardizzata per una grande varietà
di applicazioni, tra cui:
• comunicazioni su power-lines.
• è molto sensibile alle differenze di frequenza fra gli oscillatori locali del trasmet-
titore e ricevitore (dovuto al mismatch intrinseco degli oscillatori e all’effetto
Doppler );
Data la sua grande rivelanza pratica si sono sviluppate nel corso del tempo nu-
merose soluzioni per limitare l’effetto degli svantaggi elencati precedentemente, alcune
delle quali (quelle riguardanti gli errori in frequenza) saranno esposte nel capitolo 3.3.
×
Rate = 1 / NT
(m)
c0
exp{ j 2π 0 f sc t }
cn = cmN + k
× x( t )
S/P exp{ j 2π 1 f sc t }
∑
Rate= 1 / T
c ( m ) N −1
×
exp{ j 2π ( N −1 ) f sct }
( m +1 )T
r( t ) cˆ k( m )
×
s
∫ ( • )dt
mT s
exp{ − j 2πkf sc t }
Tale schema prevede la conversione in banda base del segnale, il passaggio attraver-
so un filtro adattato con campionamento e la decisione a soglia finale. La variabile di
decisione sul simbolo della sottoportante K − esima è data dalla seguente espressione
(0) 1 T
zk = r(t)e−j2πkfsc t dt (3.2)
T 0
dove r(t) è il segnale ricevuto.
La presenza degli altri sottocanali introduce inevitabilmente una interferenza nella
decisione; in particolare, l’effetto della presenza del sottocanale i, con i = k, sulla
variabile di decisione del ricevitore ottimo per il canale k, è dato da
T
(0) (0)
Ii,k = ai ej2πifsc t e−j2πkfsc t dt
0
j2π(i−k)fsc T
(0) e −1
= ai
j2π(i − k)fsc
dove si è considerato l’intervallo di segnalazione con l = 0 e trascurato l’effetto del
rumore. Questa interferenza si annulla quando
fsc T = q (3.3)
con q intero, cioè quando le sottoportanti sono ortogonali: ovviamente conviene sce-
gliere q il più piccolo possibile per mantenere le sottoportanti vicine e quindi limitare
la banda del segnale modulato.
Visto che il q più piccolo è pari all’unità, risulta che
1 1
fsc = = (3.4)
T N Ts
Con questa scelta ed in queste condizioni la modulazione prende il nome di OFDM
ed ha la minima occupazione spettrale: per ricostruire il flusso dati originario, occor-
rerà riformattare il flusso da parallelo a seriale con un convertitore P/S duale di quello
della figura 3.2.
Occorre ora trovare una struttura efficiente di modulatori e demodulatori OFDM
che implementino le operazioni appena descritte.
che viene suddiviso in blocchi di lunghezza N − NSC . Come vedremo ciascun simbolo
viene affidato ad una diversa sottoportante. Il blocco l-esimo è composto da N − NSC
simboli di informazione e da NSC simboli nulli ed é rappresentato dal vettore
(l) (l) (l) (l)
aN a0 , a1 , . . . , aN−1 (3.6)
3. Implementazione con processori DSP 21
Data
In Signal bk ck s (t )
Add p(t )
IDFT Add
S/P Virtual P/S
...
...
...
Mapper Pre/Postfix
Carriers
N − N SC N N
detto T ime Domain Symbol. Esiste allora una corrispondenza biunivoca tra simboli
nel dominio del tempo e nel dominio della frequenza, corrispondenza riassunta dalla
relazione
(l)
bk ⇐⇒ a(l)n (3.9)
(l) (l)
Pertanto in ricezione una volta noti i dati bk si possono ricavare i simboli an
effettuando una semplice operazione di DFT. Se si effettua una modulazione numerica
(l)
dei bk si consegue una drastica semplificazione del trasmettitore e ricevitore. Solita-
mente si sceglie un valore di N che sia pari a una potenza di 2 in modo da poter usare
algoritmi veloci di FFT e IFFT. Si ha allora che
N−1
(l) (l) 1 (l) j2π nk
bk = IF F T aN √ an e N k ∈ {0, 1, . . . , N − 1} (3.10)
k N n=0
√
ove il termine 1/ N è un fattore di normalizzazione che serve per ottenere la trasmis-
sione di simboli a potenza unitaria. Tale fattore può essere facilmente ricavato come
segue
N−1 N−1
(l)
2 (l)∗ (n−i)k
1 = E
bk
= E a(l) a
n i ej2π N = N C2 (3.11)
n=0 i=0
√
da cui segue che il termine di normalizzazione è 1/ N .
22 3. Implementazione con processori DSP
Dopo il campionatore, supponendo che gli istanti di campionamento siano ti = iTs con
i ∈ {0, 1, . . . , N − 1} e trascurando l’errore di sincronizzazione di clock, si ha
N
−1
r(iTs ) = bk gN ((i − k)Ts ) ⊗ h(iTs ) + w(iTs ) (3.16)
k=0
ove zi é una variabile aleatoria (v.a.) a media nulla e varianza 2N0 . Se definiamo
N −1 N−1
1 pk−il
Ql (p) = qi−k ej2π N (3.20)
N
i=0 k=0
3. Implementazione con processori DSP 23
− N1 0 N −1 ( N − 1) + N 2
si ha
ul = al Ql (l) + an Ql (n) + zl (3.21)
n=l
Da qui si può osservare che se il canale è piatto i termini qi−n ≡ 1 solo per n = i e
zero altrove cioè
1 se k = l
Ql (k) = (3.22)
0 ∀k = l
Con canale selettivo le relazioni appena scritte non sono in genere verificate: ci sono
quindi vari k per cui Ql (k) = 0 e questi sono all’origine dell’effetto di ISI. Mediante la
periodicizzazione del segnale il sistema OFDM può eliminare questo fenomeno.
• Le variazioni del canale sono irrilevanti all’interno di ogni blocco di dati tra-
smesso (canale quasi-stazionario). Chiameremo hl (t) la risposta impulsiva del
canale durante la trasmissione dell’l-esimo blocco (hl (t) = h(t) per un canale
stazionario);
• Recupero ideale della frequenza della portante conseguito fuori dallo schema a
blocchi del ricevitore della figura 3.4.
La prima ipotesi è realistica per sistemi OFDM standard con elevata bit rate, come
quelle previsto per il servizio DVB-Terrestrial, nel quale la selettività nel tempo del ca-
nale può essere trascurata per parecchi blocchi consecutivi. In generale, comunque, la
validità di tale approssimazione dipende dalla larghezza di banda Doppler BD del ca-
nale multipath, normalizzata con la block rate dell’OFDM 1/NT Ts ; il canale multipath
può essere considerato stazionario all’interno di un blocco se BD NT Ts 0.01
Possiamo ora scrivere il segnale ricevuto nella forma
+∞
N+N
2 −1 (l)
r(t) = ck ql (t − kTs − lNT Ts ) + n(t) (3.26)
l=−∞ k=−N1
dove ql p(t) ⊗ hl (t) e rappresenta l’impulso p(t) trasmesso sul canale h(t). In
particolare si nota che ql (t) è proprio l’impulso elementare della trasmissione del flusso
di dati a tempo di simbolo OFDM T, cosı̀ come viene ricevuto dal demodulatore.
Questo impulso ha, in generale, una durata maggiore di TLp = Lp Ts per effetto della
distorsione di canale: se la risposta impulsiva del canale ha durata finita pari a Th ,
la durata di ql (t) è pari a TLp + Th ed è allora possibile evitare l’ISI causata dal
canale, spaziando i simboli OFDM di un intervallo maggiore di T , e precisamente
aumentando di una quantità Tg chiamata intervallo di guardia. Tale stratagemma,
però, peggiora l’efficienza spettrale del sistema, in quanto, dovendo mantenere una
velocità d’informazione costante, introdurre un intervallo di guardia diverso da zero
significa ridurre il tempo di simbolo OFDM T e quindi aumentare la banda utilizzata
sul canale (grosso modo pari a N/T ). Comunque, visto che i ritardi massimi che
si incontrano nelle bande di interesse, quando la propagazione avviene per cammini
multipli, sono dell’ordine di qualche decina di µ sec e che l’intervallo di simbolo è pari
a qualche centinaio di µ sec, la perdita di efficienza è modesta.
Questa caratteristica di poter trattare facilmente canali con echi aventi ritardi
notevoli permette di risolvere anche una questione importante in una rete di radio-
diffusione: infatti, il meccanismo di protezione dal multipath funziona sia nel caso in
cui l’eco si produca naturalmente come discusso finora, ma anche nel caso in cui l’eco
provenga da un diverso ripetitore della stessa rete operante sulla stessa frequenza (eco
artificale). Questo semplifica notevolmente il progetto e l’esercizio delle cosiddette
reti a singola frequenza (SFN ) per la diffusione di un canale televisivo su di un unica
frequenza a diffusione regionale o nazionale. Si può osservare che i ritardi di canale
3. Implementazione con processori DSP 25
N − N SC Data
r (t ) x (t ) xk Remove Equalizer
Matched Remove Out
S/P DFT Virtual P/S
...
...
...
...
Filter Pre/Postfi x Detector
tk Carriers
N N
Ts
− j 2π∆fˆk
M
e
Offset
...
Estimator
“artificiali ” di una SFN sono in generale assai maggiori di quelli “naturali ” intro-
dotti dal canale multipath e quindi i requisiti dell’intervallo di guardia devono essere
adattati al caso in esame.
Lo schema a blocchi del ricevitore è illustrato nella figura 3.6. Si assuma che l’m-
esimo blocco sia quello elaborato dal ricevitore; il segnale attraversa dapprima il filtro
adattato p(−t), poi è campionato alla frequenza della symbol rate all’istante
dove τ̂ m è l’m-esima stima locale del ritardo totale di propagazione nel canale τ .
L’n-esimo campione dell’m-esimo blocco all’uscita del filtro adattato è
+∞
N+N
2 −1 (l)
xm [n] = ci fl (tn−i,m−l + εm Ts ) + wm [n] n = −N1 , . . . , N + N2 − 1
l=−∞ i=−N1
(3.28)
dove
p(−t) τ̂ m − τ
fl (t) ql (t) ⊗ εm (3.29)
Ts Ts
Si può dimostrare che la lunghezza di fl (t) misurata in intervalli di simbolo, è minore di
2Lp + Lds , dove Lds indica il massimo delay spread del canale (solitamente Lds ≪ N ).
La presenza di un canale multipath genera, nel dominio del tempo, ISI (Inter-
Symbol Interference), dovuta sia all’interferenza tra simboli OFDM consecutivi (IBI,
InterBlock Interference), che all’interferenza tra simboli all’interno dello stesso blocco
(IntraBlock Interference). L’interferenza interblocco è rappresentata dai termini della
(3.28) con l = m, mentre quella di intrablocco è data dai termini con l = m, i = n. In
particolare l’interferenza intrablocco può determinare ICI (InterCarrier Interference)
nel dominio della frequenza. Gli effetti ora citati sono facilmente eliminabili o comun-
que minimizzabili attraverso l’aggiunta del prefisso e del suffisso purchè la somma delle
loro lunghezze sia
N1 + N2 2Lp + Lds (3.30)
É per tale ragione che a volte la somma N1 + N2 definisce il cosiddetto guard time. Se
è vera quest’ultima disuguaglianza, l’IBI può essere rimossa eliminando i primi N1 e
gli ultimi N2 campioni dalla sequenza {xm [n]}. L’approccio dell’intervallo di guardia
ha uno svantaggio che deve essere preso in seria considerazione, e cioè che per poter
26 3. Implementazione con processori DSP
Quando tale condizione è verificata, grazie all’estensione ciclica del blocco, l’errore di
timing si traduce solo in una rotazione di fase lineare all’uscita della FFT.
Dopo la rimozione del prefix e del postfix, i campioni all’ingresso della FFT per
l’m-esimo blocco sono
N+N
2 −1 (m)
xm [n] = ci fm ((n − i) Ts + εm Ts ) + wm [n] n = 0, . . . , N − 1 (3.32)
i=−N1
dove si è indicato
con
(F F T (v))k il k-esimo elemento nella F F T del vettore v; i termi-
k
ni F̃ε [k] F̃ε NT s
sono campioni della trasformata di Fourier F̃ε (f ) della sequenza
aperiodica fε [n] e, grazie alle proprietà di ortogonalità e conservazione dell’energia
della FFT, {W [k]} è una sequenza gaussiana statisticamente equivalente a {w [n]}.
0 N−1 N−1 √
ak = √1 bn exp(−j2π nk ) =⇒ bn exp(−j2π nk ) = ak N
N n=0 N n=0 N
3. Implementazione con processori DSP 27
2.5
i
Fε f ( Ts
)
1.5
1
Ts
.
0.5
1
NTs
0
−2 −1.5 −1 −0.5 0 0.5 1 1.5 2
fTs
Figura 3.7: Ripetizioni periodiche della trasformata di Fourier della risposta del canale.
Come noto, la trasformata di Fourier di una sequenza può essere scritta come
+∞
1 i
F̃ε (f ) Fε (f − ) (3.35)
Ts Ts
i=−∞
N2
+N −1
s(t) = ck g(t − kTs ) (3.41)
k=−N1
ove
N−1
1 nk
ck √ an ej2π N , − N1 k N2 + N − 1 (3.42)
N n=0
N2
+N−1 N
−1
1 nk
s(t) = √ an ej2π N g(t − kTs )
N k=−N1 n=0
N−1
1
= √ an fn (t) (3.43)
N n=0
dove si è indicato
N2
+N−1
nk
fn (t) ej2π N g(t − kTs ) (3.44)
k=−N1
30 3. Implementazione con processori DSP
ove T
1 mt
Fn (m) fn (t)e−j2π T dt (3.49)
T 0
Inserendo la (3.47) nella (3.49) si ottiene
N−1
1 j2π ni +∞ mt
Fn (m) = e N g(t − iTs )e−j2π T dt = (3.50)
T
i=0 −∞
−j2πf iTs
G(f )e
m
f= T
N−1
1 m j2π n−m
= G e N (3.51)
T T
i=0
Nα
1 nt
s(t) = √ a|n|N ej2π T , 0 t N Ts (3.55)
N n=−Nα
Nα
n
1 nt
x(t) = √ a|n|N C ej2π T + w(t) , 0 t N Ts (3.56)
N T
n=−Nα
32 3. Implementazione con processori DSP
1. mismatch intrinseco degli oscillatori locali al quarzo del trasmettitore e del rice-
vitore. Tutti i moderni sistemi elettronici utilizzano infatti un anello ad aggancio
di fase (Phase Locked Loop - PLL) per generare un segnale preciso ad una cer-
ta frequenza f0 ; tale dispositivo permette di realizzare una moltiplicazione di
frequenza: avendo a disposizione un riferimento frequenziale frif preciso, tipica-
mente un oscillatore al quarzo, con un PLL si può moltiplicare tale riferimento
fino al valore desiderato f0 = N frif .
L’uso del PLL è necessario perchè gli oscillatori al quarzo possono generare se-
gnali precisi solo a frequenze relativamente basse (attorno ai 200M Hz) e anche
per tali valori il segnale generato è afflitto da una incertezza; è proprio questa
incertezza (che ammonta tipicamente a qualche centinaio di kHz) a generare un
contributo fisso al CFO nel trasmettitore OFDM;
Nella sezione seguente si vedrà l’effetto di tali contributi combinati sul segnale
OFDM.
L’effetto di un CFO è costituito da un semplice shift in frequenza del segnale rice-
vuto rispetto al segnale trasmesso che può ledere la mutua ortogonalità delle portanti,
determinando la comparsa di Inter-Carrier-Interference. Per chiarire meglio quanto ap-
pena esposto, supponiamo di essere giunti ad una perfetta sincronizzazione temporale
e di calcolare l’uscita della DFT in presenza di un errore di frequenza fe . E’ possibile
dimostrare (vedi [10, eq. 14]) che l’uscita n-esima della DFT, in corrispondenza del
blocco OFDM i-esimo è data da:
N
−1
jϕi
Ri (n) = e H(p)di (p)fN (ε + p − n) + Wi (n) (3.57)
p=0
fe
dove ϕi = 2πiε NNT , ε = NTs e fN (x) è definita come:
ai
a0 a Nα a N −1
1
... ...
0
⋅ ⋅ ⋅ ⋅ ... ⋅
ui
u0 u Nα
1 zona portanti
... soppresse ...
0
⋅ ⋅ ⋅ ⋅ ... ⋅
in cui l’unico effetto dell’errore, è dato da una rotazione dei simboli trasmessi, dipen-
dente in modo lineare dall’indice n della portante. Tale rotazione può essere compen-
sata dall’equalizzazione del canale, che non riesce a distinguere la rotazione introdotta
dal canale da quella introdotta dall’errore ∆θ.
Se l’errore ∆θ non è all’interno dell’intervallo −Ng + L − 1 ≤ ∆θ ≤ 0, allora i
simboli estratti dalla DFT, saranno prodotti dal contributo di due blocchi adiacenti,
determinando la comparsa di IBI. Oltre a questo l’ortogonalità delle portanti non è
più rispettata e nasce quindi il problema della Inter-Carrier-Interference (ICI). E’
3. Implementazione con processori DSP 35
Figura 3.12: Effetto della risposta impulsiva del canale sul prefisso ciclico in una
modulazione OFDM.
possibile dimostrare che in questa situazione, l’output della DFT può essere espresso
come (vedi [10, equ. 17]):
j2πn∆θ
Ri [n] = e N α(∆θ)H[n]di [n] + Ii (n, ∆θ) + Wi [n] (3.62)
dove abbiamo indicato con α(∆θ), un fattore di attenuazione e con Ii (n, ∆θ), l’effetto
di ICI ed IBI, modellizzabile come un processo gaussiano a media nulla e varianza
σ 2I (∆θ).
Dal momento che l’algoritmo di timing deve essere in grado di portare la finestra
di DFT all’interno della regione di assenza di IBI, si evince che minore è la dimensione
di questa regione, maggiore sarà la precisione richiesta all’algoritmo.
Figura 3.13: Struttura di un possibile ricevitore OFDM con i blocchi per la stima
coarse e fine di temporizzazione e di frequenza [10].
Siccome in questa fase il CFO non è ancora noto, è bene che l’algoritmo sia, per quanto
possibile, insensibile agli errori nella frequenza della portante.
Uno dei primi algoritmi per il timing coarse venne proposto da Nogami e Naga-
shima [10] ed utilizza un blocco di silenzio, detto null-block, in cui il trasmettitore
spegne l’amplificatore e non invia alcun segnale. L’inizio del frame con tale sistema
può essere identificato analizzando la potenza ricevuta, che subisce un brusco calo in
corrispondenza del null-block.
Questo algoritmo non è particolarmente preciso e, soprattutto, non si adatta gran-
chè ai sistemi di comunicazione a burst, per la totale impossibilità di distinguere il
blocco nullo dai periodi “idle” (periodi di silenzio il cui il trasmettitore non ha dati da
inviare) tra un frame e l’altro. Un approccio molto popolare, utilizzato oggi, prevede
l’utilizzo di blocchi di riferimento speciali, che esibiscono una certa ripetitività nel
dominio del tempo. In questo caso è possibile stimare la posizione di inizio del frame
ricercando un picco nella correlzione tra le parti ripetitive.
L’idea venne per la prima volta proposta da Schmidl e Cox [17], che utilizzarono
due blocchi identici di dimensione N/2 (in cui N rappresenta l’ordine della DFT),
posti all’inizio di ciascun frame. Si noti che la generazione di un simile blocco è molto
semplice e può essere fatta nel dominio della frequenza; basta infatti modulare una
sequenza pseudo casuale sulle portanti pari ed una sequenza di cifre nulle sulle por-
tanti dispari. Non è difficile dimostrare che, fintantochè la durata del prefisso ciclico è
maggiore della durata della risposta impulsiva del canale, le due metà rimangono iden-
tiche, a meno di un phase shift dovuto al CFO. Se i campioni ricevuti, relativamente
alla prima metà, sono espressi da (vedi [10, equ. 22]):
j2πεk N
r(k) = s(R) (k)e N + w(k) θ ≤ k ≤ θ +−1 (3.63)
2
i campioni relativi alla seconda metà, possono essere espressi come:
N j2πεk N N
r(k + ) = s(R) (k)e N ejπε + w(k + ) θ ≤ k ≤ θ + −1 (3.64)
2 2 2
Non è difficile capire che, fornendo i campioni ricevuti ad un correlatore di dimensione
N
2 , questo produrrà un picco nel momento in cui la sua sliding window è sovrapposta
esattamente al reference block trasmesso. In conclusione possiamo affermare che la
stima θ̂ del coarse timing, può essere calcolata ricercando il massimo della seguente
metrica:
max
Γ(θ̃)
(3.65)
θ̃
dove:
θ̃+ N −1
2
N ∗
r(k + 2 )r (k)
k=θ̃
Γ(θ̃) = (3.66)
θ̃+ N −1
r(k + N
2
2)
k=θ̃
38 3. Implementazione con processori DSP
massimo di
Γ(θ̃)
al variare di θ̃.
Dall’analisi della fig.3.14 notiamo che la metrica di Schmidl e Cox presenta, in
corrispondenza del picco, una regione piatta piuttosto grande. Questo rende imprecisa
l’identificazione del massimo e quindi riduce l’accuratezza con cui si stima l’istante di
campionamento iniziale. Per cercare di risolvere il problema ed ottenere un’accuratezza
maggiore sono stati proposti svariati algoritmi alternativi.
Λ1 (θ̃)
+
Λ2 (θ̃)
+
Λ3 (θ̃)
Γ(θ̃) = 3
(3.67)
3
2 rj (θ̃)
j=0
dove
Λ1 (θ̃) = rH H H
0 (θ̃)r1 (θ̃) − r1 (θ̃)r2 (θ̃) − r2 (θ̃)r3 (θ̃)
Λ2 (θ̃) = rH H
1 (θ̃)r3 (θ̃) − r0 (θ̃)r2 (θ̃)
Λ3 (θ̃) = rH
0 (θ̃)r3 (θ̃)
La fig.3.15 mostra l’andamento della metrica di Shi e Serpedin, misurata nelle me-
desime condizioni della fig.3.14. Dal momento che la dimensione della regione piatta in
corrispondenza del picco si è ora notevolmente ridotta è lecito aspettarsi un’accuratez-
za maggiore. E’ inoltre possibile migliorare ulteriormente la precisione dell’algoritmo
costruendo blocchi con un numero di parti ripetitive maggiore di 4.
Anche in questo caso per il calcolo della metrica si usa una sliding window di
dimensione N in cui r è la generica sequenza complessa di campioni ricevuti campionati
a frequenza di simbolo:
2
L |P (θ̃)|
Γ(θ̃) =
L − 1 E(θ̃)
dove:
L−2
M−1
P (θ̃) = p(k)p(k + 1) r∗ (θ̃ + kM + m)r(θ̃ + (k + 1)M + m)
k=0 m=0
M−1
L−1
E(θ̃) = |r(θ̃ + i + kM )|2
i=0 k=0
E’ interessante notare che la metrica di Schmidl e Cox è un caso speciale della me-
trica descritta sopra nel caso in cui L = 2, p = [++], e il termine E(θ̃) è approssimato
M−1
!
con il termine 2 |r(θ̃ + i + M )|2 .
i=0
Nella figura 3.16 è mostrata la metrica di timing tipica che si ottiene con tale
algoritmo, per diversi valori di L, confrontata con quella di Schmidl e Cox (si può
notare come esibisca un picco molto più stretto).
Tale metrica di timing è molto interessante perchè permette, con il medesimo
blocco, di stimare anche la risposta impulsiva del canale e di stimare il CFO [12].
3. Implementazione con processori DSP 41
ε = ν + 2η (3.68)
dove |n − 2η|N è il valore n − 2η, riportato in modulo all’intervallo [0; N − 1]. Trascu-
rando l’effetto del rumore termico e definendo p(n) = dd21 (n)
(n) , possiamo scrivere, per le
sole portanti pari che:
La (3.71) suggerisce che una stima dell’errore intero può essere ottenuta andando a
cercare il valore di η che massimizza la seguente metrica:
3. Implementazione con processori DSP 43
∗ ∗
R2 (n)R1 (n)p (|n − 2η̃|N )
n pari
B(η̃) = (3.72)
|R2 (n)|2
n pari
con η̃ che varia su tutto il range di errori di frequenza, che siamo interessati a cor-
reggere. Si verifica facilmente che la metrica restituisce 1 non appena viene trovato il
R2 (n)
valore corretto di η̃. Infatti non appena η̃ = η, p∗ (|n − 2η|N ) = R (n)ejϕ2 −ϕ1 e quindi:
1
∗
∗
R2 (n)
R2 (n)R (n)
1 R1 (n)e 2 1
∗ j(ϕ −ϕ )
n pari
B(η̃) = =
|R2 (n)|2
n pari
R2∗ (n)
2 −j(ϕ2 −ϕ1 )
R2 (n) ej(ϕ2 −ϕ1 )
|R2 (n)| e
n pari
n pari
= =
|R2 (n)|2 |R2 (n)|2
n pari n pari
2 −j(ϕ −ϕ )
2
|R2 (n)| e 2 1
|R2 (n)|
e−j(ϕ2 −ϕ1 )
n pari
n pari
= =
|R2 (n)|2 |R2 (n)|2
n pari n pari
2
|R 2 (n)|
n pari
=1
|R2 (n)|2
n pari
Q/2
1
ε= κ(q) arg {Ψ(q)Ψ∗ (q − 1)}
2π/Q q=1
dove:
44 3. Implementazione con processori DSP
12(Q − q)(Q − q + 1) − Q2
κ(q) =
2Q(Q2 − 1)
e
ˆ
θ+N−1−q N
Q
N ∗
ψ(q) = r(k + q )r (k)
ˆ
Q
k=θ
con
Q
q = 1, 2, ....,
2
2πn∆θ 2π n ∆θ Ts 2π n Td
φn = = =
N N Ts Tu
in cui abbiamo indicato con Td , l’errore di sincronizzazione in secondi e con Tu la
durata in secondi della parte utile di ciascun simbolo OFDM:
Td = ∆θ Ts
Tu = N Ts
2π n ∆t
φn =
Tu
dove abbiamo indicato con ∆t il sampling timing offset in secondi.
La fig.3.18 mostra un esempio in cui l’errore di sincronizzazione si compone di un
symbol timing offset Td e di un sampling timing offset ∆t.
Si noti che l’errore di sincronizzazione in generale non è costante nel tempo, in
quanto l’oscillatore che genera la frequenza di campionamento in ricezione potrebbe
generare un segnale ad una frequenza leggermente diversa da quella dell’oscillatore
usato in trasmissione. Se ad esempio l’oscillatore in ricezione procede più lentamente
di quello in trasmissione, l’istante di posizionamento della finestra di DFT tenderà a
rimanere sempre più in ritardo rispetto all’istante corretto, via via che si procede nella
demodulazione del frame ricevuto. Occorre quindi un algoritmo capace di calcolare e
correggere l’errore di sicronizzazione per ognuno dei blocchi OFDM ricevuti.
2πk(Td + ∆t)
Tu
la differenza della rotazione di fase, tra le sottoportanti k1 e k2 del j-esimo simbolo
OFDM può dunque essere scritta come:
Td + ∆t
∆φk2,1 = φk2 − φk1 = 2π∆k (3.73)
Tu
46 3. Implementazione con processori DSP
Td + ∆t N ∆φk2,1
τ (j) = = (3.74)
Ts 2π ∆k
Infatti:
T +∆t
N ∆φk2,1 N 2π∆k dTu
τ (j) = =
2π ∆k 2π ∆k
Td +∆t
N 2π∆k N Ts Td + ∆t
= = (3.75)
2π ∆k Ts
L−1
1
τ (j) = τk (j) (3.76)
L n=0 2n+1,2n
in cui:
N ∆φk2n+1,2n
τ k2n+1,2n (j) = (3.77)
2π ∆k2n+1,2n
tale sistema di ridondanza consente una maggiore affidabilità dell’algoritmo nel caso in
cui alcune delle sottoportanti pilota utilizzate per il timing fine siano particolarmente
attenuate e/o corrotte da picchi di rumore.
Nell’articolo [18] viene anche presentata una macchina a stati finiti che consente
di ottenere una immunità ancora maggiore da casi patologici quali quelli dovuti a
temporanei deep-fade o perdite di segnale.
3. Implementazione con processori DSP 47
3.4.1 Il trasmettitore
Il codice MATLAB per il trasmettitore sviluppato in questa tesi è raccolto nella funzio-
ne OFDM tx() localizzata nel file OFDM tx.m. Tale funzione deve essere chiamata solo
una volta che tutte le costanti base della modulazione sono state inizializzate (come
variabili globali); di questo se ne occupa lo script OFDM system.m che verrà descritto
in seguito nella sezione 3.4.3.
La funzione OFDM tx() dapprima inizializza alcune ulteriori costanti presenti sia
nel trasmettitore che nel ricevitore (che però possono assumere valori diversi nei due
a causa di differenti valori delle frequenze di campionamento) mediante la chiamata
a OFDM rx tx common init(); dopodichè procede al calcolo dei campioni di uscita del
filtro FIR di pulse-shaping (indicato con p(t) nella figura 3.4 e la cui risposta impulsiva
è rappresentata nella figura 3.19) per ognuno dei simboli OFDM da trasmettere. La
funzione OFDM tx() si occupa cioè di trasmettere un frame OFDM.
Ogni frame OFDM è composto in modo molto semplice (vedi la fig. 3.20), cer-
cando di limitare al massimo l’overhead di livello fisico, e consiste in un simbolo di
sincronizzazione che contiene dati noti ed è usato dal ricevitore per il coarse-timing
(vedi sezione 3.3) seguito da un numero fisso Ndata symbols per synch symbol di simboli
OFDM contenenti dati utili (eccetto che su alcune sottoportanti che vengono comun-
que sempre modulate da dati noti per l’algoritmo di timing fine del ricevitore); tale
pattern (simbolo di sincronismo e numero fisso di simboli utili) viene ripetuto in modo
tale da avere Nsymbols per OF DM f rame simboli totali. Per ridurre l’overhead causato
dai simboli contenenti dati noti, un miglioramento possibile sarebbe quello di trasmet-
tere tali simboli più ravvicinati (temporalmente) all’inizio del frame OFDM e poi via
via sempre più distanti gli uni dagli altri (è soprattutto all’inizio che il ricevitore ha
bisogno di basarsi su dati noti per la stima dei vari parametri del segnale).
Più in dettaglio per tutti i simboli OFDM (eccezion fatta per quelli di sincronismo)
Nu ef f gruppi di m = log2 M bits di ingresso dell’array pam symbols, generato dal rag-
gruppamento dei bit che codificano una sequenza di caratteri ASCII, vengono mappati
in una costellazione ad M punti del piano complesso (nell’array channel symbols). Nel
nostro caso M = 4 e la costellazione è composta quindi dai punti ±1 ± j (modulazione
QPSK).
48 3. Implementazione con processori DSP
4 Filter response
x 10
7
−1
160 180 200 220 240 260 280 300 320 340 360
15000
10000
5000
−5000
400 450 500 550 600
Figura 3.19: Risposta impulsiva del filtro FIR usata nel trasmettitore OFDM simulato
in MATLAB.
N u_eff sottoportanti
m odulate con dati utili
(1+α)π(n−A)Tc
(1−α)π(n−A)Tc
Ts
cos Ts
+ 4α(n−A)T c
sin Ts
4α √
4α(n−A)Tc 2
π Ts 1−
Ts
per n ∈ [0; Nsamples − 1]; n = A; n = A ± Ts
4αTc
h̃[n] = 4α+π(1−α)
√ per n = A
π Ts
1−α 1−α
1
(1 + α)π sin 1+α
4α π + 4α sin 4α π − (1 − α)π cos 4α π
√
2π Ts
Ts
per n = A ± 4αT c
2Nbits − 1
h[n] = rnd h̃[n]
max |h̃[n]|
dove rnd()
indica
la funzione round-off (approssimazione all’intero più vicino),
Nsamples
A = rnd 2 + 1 e h̃[n] è la sequenza ottenuta per campionamento dell’an-
titrasformata di un segnale con spettro a radice di coseno rialzato. Si noti che
la prima formula che definisce la sequenza h̃[n] ha dei punti di discontinuità (per
Ts
n = A; n = A ± 4αT c
) in cui il denominatore si annulla; estendendo per continuità la
funzione (risolvendo cioè i limiti associati a tali punti) si ricavano la seconda e la terza
formula della definizione.
La funzione rootraisedcosine func() inoltre calcola anche l’ISI (inter-symbol interfe-
rence) causata dal troncamento a Nsamples campioni della funzione h̃[n] (che sarebbe
di durata infinita); per farlo esegue semplicemente la somma dei campioni di indice
+∞
! ∗
A ± n TTsc della sequenza Rhh [n] = h [k]h[n + k] (cioè dell’autocorrelazione di h[n])
k=−∞
!L
che teoricamente dovrebbero essere nulli (ovvero calcola ISI = k=1 Rhh [2A + kTs ]
2Nsamples −1
con L = rnd Ts ). Nella tabella seguente sono riportate le percentuali di
valori di ISI totale per diversi valori di Nsamples ottenute normalizzando la somma
50 3. Implementazione con processori DSP
dei campioni di indice A ± n TTsc al valore massimo della sequenza Rhh [n] (calcolati per
Ts
Tc = 25, Nbits = 8):
Nsamples ISI con α = 0.3 ISI con α = 0.5 ISI con α = 0.7
32 21% 18% 14,4%
64 22% 10% 2,7%
128 7,7% 2% 1,3%
256 3% 1,35% 0,97%
512 1,25% 0,502% 0,76%
1024 1,2% 0,502% 0,76%
Una rappresentazione grafica è disponibile nella fig. 3.21 in cui l’andamento ge-
nerale evidenzia (come è già chiaro dalla tabella sopra) che all’aumentare di Nsamples
1
l’ISI ha un andamento del tipo Nsamples ; ciò comporta una riduzione dapprima molto
veloce e poi sempre più lenta dell’errore. L’andamento ondulatorio della curva della
fig. 3.21 è dovuto al fatto che aumentando Nsamples si allunga non solo h[n] ma anche
Rhh [n] e ci sono quindi più campioni distanziati di Ts a cui è possibile estendere la
sommatoria.
Naturalmente bisogna bilanciare la necessità di contenere l’ISI dovuta al tronca-
mento (che è inversamente proporzionale a Nsamples ) con la necessità di eseguire una
convoluzione veloce (che ha complessità computazionale proporzionale al log2 Nsamples )
sia a lato trasmettitore sia soprattutto a lato ricevitore.
Tornando alla funzione OFDM tx(), nella figura 3.22 è rappresentato (per la sola
parte in fase) l’array di input e di output del filtro FIR.
Completata la generazione di total fir output si procede all’operazione di up-conversion:
dove i termini fCF O e θCP O sono normalmente nulli e vengono usati solo per simulare
l’effetto di un offset di frequenza e di fase nella portante; il termine x(t) nell’equazione
rappresenta l’array total fir output mentre SRF (t) rappresenta l’array dac input. Nelle
figure 3.23, 3.24 e 3.25 sono mostrati i segnali come appaiono rispettivamente prima e
dopo la conversione di frequenza.
Infine l’array dac input viene quantizzato su 14bit (ovvero il numero di bit del DAC
utilizzato; vedi la sezione 3.5) e interpolato per simulare il DAC. L’uscita del conver-
titore digitale-analogico sarebbe per l’appunto un segnale analogico e come tale non
un segnale rappresentabile in MATLAB. Nel simulatore si è quindi dovuto approssi-
mare il segnale di uscita con un segnale comunque tempo-discreto ma caratterizzato
da una frequenza di campionamento molto più elevata di quella del segnale tempo-
discreto in ingresso al DAC. Tale cambiamento di frequenza si è ottenuto simulando
un interpolatore di ordine zero (come quello del DAC utilizzato) seguito da un filtro
3. Implementazione con processori DSP 51
60
50
40
ISI (%)
30
20
10
0
0.1
0.2
0.3
0.4
0.5
0
0.6 50
100
0.7 150
200
250
0.8 300
350
400
0.9 450
500
Alfa N
samples
Figura 3.21: Interferenza intersimbolo (ISI) introdotta dal troncamento della risposta
impulsiva del filtro in funzione della lunghezza a cui viene troncata (Nsamples ) e del
coefficiente di roll-off (α).
52 3. Implementazione con processori DSP
60
40
20
−20
−40
−60
−80
0 500 1000 1500 2000 2500 3000
Sample index
−2
−4
−6
0 500 1000 1500 2000 2500 3000 3500
Sample index
Figura 3.22: Input e output del filtro FIR di un trasmettitore OFDM con N = 64,
Np = 6, α = 0.5, M = 4.
3. Implementazione con processori DSP 53
−5
0.8 1 1.2 1.4 1.6 1.8
Sample index 4
x 10
10
−5
Figura 3.23: Parte in fase e quadratura all’uscita del filtro FIR per un intero frame
OFDM. E’ possibile notare che i simboli noti trasmessi nel primo simbolo OFDM sono
modulati solo in fase e vengono trasmessi a potenza maggiore.
54 3. Implementazione con processori DSP
4 DAC input
x 10
2
1.5
0.5
−0.5
−1
−1.5
−2
100 200 300 400 500 600
Time (us)
300
250
200
150
100
50
0
200 400 600 800 1000 1200 1400 1600
Figura 3.25: Densità spettrale di potenza del segnale in ingresso al DAC rappresentato
in figura 3.24.
Fc
di Butterworth passa-basso del sesto ordine con frequenza di taglio pari a 2 , dove Fc
indica la frequenza di campionamento del segnale di ingresso al DAC.
Nel simulare il DAC si sono modellizzate anche le varie non-idealità possibili: un
offset di frequenza costante nella frequenza del clock sommato ad un certo phase-noise.
Tali effetti sono serviti a studiare l’impatto delle non-idealità dell’hardware sul segnale
finale.
I campioni del segnale “circa” tempo-continuo sono infine salvati nel file dac output.mat.
3.4.2 Il ricevitore
Il codice MATLAB del ricevitore è raccolto nella funzione OFDM rx() nel file OFDM rx.m.
Come già per OFDM tx() anche questa funzione necessita di una pre-inizializzazione
di numerose costanti di modulazione (da parte dello script OFDM system.m) ed ef-
fettua l’inizializzazione delle costanti dipendenti dal valore di Fc tramite la funzione
OFDM rx tx common init().
Dopo l’inizializzazione la funzione carica nell’array data i dati da processare che
sono, a seconda del valore della costante SIGNAL, il file dac output.mat, un array di
campioni salvati direttamente dal DSP (vedi la sezione 3.6) o del rumore gaussiano
bianco (come segnale di test). Viene poi simulato il canale di trasmissione AWGN
aggiungendo all’array data rumore gaussiano bianco a sufficienza per raggiungere un
dato rapporto segnale-rumore determinato dalla costante SNR.
56 3. Implementazione con processori DSP
xq (t) xq (t)
cos(φ − φ̂) + cos(2π2fc t + φ + φ̂)
2 2
xI (t) xI (t)
− sin(φ − φ̂) − sin(2π2fc t + φ + φ̂)
2 2
Anche in questo caso dopo il filtraggio rimarrà comunque il contributo di xI (t)
sovrapposto alla parte in quadratura se φ = φ̂.
Per poter quindi effettuare una demodulazione coerente si rende necessario effettua-
re il cosidetto “recupero della portante”. Nei ricevitori convenzionali (con architettura
omodina o eterodina) tale parte di sincronismo viene svolta da una PLL (phase locked
loop) ovvero un circuito dedicato che, rilevata la riga spettrale della portante (se tale
riga è soppressa dal trasmettitore allora può essere ricreata usando diverse tecniche,
3. Implementazione con processori DSP 57
quale quella dello “square averaging”), si aggancia alla esatta frequenza della portante
fc usata dal trasmettitore (che può essere spostata da quella nominale a causa di un
carrier frequency offset - CFO) e alla sua esatta fase φ. La portante cosı̀ “ricostruita”
dalla PLL in base al segnale ricevuto viene poi normalmente utilizzata come ingresso
del mixer per la down-conversion.
Nella nostra architettura interamente digitale e implementata via software, non
avendo a disposizione una PLL ed un mixer risulta difficile eliminare l’interferenza
intervia.
Tuttavia, scrivendo i segnali down-convertiti x̂I (t) e x̂q (t) dopo il filtraggio:
xI (t) xq (t)
x̂I (t) = cos(φ − φ̂) − sin(φ − φ̂)
2 2
xq (t) xI (t)
x̂q (t) = cos(φ − φ̂) + sin(φ − φ̂)
2 2
ed elaborandone poi l’inviluppo complesso:
1
x̂(t) = (xI (t) + jxq (t))[cos(φ − φ̂) + j sin(φ − φ̂)] =
2
1
= x(t)ej(φ−φ̂) (3.79)
2
si nota che se non c’è CFO ma solo CPO (carrier phase offset), allora l’unico effetto
sull’inviluppo complesso ricostruito x̂(t) rispetto l’inviluppo originario x(t) è quello
di una rotazione di entità φ − φ̂. Tale rotazione non deve necessariamente essere
compensata se si fa uso di una modulazione differenziale quale la DPSK, in cui il k -
esimo simbolo trasmesso non codifica la fase assoluta ma piuttosto la variazione di fase
rispetto il simbolo (k-1 )-esimo (c’è però uno svantaggio nella modulazione DPSK: il
raddoppio della probabilità di errore a parità di SNR).
Un’alternativa adottata nell’ambito di questo progetto di tesi è quella di lasciare
che sia l’equalizzatore a compensare tale rotazione (che a tale scopo utilizza alcuni
simboli noti che il trasmettitore inserisce sempre), come se si trattasse di un effetto
introdotto dal canale (che del resto contribuisce realmente con un ritardo di fase!).
Ricostruito quindi l’inviluppo complesso nell’array received dopo aver moltiplicato
per il coseno e il seno l’array data, si procede al filtraggio adattato convolvendo con
l’array FIR response (vedi la fig. 3.19) l’array received (e scalando i valori risultanti
per evitare eventuali problemi di overflow o di cancellazione di cifre significative).
58 3. Implementazione con processori DSP
−1
−2
−3
−4
4400 4600 4800 5000 5200 5400 5600 5800 6000 6200
Sample index
1.5
0.5
−0.5
−1
−1.5
−2
4400 4600 4800 5000 5200 5400 5600 5800 6000 6200
Sample index
Figura 3.26: Segnale all’uscita del filtro del ricevitore relativo al simbolo di sincro-
nismo. Le croci rosse evidenziano gli istanti di campionamento come sono stati cal-
colati in base alla metrica di timing coarse. I cerchi verdi evidenziano gli istanti di
campionamento ideali.
L’array baseband cosı̀ generato (come risultato del filtraggio) viene campionato a
periodo di simbolo Ts per generare l’array r; si considerano cioè campioni distanti TTsc
posizioni; poichè la funzione OFDM rx() è assolutamente generica, non suppone che
tale rapporto sia intero ma piuttosto effettua una operazione di approssimazione nella
generazione dell’indice di ogni campione da considerare.
L’inviluppo complesso filtrato e campionato a frequenza di simbolo è passato alla
sotto-funzione OFDM coarse timing() che effettua il calcolo della metrica di timing
grezza mediante uno degli algoritmi descritti nella sezione 3.3 (normalmente quello di
Bhargava&Letaief) e che ritorna l’indice del campione corrispondente al primo simbolo
PAM del simbolo di sincronizzazione che precede i simboli di dati in ogni frame OFDM
(vedi la fig. 3.20).
Mediante il valore ritornato da OFDM coarse timing() si effettua quindi il campio-
namento (a frequenza di simbolo) del simbolo OFDM di sincronizzazione. A causa
del CPO (come sopra descritto) tipicamente è presente anche una forte componente
in quadratura per tale simbolo (che però a lato trasmettitore è modulato solo in fase);
si veda ad esempio la fig. 3.26.
Il passo successivo nell’elaborazione è, nel caso in cui si sia utilizzato come simbolo
noto quello di Bhargava-Letaief, la stima (coarse) del CFO e della risposta impulsiva
del canale (Channel Impulse Response - CIR). Il valore stimato del CFO, nell’ambito
delle varie prove effettuate, risulta sempre molto piccolo rispetto al valore assoluto della
frequenza di portante; inoltre, come già descritto nella sezione 3.3 anche il piccolo
valore stimato è quasi totalmente da attribuirsi ad effetti diversi da un reale CFO,
3. Implementazione con processori DSP 59
2. eliminazione del prefisso ciclico; da fft input with cp si passa all’array fft input;
3. stima fine della risposta impulsiva del canale (questo passo viene eseguito
una volta ogni Ndata symbols per synch symbol solo sui simboli di sincronismo) in cui
si aggiorna il coefficiente complesso che caratterizza il canale e che era stato
stimato inizialmente;
4. calcolo della DFT (trasformata discreta di Fourier) mediante FFT; da fft input
si passa all’array channel symbols with vc;
5
x 10 Channel symbols before equalization
4
1
Quadrature
−1
−2
−3
−4
−4 −2 0 2 4
Inphase 5
x 10
1.5
0.5
Quadrature
−0.5
−1
−1.5
−1.5 −1 −0.5 0 0.5 1 1.5
Inphase
Figura 3.27: Simboli di canale ricevuti prima e dopo l’equalizzazione; si noti che, oltre
a compensare il CPO, l’equalizzatore elimina anche fattori di scala non voluti.
3. Implementazione con processori DSP 61
Plot of the equalized channel symbols for all OFDM symbols of a frame
1.5
0.5
Quadrature
−0.5
−1
−1.5
questa operazione viene salvato per ogni simbolo OFDM il valore di errore me-
dio quadratico (mean square error - MSE) per consentire una valutazione delle
performance del sistema a fine simulazione;
Di tutti i passaggi descritti sopra è il timing-fine quello più critico. Nella figura
3.28 sono mostrati i simboli di canali ricevuti durante un intero frame OFDM.
Come si nota dalla figura inizialmente i simboli di canale sono molto dispersi ed
è grazie al timing fine (la stima fine del canale influisce assai poco) che convergono
vicino ai punti ideali.
Quando tutti i simboli OFDM sono stati demodulati nei passi sopra, allora si
procede alla ricostruzione dei caratteri ASCII trasmessi raggruppando gli m = log2 M
bit memorizzati nell’array pam output bits.
Vengono infine stampati alcuni dei parametri prestazionali misurati duranti l’ese-
cuzione della funzione.
62 3. Implementazione con processori DSP
Costante Descrizione
α Fattore di roll-off nell’impulso a radice di coseno rialzato
F IRresponse length Lunghezza della risposta impulsiva in campioni
Ts Tempo di simbolo (sec)
M Ordine della modulazione PAM usata per le sottoportanti
N Numero di sottoportanti (ordine della FFT/IFFT)
Np Lunghezza del prefisso ciclico in numero di simboli
Fcarrier Frequenza della portante utilizzata (Hz)
Nsymbols per OF DM f rame Numero di simboli OFDM che compongono un frame
Ndata symbols per synch symbol Numero di simboli OFDM di dati utili inseriti
dopo ciascun simbolo OFDM di sincronizzazione
Npilots Numero di sottoportanti pilota utilizzate per
l’algoritmo di timing fine
Fc Frequenza di campionamento (Hz)
SN R Rapporto segnale rumore all’ingresso del ricevitore (dB)
0.8
0.6
0.4
−9
0.2
−6
−3
0
3
0 6 21 24 27 30
0 2 4 6 8 10 12 14 16
Figura 3.29: Analisi parametrica della Bit Error Rate (BER) di un sistema OFDM in
cui tutti i parametri eccetto quello analizzato di volta in volta sono impostati su valori
ideali.
Nu
BWOF DM ≈ (3.80)
N Ts
Poichè:
) *
1−α
Nu = 2Nα + 1 = 2 N +1
2
se si sceglie α = 0.5, si ottiene:
64 3. Implementazione con processori DSP
1 −12
0.8
0.6
0.4
60
0.2
50
0 0 60
0 10 20 30 40 50 60
Figura 3.30: Analisi parametrica della Bit Error Rate (BER) di un sistema OFDM in
cui tutti i parametri eccetto quello analizzato di volta in volta sono impostati su valori
realistici per il sistema realizzato nella pratica.
N
2+1 1
BWOF DM ≈ ≈
N Ts 2 Ts
che rappresenta una comoda formula di progetto e, pur essendo approssimata, mette
bene in luce che la banda della modulazione OFDM dipende quasi esclusivamente dal
tempo di simbolo.
Oltre all’eq. (3.80) è comunque importante tenere presente anche le espressioni
della durata di un frame OFDM TOF DM f rame :
della bit rate netta (ovvero considerando i dati utili effettivamente trasmissibili senza
codice a correzione d’errore) del sistema BROF DM :
3. Implementazione con processori DSP 65
BROF DM
η OF DM = ≈ log2 M (3.83)
BWOF DM
Da tali equazioni, pur se approssimate, si deduce che la bit rate del sistema rea-
lizzato dipende principalmente dalla banda del segnale OFDM e dall’ordine M della
modulazione PAM utilizzata per le varie sottoportanti, cosı̀ come pure l’efficienza
spettrale dipende solo dall’ordine M .
Considerando l’hardware a disposizione, si sono dunque scelte due differenti mo-
dulazioni di test:
Può venire utile comparare tali costanti con quelle usate in lavori precedenti (vedi
[5]) limitati all’utilizzo dei convertitore pensati per applicazioni audio:
• 16MB di memoria Flash non volatile, 64MB di Flash NAND, 2MB di SRAM;
• interfaccia I 2 C;
• interfaccia VLYNQ;
Figura 3.31: Schema a blocchi della scheda EVM del DSP C6424.
I primi test di interconnessione della scheda EVM del C6424 sono stati effettuati con la
scheda di valutazione del DAC5682 (DAC a 16bit, 1GSPS); tale integrato si è rivelato
tuttavia troppo performante per gli scopi del progetto qui descritto e nella pratica
inutilizzabile a causa di PLL interni non in grado di agganciarsi ai segnali generati dal
DSP (perchè a frequenze troppo basse).
Si è quindi passati all’uso di una scheda più adatta, nella fattispecie la scheda EVM
dell’integrato DAC2904, il cui schema elettrico è riportato nella figura 3.33. Si noti
in particolare che ingressi e uscite sono adattate a 50Ω (tramite R38 e R27-R30) e
che l’uscita (IOUT1 sul connettore J4) è accoppiata in AC (tramite il trasformatore
T2; questa configurazione di uscita è quella suggerita nel datasheet del DAC2904 per
la conversione differenziale-single/ended). Il risultato è che il DAC non è in grado di
generare segnali a frequenze troppo basse, le quali sono tagliate dal filtro passa-alto di
uscita. Una caratterizzazione accurata della funzione di trasferimento della circuiteria
analogica di uscita è difficile ma sarebbe importante per un uso corretto della scheda.
Fra i dati più importanti listati nel relativo datasheet è riportato nella fig. 3.34
il set delle specifiche temporali da rispettare per inviare correttamente dati digitali
al DAC; il funzionamento è in effetti molto semplice: quando sul pin di ingresso del
clock il DAC avverte una transizione basso-alto, allora campiona gli ingressi dei dati
(14 pin) e usa il valore quantizzato su quei 14bit per generare una tensione analogica
di uscita.
8
R5 U4A W1 SMA
1K 3 EXTIO
R7 1 R9 1 3
U2
LT1004D-1.2 2 1K
C6
2
3
4
5
500
2
TLV2462D FSA2
FSA1
4
+ C5 .1uF
R14
J1 CLK1
C7 R15 R16 R10
22 10uF
DATA PORT 1 2K 2K 0 Ohm
R1 0.1uF AVDD
34 33 R11
32 31 22 Ohms
1
0 Ohm
30 29 AVDD R12
D0_1 BD0_1
28 27 W2
D1_1 BD1_1 C21 2 0 Ohm
26 25
D2_1 BD2_1 R13
24 23 .1uF
D3_1 BD3_1
22 21 0 Ohm (Note 1)
D4_1 BD4_1
3
20 19 J14
D5_1 BD5_1
18 17
D6_1 BD6_1 SMA
16 15
D7_1 BD7_1
14 13
D8_1 BD8_1 U4B AVDD 1
12 11 5
D9_1 BD9_1
10 9 7
D10_1 BD10_1 R40
8 7 6
2
3
4
5
1
D13_1 BD13_1 R44
2 1 W5 J3
NOT USED 2 0 Ohm IOUT2
R2 DVDD
1
22 Ohms W6 1 T1 6 1
3
AVDD 2
POWER DOWN R19
2
100
2
3
4
5
3
C11
48
47
46
45
44
43
42
41
40
39
38
37
0.1uF 3 4
T1-1T-KK81
R45
PD
C12 R18 (Note 1) J15
N/C
+VA
R17 0 Ohm
FSA1
FSA2
SMA (Note 1)
GSET
49.9
IOUT1
IOUT1
IOUT2
IOUT2
AGND
C13 (Note 1)
REF_IN
BD13_1 1 36 BD0_2 49.9 22 pF
D13_1 D0_2 1
BD12_1 2 35 BD1_2
D12_1 D1_2 (Note 1) 22 pF
BD11_1 3 34 BD2_2
D11_1 D2_2
BD10_1 4 33 BD3_2
2
3
4
5
D1_1
D0_1
DGND
+VD
WRT_1
CLK_1
CLK_2
WRT_2
DGND
+VD
D13_2
D12_2
D3_2 BD3_2 R29
22 21
D4_2 BD4_2 2 T2
20 19 100
2
3
4
5
D5_2 BD5_2
18 17 T1-1T-KK81
13
14
15
16
17
18
19
20
21
22
23
24
D6_2 BD6_2 BD1_1
16 15
D7_2 BD7_2 BD0_1 BD12_2 1 6
14 13
D8_2 BD8_2 BD13_2
12 11 (Note 1)
D9_2 BD9_2 R46
10 9 C22 C23 J17
D10_2 BD10_2 0 Ohm
8 7 DVDD R27 R28
D11_2 BD11_2 (Note 1) SMA
6 5 49.9 22pF 49.9
D12_2 BD12_2 WRT_1 22pF 1
4 3 (Note 1)
D13_2 BD13_2 C19 R38 (Note 1)
2 1 C20 R32 WRT_2
2
3
4
5
CLK_1
(Note 1) 49.9 24.9
R34 (Note 1) .1uF
49.9
R31 CLK1
1
CLK2
W10 R23 R24 R25
22 R21
2 0 Ohm 0 Ohm 0 Ohm
0 Ohm
(Note 1) R33 R35 R37
CLK2
3
R22 R26 0 Ohm 0 Ohm 0 Ohm
(Note 1) (Note 1)
(Note 1)
+∞ +∞
+∞
j2πf t t − Tc /2 − nTc
X̂(f ) = F[x̂(t)] = x̂(t)e dt = x[n] rect ej2πf t dt =
−∞ n=−∞ −∞ Tc
+∞
+∞
t − Tc /2 − nTc
= x[n]F rect = x[n]Tc sinc(f Tc )ej2πf (Tc /2+nTc ) =
n=−∞
Tc n=−∞
+∞
= Tc sinc(f Tc )ejπf Tc x[n]ej2πnf Tc = Tc sinc(f Tc )ejπf Tc X̄(f ) =
n=−∞
+∞
jπf Tc k
= sinc(f Tc )e X f−
Tc
k=−∞
1. nel segnale
ricostruito sono presenti le ripetizioni spettrali dell’intervallo base
Fc Fc
− 2 ; 2 a cavallo delle frequenze ±kFc con k ∈ {N\1}. Per rimuovere tali
repliche si è quindi provveduto ad usare un filtro anti-immagine in cascata al
convertitore (un semplice filtro RC passa-basso del 1o ordine);
2. anche nell’intervallo base − F2c ; F2c = − 2T1 c ; 2T1 c lo spettro di X̂(f ) è diverso
dallo spettro voluto X(f ) a causa della presenza del termine sinc(f Tc )ejπf Tc che
determina lo smorzamento delle frequenze vicine a ± F2c di un fattore sinc( F2c Tc ) ≈
0, 64 ovvero una riduzione del 36%. Per compensare tale effetto si può filtrare
3. Implementazione con processori DSP 71
Appare dunque evidente che l’unico bus digitale parallelo (il DAC ha ingressi pa-
ralleli; questo permette di ridurre la velocità necessaria al master del bus per spedire
una parola dati a parità di bit rispetto una soluzione seriale) utilizzabile è il General
Purpose Input/Output (GPIO); tale bus permette di raggiungere una bitrate teorica
pari a 14bit 25MHz
2 = 175M bps (il fattore due tiene conto del fatto che un ciclo comple-
to di fetch dati al DAC richiede che il pin del clock effettui una transizione basso-alto
seguita da una transizione alto-basso; si veda la fig. 3.34) sufficiente per gestire fino a
circa 12.5M Hz di banda con i 14bit di risoluzione del DAC.
Più nel dettaglio, per effettuare la comunicazione dei dati fra DSP e DAC si è
deciso di generare il segnale di clock tramite uno dei piedini GPIO del DSP. Da un
lato questo permette di essere sicuri che i dati siano già pronti quando il clock effettua
una transizione basso-alto (via software questo si ottiene impostando prima lo stato
dei pin relativi ai dati e solo dopo effettuando la transizione sul pin del clock), dall’al-
tro comporta che il clock ricevuto dal DAC non sia un segnale pulito (in termini di
jitter o phase noise e di frequenza) come quello che si potrebbe ottenere da un PLL
opportunamente agganciato al segnale di clock del DSP.
Poichè tuttavia la scheda EVM del DSP non consente di fornire il clock da una
sorgente esterna (ciò permetterebbe di sincronizzare DSP e DAC con un semplice
generatore di funzioni), nè di prelevarlo su un qualche connettore, si è stati costretti ad
implementare la soluzione precedentemente descritta. Come sarà descritto in seguito
questo si è rivelato un problema critico.
Stabilito dunque l’uso del GPIO come bus digitale di interconnessione, si è pro-
ceduto alla realizzazione di un cavo ad-hoc (vedi foto 3.35 e 3.36) per mappare i pin
disponibili per l’I/O su bus GPIO del connettore J1 della scheda del DSP ai giusti pin
del connettore J5 della scheda del DAC:
72 3. Implementazione con processori DSP
Figura 3.35: Foto della scheda EVM del DSP C6424 collegata alla scheda DAC2904-
EVM.
Figura 3.36: Foto della scheda EVM del DSP C6424 collegata alla scheda DAC2904-
EVM.
3. Implementazione con processori DSP 73
Pin sul conn. Pin sul conn. Bit nel Pin sul conn. Pin sul conn. Bit nel
J1 del DAC DC P1 del DSP banco 23 J1 del DAC DC P1 del DSP banco 23
del GPIO del GPIO
1 = DB13 25 = GP[45] 13o 15 = DB6 9 = GP[38] 6o
3 = DB12 27 = GP[44] 12o 17 = DB5 11 = GP[37] 5o
5 = DB11 14 = GP[43] 11o 19 = DB4 13 = GP[36] 4o
7 = DB10 12 = GP[42] 10o 21 = DB3 17 = GP[35] 3o
9 = DB9 10 = GP[41] 9o 23 = DB2 18 = GP[34] 2o
11 = DB8 8 = GP[40] 8o 25 = DB1 36 = GP[33] 1o
13 = DB7 7 = GP[39] 7o 27 = DB0 32 = GP[32] 0o
Oltre ai pin sopra elencati bisogna ricordare anche che il cavo contiene un pin
dedicato alla massa (pin 98 su DC P1, pin 28 su J1) e un pin dedicato al clock (pin
28 su DC P1 che si connette tramite cavo SMA al conn. J5).
Infine, riguardo all’alimentazione della scheda DAC2904-EVM è stata collegata la
analog VDD (J9) e la digital VDD (J11) assieme ad un alimentatore DC impostato su
4.5V cosı̀ come i relativi connettori di massa (J12 e J10) sono stati collegati assieme.
Per quanto invece concerne il lato software, per poter utilizzare i pin in modalità
GPIO, è necessario agire su alcuni registri interni del DSP al fine di disabilitare le
funzioni di più alto livello con cui quei pin sono multiplexati. La funzione che se ne
occupa è gpioConfig():
void gpioConfig()
{
GPIO_Handle gpio_handle2;
Uint16 pin;
// inizializzo il GPIO
EVM6424_GPIO_init();
CFG_PINMUX1 = 0
| ( 1 << 24 ) // SPBK1 - McBSP1 disabled
| ( 1 << 22 ) // SPBK0 - McBSP0 disabled
| ( 2 << 20 ) // TIM1BK - UART1 enabled, Timer1 disabled
| ( 0 << 16 ) // TIM0BK - Timer0 enabled
| ( 2 << 14 ) // CKOBK - CLKOUT disabled, PWM2 enabled
| ( 0 << 12 ) // PWM1BK - PWM1 disabled, GIO84 enabled
| ( 1 << 10 ) // UR0FCBK - UART0 HW flow control enabled
| ( 1 << 8 ) // UR0DBK - UART0 data enabled
| ( 0 << 4 ) // HOSTBK - VLYNQ + MII + MDIO Mode
// (permette il funz. di GP[64] GP[65] GP[66])
| ( 0 << 0 ); // PCIEN - PCI disabled
74 3. Implementazione con processori DSP
dove le funzioni EVM6424 GPIO init() e EVM6424 GPIO setDir(), nonchè la varia-
bile globale GPIO MODULE 23, sono definite nella libreria di supporto del DSP.
Assieme a gpioConfig(), la quale va chiamata all’inizio del programma che intende
usare il GPIO, è utile anche la funzione gpioFree(), che dualmente va chiamata al
termine del programma:
void gpioFree()
{
// rimetto i registri al loro valore iniziale disabilitando il GPIO
EVM6424_init( );
}
Per testare la corretta funzionalità del bus si sono svolti numerosi test; si riman-
da per maggiori informazioni alla funzione gpioGenerateTestTone() nel software del
trasmettitore.
Per la trasmissione dei dati vera e propria si è invece dapprima scritta una routine
in C:
gpioConfig();
outreg = (Uint32*)(0x01C6703C);
// equivalent to (&GPIO_MODULE_23->regs->OUT_DATA);
setreg = (Uint32*)(0x01C67040);
// equivalent to (&GPIO_MODULE_23->regs->SET_DATA);
3. Implementazione con processori DSP 75
gpioFree();
}\bigskip
Le prestazioni misurate usando questa funzione sono tuttavia abbastanza distanti
dal limite teorico; nel tentativo di aumentare la banda di trasmissione e soprattutto di
migliorare la qualità del segnale di clock (vedi sez. 3.7) si è poi riscritta tale funzione
in assembler:
; ---------------------------------------------------------
; C-CALLABLE FUNCTION:
; void gpioTransmitRealData_asm(Uint16* real_data,
; int data_size)
;
; DESCRIPTION: transmits the samples in real_data to the DAC
;
; C-EQUIVALENT CODE:
; while (real_data<(real_data+data_size*sizeof(Uint16)))
; {
; GPIO_BANK2_OUT_DATA = *real_data++ & 0x3FFF;
; // two effects: 1) puts data on the BUS
; // 2) drives low the PIN_DAC_CLOCK pin
; GPIO_BANK2_SET_DATA = 1<<PIN_DAC_CLOCK; // Set to HIGH
; }
;
; PERFORMANCE: measured frequency up to 21MHz
;
_gpioTransmitRealData_asm:
; real_data pointer is in register A4
; data_size is in register B4
; return location is in register B3
;
; NOTE: constant 0x01C67000 is the base address of GPIO modules 2&3
76 3. Implementazione con processori DSP
TransmissionLoop2:
LDH *A4++,A1 ; [4-slots] load into A1 the contents of
; A4 memory pointer==data[i]
NOP 4
STW A1,*+A3[15] ; put A1 into A3+(15<<2)=A3+0x3C == GPIO’s OUT_DATA
NOP 6 ; (this also drives low the DAC clock pin)
STW A5,*+A3[16] ; put A5 into A3+(16<<2)=A3+0x40 == GPIO’s SET_DATA
; code for transmitting once the given samples and then stop:
; NOP 1 ; to simulate code for forever-tx
; [B0] BNOP TransmissionLoop2,5 ; if B0 == 1, goto TransmissionLoop
NOP 9
B B3 ; return
NOP 5
Con questa funzione si sono verificati notevoli miglioramenti prestazionali (pin del
clock in grado di commutare fino a 21MHz, molto vicino quindi alla max. frequenza
3. Implementazione con processori DSP 77
dac_conversion()
insert_virtual_carriers():
DSP_ifft32x32(): upconvert()
g_buffer1[i*2] = \
(_mpy32ll(g_buffer2[i*2],g_filter_response_fft[i*2]) -
_mpy32ll(g_buffer2[i*2+1],g_filter_response_fft[i*2+1]))>>32;
g_buffer1[i*2+1] = \
(_mpy32ll(g_buffer2[i*2],g_filter_response_fft[i*2+1]) +
_mpy32ll(g_buffer2[i*2+1],g_filter_response_fft[i*2]))>>32;
}
Per maggiori dettagli sulle altre parti di codice relative all’elaborazione del segnale
si può fare riferimento alla sezione 3.4 che contiene la spiegazione dettagliata dei passi
da eseguire in modulatore OFDM, o direttamente al codice sorgente.
Nella figura 3.39 è mostrato il segnale finale visualizzato su un oscilloscopio all’u-
scita del DAC. Nella figura 3.40 è mostrato il relativo spettro di potenza cosı̀ come è
stato misurato.
Figura 3.38: Combinazione dei filtri h1 , h2 ...hk per il filtraggio di una sequenza x[n]
con la tecnica della convoluzione veloce.
Figura 3.39: Segnale OFDM per la modulazione di test implementata sul trasmettitore
(basato su DSP C6424).
82 3. Implementazione con processori DSP
Figura 3.40: Spettro del segnale OFDM generato dal trasmettitore e misurato
attraverso uno spectrum analyzer.
Grazie alla User’s Guide relativa (Texas Instruments literature number: SPRU523G)
si è implementato dunque un piccolo web server HTTP sul DSP in grado di generare
pagine HTML al volo. Il codice relativo è nel file client.c e sostanzialmente si limita
a configurare la scheda EVM con un indirizzo IP statico (192.168.2.1) ed ad impostare
come gateway predefinito un altro indirizzo IP statico (192.168.2.100).
Collegando quindi con un cavo Ethernet cross il DSP con un PC configurato con
l’indirizzo IP statico impostato come gateway e accedendo con un normale browser
internet alla pagina http://192.168.2.1 appare la pagina inviata dal DSP all’host-
PC (vedi la fig. 3.41).
L’uso del framework Ethernet tuttavia pone alcuni vincoli sulla struttura del pro-
gramma, visto che il DSP viene internamente configurato per rispondere agli even-
ti generati dalla ricezione di ogni pacchetto dati. Nella pratica questo costringe ad
abbandonare il consueto paradigma del main() tipico del C; nel programma svilup-
pato l’esecuzione inizia dalla funzione StackTest() e la chiamata alla funzione interna
NC NetStart() mette il DSP in una attesa infinita di richieste dall’interfaccia Ether-
net. Il codice quindi che esegue la modulazione è parte di una routine (cgiTx())
che viene chiamata quando si accede ad una certa pagina del webserver (nella fat-
tispecie, http://192.168.2.1/tx.cgi). Difatti, per usare il framework NDK tutte
le funzioni che rispondono a input dall’utente devono essere callback ovvero funzioni
precedentemente collegate alla richiesta di una certa pagina web.
Questo sistema costringe (ma non si tratta di una limitazione eccessiva per i nostri
scopi) ad una trasmissione a burst perchè se la funzione cgiTx() non restituisce il
controllo al chiamante in tempi brevi, il DSP non è più in grado di rispondere ad
ulteriori richieste provenienti dall’interfaccia Ethernet.
3. Implementazione con processori DSP 83
Figura 3.41: Pagina web generata dal DSP e accessibile sull’host-PC all’indirizzo
http://192.168.2.1.
La memoria
Con un bus di indirizzi di 32 bit il DSP C6455 può indirizzare fino a 4 GB di memoria,
liberamente utilizzati per la memorizzazione del codice e dei dati. In questa sezione
si riportano le due mappe di memoria del processore posizionato sul DSK Base Board
e di quello del Mezzanine Board al solo scopo di illustrare come viene utilizzata la
memoria esterna, cioè quella residente sulla piattaforma EVM.
Figura 3.42: Schema a blocchi della scheda EVM del DSP C6455.
Figura 3.43: Schema a blocchi della Mezzanine Board del DSP C6455.
3. Implementazione con processori DSP 85
Figura 3.44: Mappa di memoria per il DSP C6455 del DSK Base Board.
e GAL (generic array logic), permette di realizzare circuiti logici molto complessi,
corrispondenti a molti dispositivi PAL collegati fra loro e a migliaia o decine di migliaia
di porte logiche. Caratteristiche della logica CPLD sono: una memoria non volatile
che permette di ottenere la configurazione desiderata già all’avvio del sistema senza
utilizzo di ROM esterne e la possibilità di implementare numerose funzioni, semplici o
complesse. I CPLD vengono usati per applicazioni particolari dove sono richieste alte
velocità e bassi costi o (come nel caso della nostra piattaforma EVM) funzionalità di
glue logic ovvero di interfacciamento tra due dispositivi complessi.
Il DSK C6455 utilizza un CPLD Altera EPM3128TC100-10 che possiede le seguenti
funzionalità:
L’interfaccia ethernet
Una interfaccia ethernet Intel LTX971ACE da 10/100 Mbps è collegata al controller
interno EMAC (ethernet MAC) del DSP. Tale interfaccia è risultata estremamente
utile nell’implementazione del ricevitore ed è descritta più nel dettaglio in seguito.
L’interfaccia JTAG
Il DSK prevede un controller di emulazione integrato come strumento principale per
il debug, tuttavia ha la possibilità di supportare un emulatore esterno attraverso una
connessione JTAG a 14 o 60 pin. Quando l’interfaccia a 14 o 60 pin è inserita nella
scheda l’emulatore integrato è disattivato. L’interfaccia a 60 pin supporta la funzione
di trace se viene utilizzata con una appropriata piattaforma di emulazione.
Il dispositivo McBSP
Il dispositivo Multichannel Buffered Serial Port (McBSP) fornisce un’interfaccia di
comunicazione seriale sincrona e ad alta velocità fra la CPU e alcuni dispositivi esterni.
La piattaforma TMS320C6455 possiede due di tali dispositivi (porte seriali) indicati
dagli acronimi McBSP0 ed McBSP1.
3. Implementazione con processori DSP 87
Come illustrato nella figura 3.45, il dispositivo McBSP prevede un percorso per i
dati e uno di controllo. La lista dei pin è presente nella figura 3.46 in cui I indica un
pin di ingresso, O indica un pin di uscita e Z un pin ad alta impedenza. I dati vengono
scambiati attraverso il pin Data Transmit (DX) in trasmissione ed il pin Data Receive
(DR) in ricezione. Le informazioni di controllo (temporizzazione e sincronizzazione di
frame) sono comunicate attraverso i pin CLKX, CLKR, FSX e FSR.
La CPU comunica con il dispositivo McBSP attraverso dei registri di controllo
accessibili mediante un bus periferico interno. Il blocco di controllo genera il clock in-
terno, il segnale di sincronizzazione del frame, controlla la correttezza di questi segnali
e seleziona i canali da utilizzare nella comunicazione. In caso di errore nell’esecuzio-
ne di una delle precedenti operazioni esso invia segnali di interrupt alla CPU o al
controllore del DMA attraverso i pin RINT, XINT, REVT e XEVT.
Come mostrato nella figura 3.45, le operazioni di ricezione e trasmissione vengono
entrambe gestite mediante dei buffer. In ricezione il dato arriva sulla linea DR e viene
shiftato nel registro Receive Shift Register (RSR). Una volta che un intero elemento (a
8, 12, 16, 20, 24 o 32 bit) viene ricevuto, il contenuto del registro RSR viene copiato
nel Receive Buffer Register (RBR) solo se questo non è ancora stato svuotato dalla
precedente operazione di ricezione. In trasmissione il dato viene scritto dalla CPU o
dal controllore del DMA sul registro DXR. Se il registro XSR è vuoto, ovvero il dato
precedentemente trasmesso è già stato inviato al codec, il dato in DXR viene copiato
nel registro XSR. In caso contrario il contenuto di DXR viene copiato nel registro XSR
solamente quando l’ultimo bit del dato è stato shiftato sulla linea di trasmissione DX.
Il compander 3 hardware permette la compressione e l’espansione dei dati nei formati
µ-law e A-law e il trasferimento dei dati iniziando dal LSB o dal MSB.
I segnali di controllo
I registri di controllo
Il meccanismo di controllo della porta McBSP viene configurato mediante i bit di stato
di otto registri a 32 bit accessibili attraverso il peripheral bus. La lista dei registri della
porta seriale viene illustrata nella figura 3.47 (i registri RBR, RSR, XSR non sono
direttamente accessibili dalla CPU e dal DMA/EDMA controller, mentre il registro
DRR può solo essere letto, non scritto dalla CPU e dal DMA/EDMA controller ).
Il Serial Port Control Register (SPCR) e il Pin Control Register (PCR) configura-
no la porta seriale. Il Receive Control Register (RCR) e il Transmit Control Register
3
Questo termine deriva dall’unione delle parole compressor ed expander.
3. Implementazione con processori DSP 89
I segnali di stato
La porta seriale McBSP possiede quattro segnali di stato che sincronizzano le ope-
razioni di lettura/scrittura della CPU e del controller EDMA3, evitando cosı̀ che un
dato vecchio venga letto due volte o che si scriva su un dato nuovo. Il Receive Event
(REVT) segnala al controller EDMA3 che il contenuto di RBR è stato copiato in DRR
e che il nuovo dato può essere letto. Il Transmit Event (XEVT) segnala al controller
EDMA3 che il contenuto di DXR è stato copiato in XSR e che il nuovo dato può essere
scritto. Il Receive Interrupt (RINT) e il Transmit Interrupt (XINT) segnalano alla
CPU il cambiamento di stato, rispettivamente, del ricevitore e del trasmettitore della
porta seriale. L’interrupt che segnala il cambiamento di stato può essere configurato
secondo una delle seguenti opzioni:
• il livello logico prevede una intestazione che specifica il tipo di accesso e il payload
di lunghezza massima 256 byte (se previsto);
• il livello fisico comprende campi relativi alla priorità, al controllo degli errori e
all’acknowledgement.
S MA R 66 .1uF
J7 1 2 1 6 1 R7 3 4 R6 R 26
1 C71
DNI EN D WBC1-1 49.9 WBC1-1 24.9 49.9
5.6pF
DNI R67 DNI C 66
4
3
2
5 DNI R28
2 2 1 2 IN M _ A SH4
4.99
C15 C16 .1uF
2
1 .1uF 1 .1uF
Figura 3.49: Schematico per l’ingresso analogico (canale A) della scheda ADS63P45-
EVM.
Una possibile soluzione per rilevare tale evento sarebbe quella di impostare un pie-
dino GPIO del DSP come sorgente di interrupt e collegarlo al clock di uscita dell’ADC;
questo significherebbe però dover processare interrupt ad una frequenza Fc ovvero al-
la frequenza con cui si genera il segnale di clock dell’ADC. Purtroppo il DSP non
è progettato per gestire un gran numero di interruzioni al secondo (per campionare
a 10MHz sarebbero necessarie 10 milioni di interruzioni al secondo!) e quindi tale
approccio non è fattibile.
Figura 3.50: Foto della connessione fra la scheda EVM del DSP c6455 e il convertitore
ADS62P45.
Figura 3.51: Foto della connessione fra la scheda EVM del c6455 e il convertitore
ADS62P45.
3. Implementazione con processori DSP 95
Oltre ai pin sopra-listati bisogna ricordare anche che il cavo contiene un pin dedi-
cato alla massa (pin 2 su J1 sull’ADC, pin 1 su J1) e un pin dedicato al clock (pin 39
su J3 che si connette tramite cavo SMA al conn. J4 sulla scheda dell’ADC).
Infine, riguardo la alimentazione è stata collegato un alimentatore DC impostato
su 5V al connettore P5 e i connettori di massa P4 e P2 sono stati collegati assieme.
Per quanto invece concerne il lato software le procedure di inizializzazione del GPIO
sono diverse da quelle usate per il DSP c6424; di seguito si riportano quindi le versioni
delle funzioni gpio config() e gpio free() per il DSP c6455 nonchè la funzione gpio init()
che va anch’essa chiamata ad avvio programma:
void gpio_init()
{
Bool gpioEn;
if (g_bAlreadyConfigured == 1)
return;
status = CSL_gpioHwControl(g_hGpio,
CSL_GPIO_CMD_CONFIG_BIT, &config);
if (status != CSL_SOK) {
printf("GPIO: GPIO pin %d configuration error.\n", i);
return;
}
}
void gpio_free()
{
CSL_Status status;
if (g_bAlreadyConfigured == 0)
return; // nothing to free
status = CSL_gpioClose(g_hGpio);
if (status != CSL_SOK) {
printf("GPIO: Unable to close the instance. "
"[status = 0x%x].\n", status);
return;
}
La routine per l’acquisizione effettiva dei dati viene presentata qui di seguito
direttamente nella sua forma ottimizzata in assembler scritto a mano:
98 3. Implementazione con processori DSP
; ------------------------------------------------------------
; C-CALLABLE FUNCTION:
; void gpioGetSamples_asm(Uint16*data, int data_size)
;
; DESCRIPTION:
; generates the ADC clock (on GPIO pin #0) and
; stores data_size samples in *data location.
; Note that data memory location has to be big enough!
; Before storing data, first 256 samples from the ADC
; are discarded as they usually contain invalid values
;
; C-EQUIVALENT CODE:
;\qquad for(i=0; i<data_size; i++)
; {
; GPIO_CLR_DATA = (1<<CLOCK_ADC_PIN);
; GPIO_SET_DATA = (1<<CLOCK_ADC_PIN);
;\qquad data[i] = GPIO_IN_DATA;
;\qquad }
;
_gpioGetSamples_asm:
; data pointer is in register A4
; data_size is in register B4
; return location is in register B3
;
; loop counter ’i’ is allocated in register A9
; registers A1,A3,A5,B0,B1 are used as temporaries
MVKL 0x2B00000,A3
; move 0x0000 constant in lower part of A3 reg
MVKH 0x2B00000,A3
; move 0x02B0 constant in upper part of A3 reg
MVK 1,A5
; move (1<<PIN_ADC_CLOCK)==(1<<CSL_GPIO_PIN0)==1 into A5
MVK 256,B1 ; move 256 in B1
NOP 9
NOP 9
B B3 ; return
NOP 5
Per testare la corretta funzionalità del collegamento fra DSP e ADC si sono poi
svolti numerosi test (campionamento di un’onda sinusoidale, etc). Per maggiori infor-
mazioni vedi [7].
Per velocizzare i tempi di sviluppo e fornire un feedback visivo sui dati acquisiti
il firmware per il DSP del ricevitore utilizza una applet in tecnologia Flash deno-
minata FusionCharts Free (vedi http://www.fusioncharts.com/free); tale applet
richiede l’utilizzo di file XML per la graficazione delle forme d’onda acquisite e quindi
il programma sviluppato è in grado di generare “al volo” tali file.
Nelle figure 3.53 e 3.52 sono mostrate alcune schermate dell’interfaccia web imple-
mentata sul DSP.
La realizzazione del ricevitore è sempre più impegnativa rispetto a quella del tra-
smettitore (per questo si è utilizzato il DSP C6455, il più potente, a tale scopo); questo
significa in particolare che è necessario fare attenzione alle risorse (di elaborazione e
memoria) richieste da ogni fase della demodulazione.
più difficile applicazione nel nostro caso a causa della presenza del framework Ethernet.
Rimane infatti da esplorare come può funzionare il sottosistema EDMA del DSP in
concomitanza con il framework Ethernet.
In ogni caso, a differenza del codice per il trasmettitore, il codice per il ricevitore
su DSP non è stato completato a causa dei problemi che sono di seguito descritti.
Figura 3.54: Foto del segnale di clock spedito dal DSP al DAC come viene mostrato
da un oscilloscopio a 4GSPS (per la modulazione a tempo di simbolo minore).
Figura 3.55: Foto del segnale di clock spedito dal DSP al DAC come viene mostrato
da un oscilloscopio a 4GSPS (per la modulazione a tempo di simbolo maggiore).
3. Implementazione con processori DSP 103
0.45
0.4
0.35
0.3
0.25
0.2
0.15
0.1
0.05
0
0 500 1000 1500 2000 2500 3000 3500
Figura 3.56: Metrica di coarse-timing calcolata dalla funzione OFDM rx() di MATLAB
sui dati campionati dall’ADS62P45.
come è stato salvato in memoria dopo il campionamento dal DSP c6455. Pur effet-
tuando numerosi tentativi il risultato non si discosta mai molto da quello mostrato.
Come appare evidente la metrica è molto diversa da quella tipica che si ha per un
segnale modulato (crf con fig. 3.16) e non supera mai o quasi mai un valore di soglia
adeguato (tipicamente si usa 0.8 o 0.9) che consenta di evitare false detections.
Come si può notare dalla fig. 3.30, il sistema è particolarmente sensibile all’offset
e al jitter di frequenza nelle frequenze di campionamento (da non confondere con il
CFO che è l’offset di frequenza nella portante). Si è dunque proceduto ad una analisi
più accurata dei segnali di clock forniti all’ADC e al DAC.
I motivi di una metrica di coarse timing non funzionante sono quindi da ricercarsi
con tutta probabilità nella qualità dei segnali di clock che determinano la generazione
e l’acquisizione di un segnale analogico non corretto; le possibili fonti di un jitter cosı̀
elevato sono principalmente tre:
1. le schede EVM dei DSP non sono pensate per trasportare segnali ad alta velocità
e in particolare i buffer e i connettori che i segnali in uscita al DSP devono
attraversare non hanno ingressi e uscite adattate, determinando forti onde riflesse
che, pur non alterando il riconoscimento dei valori logici 1 e 0, cambiano il
periodo della forma d’onda in modo aleatorio, dando quindi origine a jitter;
a tale proposito bisogna notare che i segnali in ingresso e uscita al DSP sono
correttamente adattati a 50Ω ma che il problema è la scheda su cui tali segnali
viaggiano.
105
106 4. Implementazione con dispositivi FPGA
da Steve Casselman per sviluppare un computer che implementasse 600 mila porte
riprogrammabili. Casselman ebbe successo e il suo sistema fu brevettato nel 1992.
La Xilinx continuò senza rivali e crebbe velocemente dal 1985 fino a metà anni ’90,
quando iniziarono a presentarsi dei concorrenti, erodendo quote di mercato significa-
tive, tantè che nel 1993 l’Actel, rivale della Xilinx, arrivò a servire il 18 percento del
mercato.
Gli anni ’90 furono un periodo di grande crescita delle FPGA, sia nella loro com-
plessità interna sia nel volume di produzione. Nei primi anni ’90 le FPGA erano
usate principalmente nelle telecomunicazioni e negli impianti di rete; a metà degli an-
ni ’90 le FPGA avevano trovato applicazione nei mercati consumer, automobilistico e
industriale.
E’ da citare anche un’applicazione che ebbe un certo successo e portò alla ribalta le
FPGA nel 1997, quando Adrian Thompson fuse la tecnologia degli algoritmi genetici
con le FPGA per creare un dispositivo di riconoscimento audio.
Una tendenza più recente è stata quella di portare ad un grado superiore l’ap-
proccio architetturale combinando i blocchi logici e le interconnessioni delle FPGA
tradizionali con microprocessori embedded e periferiche correlate per formare un com-
pleto “programmable system-on-chip” (PSOC); esempi di tale tecnologia ibrida può
essere trovata nei dispositivi Xilinx Virtex-II PRO e Virtex-4, che includono uno o più
processori PowerPC integrati; l’Atmel FPSLIC è un’altro dispositivo di tal genere, che
usa un processore AVR in combinazione con l’architettura logica programmabile.
Un approccio alternativo all’uso di processori cablati è quello di fare uso dei pro-
cessori “soft” (o meglio di “soft processor cores”) che sono funzionalmente analoghi
a quelli cablati ma implementati sulle stesse celle logiche general-purpose messe a
disposizione dall’FPGA.
Come accennato precedentemente, molte FPGA moderne hanno la capacità di
essere riprogrammate in tempo reale e questo sta conducendo all’idea di realizzare
sistemi completamente riconfigurabili: CPU che possono adattarsi al meglio al compito
da svolgere.
Per meglio capire l’evoluzione e la crescita del settore sono di seguito forniti alcuni
dati.
Embedded
Multipliers
M4KBlocks M4KBlocks
PL L IOEs PL L
Figura 4.1: Struttura generica delle FPGA Cyclone II. Le colonne IOEs indicano gli
Input/Output Elements; i blocchi M4K sono memoria SRAM integrata.
Come si può intuire dalla breve lista presentata, le FPGA sono estremamente
flessibili ed inoltre sono capaci di trasferire notevoli quantità di dati in ingresso e uscita,
sia grazie al loro elevatissimo parallelismo interno, sia grazie alla grande compatibilità
con tutti gli standard elettrici in uso oggigiorno nei sistemi digitali.
• Una look-up table (LUT) a quattro ingressi, con la quale è possibile implementare
qualsiasi funzione di quattro variabili;
• registi programmabili;
4. Implementazione con dispositivi FPGA 109
Register Chain
Routing From
Previous LE
LAB-Wide Register Bypass
Synchronous
LABCarry-In
Load Programmable
LAB-Wide Packed Register
Synchronous Register Select
Clear
labclkena1
labclkena2
LABCarr y-Out
• modalità normale;
• modalità aritmetica.
Ogni modalità utilizza le risorse degli elementi logici in modo diverso. La pri-
ma è usata per applicazioni logiche generali e per l’implementazione di funzioni lo-
giche combinatorie; in tale modalità gli ingressi della LUT sono collegati a quat-
tro interconnessioni locali provenienti dall’array di blocchi logici (LAB) descritto in
seguito.
La modalità aritmetica (vedi la fig. 4.3) è invece l’ideale per l’implementazione
di sommatori, contatori, accumulatori e comparatori. Un LE in Arithmetic Mode
implementa un full adder a 2 bit ed un catena di riporto.
• catene di registri;
• interconnessioni locali;
4. Implementazione con dispositivi FPGA 111
sload sclear
(LABWide) (LABWide)
Register chain
connection
data1
Three-Input Q Row, column, and
data2
LUT D direct link routing
cout
Register
chain output
Register Feedback
Le interconnessioni locali trasferiscono i segnali fra gli elementi logici (LE) all’in-
terno dello stesso array di blocchi logici (LAB): le connessioni fra le catene di riporto
infatti trasferiscono le uscite del registro di un elemento logico a quello adiacente (al-
l’interno dello stesso LAB). Il compilatore Quartus II posiziona la logica associata
dentro il LAB o nei LAB adiacenti.
La interconnessione LAB locale è pilotata dalle interconnessioni di riga e di colonna
e dalle uscite degli elementi logici di quel LAB. Gli array adiacenti, cosı̀ come pure le
PLL, i moltiplicatori integrati e i blocchi di RAM M4K possono anch’essi pilotare le
interconnessioni locali grazie alle connessioni dirette (direct links), le quali minimizzano
l’uso delle interconnessioni locali di riga e di colonna. Ciascun elemento logico può
pilotare 48 altri elementi logici attraverso interconnessioni locali veloci e “direct link”
(che sono mostrati nella fig. 4.5).
Ciascun LAB contiene logica dedicata per pilotare i segnali di controllo dei suoi
elementi logici, che sono:
• due clock;
• un “clear” sincrono;
• un “load” sincrono;
Ciascun LAB può anche avere fino a 4 segnali non-globali di controllo; lo schema
relativo è mostrato nella fig. 4.6.
112 4. Implementazione con dispositivi FPGA
Row Interconnect
Column
Interconnect
Direct link
Direct link interconnect
interconnect from adjacen t
from adjacent block
block
Figura 4.4: Struttura dell’array di blocchi logici (LAB) della famiglia di FPGA Cyclone
II.
Direct link interconnect from Direct link interconnect from
left LAB, M4Kmemory right LAB, M4Kmemory
block, embedded multiplier, block, embedded multiplier,
PLL, or IOEoutput PLL, or IOEoutput
Local
LAB
Interconnect
Dedicated 6
LABRow
Clocks
Local
Interconnect
Local
Interconnect
Local
Interconnect
Local
Interconnect
labclkena1 labclkena2 labclr1 synclr
• shift di fase;
I moltiplicatori integrati
Le FPGA della famiglia Cyclone II integrano al loro interno dei blocchi moltiplicatori
(vedi la fig. 4.8) ottimizzati per calcoli intensivi per il digital signal processing (DSP),
per i filtri FIR, per la FFT, e per la discrete cosine transform (DCT). I moltiplicatori
hanno due modalità di utilizzo, che dipendono dalle necessità dell’applicazione:
• un moltiplicatore a 18bit;
L’operando di ciascun moltiplicatore può essere un numero con segno o senza segno.
114 4. Implementazione con dispositivi FPGA
Manual Clock 8
Switchover Reference Global
Input Clock ÷c0
Select Signal Clock
fREF = fIN /n
fVCO
CLK0 (1) up
CLK1 inclk0 fIN 8
Charge Loop Global
÷n PFD VCO ÷k ÷c1
Pump Filter Clock
CLK2 (1) inclk1
down (3)
CLK3
fFB 8
÷c2 Global
(2) Clock
÷m
PLL< #>_OUT
Figura 4.7: Schema di funzionamento di una PLL digitale all’interno delle FPGA
Cyclone II.
signa (1)
signb (1)
aclr
clock
ena
Data A D Q
ENA
Data Out
D Q
CLRN ENA
CLRN
Data B D Q
ENA Output
Input Register
CLRN Register
exp{j2pfct}
Local
oscillator
cos(2pfct)
m bits
Re{cn}
bits in {dn} Bit groups Symbol Local sRF(t)
generator … mapper Oscillator
Im{cn}
sen(2pfct)
Figura 4.9: In alto: schema base di un trasmettitore PAM. In basso: schema più
dettagliato dello stesso trasmettitore, con implementazione digitale dei filtri adattati.
4.2.1 Il trasmettitore
Nella figura 4.9 sono riportati due schemi (uno più generico ed uno più pratico) della
struttura di un trasmettitore PAM [1]; in tali schemi a blocchi {dn } è una sequenza di
bit zero/uno WSS (wide sense stationary; stazionaria in senso lato)1 . Il symbol mapper
traduce tale sequenza in una sequenza complessa di simboli di canale {cn } appartenenti
ad un alfabeto M -ario Ac ; esso associa cioè ad ogni gruppo di m = log2 M bit della
sequenza {dn } una coppia di valori che rappresenta un punto nel piano complesso.
L’alfabeto Ac è detto costellazione della modulazione e viene normalmente scelto
fra una delle seguenti classi:
l
1. M -PSK: Ac = {sl = ej2π M , l = 0, 1, ..., M − 1} che consiste nella disposizione
degli M punti su una circonferenza di raggio unitario; il nome phase-shift-keying
deriva dal fatto che i vari simboli complessi sl differiscono solo per la loro fase e
non per il modulo;
1
Ovvero che rispetta le condizioni E{dn } = costante; E{dn+k dn } dipendente solo da k.
116 4. Implementazione con dispositivi FPGA
3. M -QAM: Ac = {±1 ± j, ±2 ± 2j, ..., ±(M − 1) ± j(M − 1)} che consiste nella
disposizione degli M punti su un reticolo centrato nell’origine del piano comples-
so; il nome quadrature-amplitude-modulation deriva dal fatto che le proiezioni dei
simboli
√ che compongono Ac si possono pensare come appartenenti a due segnali
M -ASK indipendenti (quindi due segnali modulati solo in ampiezza), uno asso-
ciato alla parte reale ed uno associato alla parte in fase (e quindi in quadratura,
ovvero ortogonali, l’uno rispetto all’altro);
Tali simboli sono poi forniti, a frequenza di simbolo T1s , in ingresso ad un filtro adat-
tato con risposta impulsiva p(t); il segnale (complesso) risultante s(t, c) è il cosiddetto
inviluppo complesso del segnale modulato e si esprime analiticamente come:
+∞
s(t, c) = cn p(t − nTs )
n=−∞
Tale segnale, se si utilizza un impulso p(t) a radice di coseno rialzato con roll-off α,
di dimostra avere una occupazione di banda pari circa a 0; 1+α 2Ts . Per adattarlo al ca-
nale di trasmissione (che tipicamente è di tipo passa-banda e non passa-basso) è quindi
necessaria una operazione di conversione di frequenza, che si esprime analiticamente
come:
4.2.2 Il ricevitore
Nella figura 4.10 sono riportati due schemi equivalenti della struttura di un demodu-
latore PAM. In tali schemi, assumendo il canale AWGN e con guadagno unitario, il
segnale rRF (t) vale sRF (t) + w(t) dove w(t) è rumore AWGN. L’operazione di down-
conversion, come già illustrato nella sez. 3.4, permette la ricostruzione quasi-perfetta
dell’inviluppo complesso r(t):
Figura 4.10: In alto: schema base di un ricevitore PAM. In basso: schema più
dettagliato dello stesso ricevitore, con implementazione digitale dei filtri adattati.
dove n(t) è un processo aleatorio di rumore AWGN. Tale segnale, passando attraverso
il filtro adattato, viene campionato a frequenza di simbolo generando la sequenza xk ; il
blocco optimum detector poi si occupa di decidere per ogni campione il simbolo com-
plesso, appartenente all’alfabeto Ac , a cui associarlo (tipicamente secondo il criterio
ottimo ML) generando dunque la sequenza {c̃n }. Tale sequenza differisce da {cn } solo
se si sono verificati errori a causa di problemi di sincronismo o di picchi di rumore. La
sequenza viene infine demappata generando la sequenza di bit ricostruiti.
In basso nella figura 4.10 è nuovamente mostrato uno schema pratico di demodu-
lazione in cui si sono messi in evidenza i due rami in fase e in quadratura nonchè il
blocco che si occupa del recupero di sincronismo di clock e di frequenza di portante (il
“synch recovery”); gli algoritmi che si utilizzano per realizzare quest’ultima funzione
sono l’oggetto della sezione che segue.
canale.
Poichè gli algoritmi descritti nella sopracitata sezione non sono in realtà specifici
per l’OFDM in quanto non richiedono nel trasmettitore e nel ricevitore alcuna ope-
razione di FFT o IFFT, si è deciso di riutilizzarli per la temporizzazione coarse del
sistema PAM.
Scartato l’algoritmo proposto da Schmidl e Cox (troppo impreciso) si è preferito
adottare la metrica ed il reference-block proposto da Shi&Serpedin, vista la sua minore
complessità computazionale rispetto quello di Bhargava e Letaief. Si rimanda alla
sezione sopracitata relativa al sistema OFDM per maggiori dettagli.
Figura 4.11: Curva S per lo zero-crossing detector (ZCD) per diversi valori dell’ordine
M della costellazione; vedi [8, fig. 7.17, pag. 386].
se l’offset di campionamento τ̂ k−1 è già corretto e fa sı̀ che l’istante t = kTs −Ts /2+τ̂ k−1
si trovi a metà fra gli istanti di campionamento ideali per ĉk−1 e ĉk .
Per valutare le prestazioni di un algoritmo di symbol timing si può fare riferimento
alla curva S, ovvero all’aspettazione della quantità e(k) al variare di τ̂ = Tδs (che è
l’offset temporale da stimare ad anello aperto); se lo stimatore è perfettamente lineare
la curva S diviene una retta. La curva S per lo ZCD è mostrata nella fig. 4.11.
Si rimanda a [8, pag. 386] per ulteriori informazioni dello ZCD (self-noise, confronto
con l’algoritmo Mueller&Mueller, etc).
4.4.1 Il trasmettitore
Lo script PAM tx.m contiene la funzione PAM tx() che proprio come OFDM tx() richiede
che siano dapprima inizializzate alcune costanti presenti sia nel trasmettitore che nel
ricevitore (cosa di cui si occupa lo script PAM system.m).
La funzione calcola i campioni di uscita per un frame PAM, il quale è composto da
un numero fisso Nsynch symbols per f rame di simboli noti (il reference block della metrica
di Shi&Serpedin descritto nella sezione precedente, usato anche per il symbol timing
fine) e da un numero fisso Ndata symbols per f rame di simboli PAM che codificano dati
utili.
Non vi sono altre sostanziali differenze con quanto già detto a proposito della
funzione OFDM tx().
4.4.2 Il ricevitore
La funzione PAM rx() si occupa della demodulazione utilizzando gli algoritmi descritti
nella sez. precedente. Il valore del parametro SIGNAL SOURCE determina la sorgente
dei dati analizzati dalla funzione; in modalità “MATLAB TX ” vengono analizzati i
dati generati da MATLAB; in modalità “SIMULINK TX ” vengono analizzati quelli
prodotti dal modello Simulink che verrà descritto nella sez. 4.5.
Sui dati caricati la funzione effettua le operazioni di conversione di frequenza
(down-conversion), filtraggio e calcolo della metrica di coarse timing in maniera del
tutto simile a quanto fa OFDM rx().
Relativamente al calcolo della metrica di coarse timing, per il nostro sistema si
è scelto un blocco di dimensione N = 16 e la metrica classica (vedi eq. (3.67)) è
stata modificata per renderne più agevole l’implementazione (in Simulink, descritta in
seguito):
Λ1 (θ̃) = rT0 (θ̃)r1 (θ̃) − rT1 (θ̃)r2 (θ̃) − rT2 (θ̃)r3 (θ̃)
Λ2 (θ̃) = rT1 (θ̃)r3 (θ̃) − rT0 (θ̃)r2 (θ̃)
Λ3 (θ̃) = rT0 (θ̃)r3 (θ̃)
Ts
φ̂CP O = ∠r θ̃ + m − ∠β(m)
Tc
requ (t) = r(t)e−j φ̂CP O (4.4)
in cui m è l’indice del simbolo noto scelto per l’equalizzazione, β(m) è il simbolo di
canale scelto, θ̃ è l’indice del campione ritornato dalla metrica di coarse-timing, r(t) è
il segnale (complesso) ricevuto in banda base dopo il filtraggio adattato.
Un fattore importante da tenere in conto nella scelta del valore esatto del parametro
m è che in questa fase non si è ancora effettuata
l’operazione di stima fine del symbol
Ts
timing e quindi in generale r θ̃ + m Tc non corrisponde al campione del simbolo m-
esimo del reference-block ma disterà da esso fino a ± TTsc campioni. Per questo è bene
scegliere una “zona” (tramite la selezione del valore di m) del reference-block trasmesso
che sia costituita da più di due-tre simboli dello stesso valore, in modo da essere il più
insensibile possibile nella fase di equalizzazione agli errori di timing.
Ottenuto il segnale equalizzato requ (t) la funzione PAM rx() procede con la stima
fine del symbol-timing tramite l’eq. (4.1) dello stimatore ZCD descritto nella sez.
precedente.
Un esempio di andamento del segnale di errore e(k) computato è mostrato nella
fig. 4.12; si può notare che la funzione va spesso a zero a causa di punti nel reference-
block in cui ĉk−1 − ĉk = 0; tuttavia complessivamente l’inviluppo del segnale ha un
andamento che tende a zero (senzaperò raggiungerlo perfettamente).
Questo è dovuto, come già detto, al fatto che lo stimatore ZCD assume che il
segnale attraversi lo zero sempre a metà della coppia di simboli di canale filtrati che
determinano la transizione; questo non è vero, come appare evidente, ad esempio, dalla
fig. 4.13: il segnale segue traiettorie varie e passa per lo zero alle volte prima, alle volte
dopo rispetto la metà di un tempo di simbolo Ts .
Due note ulteriori sullo stimatore di symbol timing fine sono:
−50
−100
−150
−200
−250
−300
−350
−400
−450
0 5 10 15 20 25 30 35
Index k of the synchronization symbol
Figura 4.12: Segnale errore e(k) per un frame PAM contenente 16 simboli di sincro-
nizzazione (e in cui la stima coarse fornisce l’indice di un campione posizionato oltre
l’istante ideale di campionamento).
6 Eye Diagram for In−Phase Signal
x 10
1
0.5
Amplitude
−0.5
−1
−0.5 −0.4 −0.3 −0.2 −0.1 0 0.1 0.2 0.3 0.4
Time
0.5
Amplitude
−0.5
−1
−0.5 −0.4 −0.3 −0.2 −0.1 0 0.1 0.2 0.3 0.4
Time
Figura 4.13: Diagramma ad occhio relativo alla trasmissione di 4000 simboli PAM
(4-PSK), con filtro a radice di coseno rialzato di ordine 99 con coefficiente di roll-off
α = 0.5, e con un SNR infinito.
4. Implementazione con dispositivi FPGA 123
E’ chiaro quindi che il fattore γ rappresenta un grado di libertà in più che consen-
te di ottenere un valore e(k) che si possa effettivamente usare nell’aggiornamento
dell’offset fine τ̂ k . Si noti poi che γ è a tutti gli effetti una costante perchè il valo-
re requ,max è una costante grazie alla presenza dell’AGC prima del campionatore
A/D, come già descritto a proposito del timing coarse.
Proseguendo nell’analisi di PAM rx(), dopo il symbol timing fine rimangono solo
le operazioni di campionamento a tempo di simbolo e di decisione, che avvengono in
maniera uguale a come quelle descritte per OFDM rx().
Infine bisogna notare che il ricevitore è, nonostante la scelta di base di mantenerlo il
più semplice possibile per facilitare la successiva implementazione in Simulink, piutto-
sto robusto nei confronti del rumore introdotto dal canale. Nella fig. 4.14 sono infatti
mostrati i simboli di canale ricevuti per tre diversi valori di rapporto segnale-rumore.
1.5
0.5
Quadrature
−0.5
−1
−1.5
Figura 4.14: Simboli di canale ricevuti (dopo l’equalizzazione) per un rapporto segnale-
rumore infinito (punti rossi), pari a 6dB (punti blu) e per 0dB (punti verdi).
4. Implementazione con dispositivi FPGA 125
PAM.
SIGNAL PROCESSIN
G SIGNAL OUTPU
T
D1
START CLK OUT
TS CLOCK D1 D1 D1 D1
I I RF SIGNAL o33:0
Ts clock D1
TS CLOCK I BITS INPUT I BITS
outSig
generator accuracy RF signal
D1 D1 reducer
Q Q VALID OUTPUT
D1 INPUT Q BITS
B0 B0 D1 D1
I BITS DATA I BITS Q BITS The RF signal is then
D1 Up conversion RF signal samples should be comprised transmitted to the DAC
NEXT B1 B1
D1 D1
D1 Q BITS DATA Q BITS DATA NEXT
VALID OUTPUT VALID INPUT
PAM_dac_input.mat
Data bit groups Channel symbols
Synchronization To File
generator mapper
channel symbols
insertion
SIM_rf
To Workspace
20 ns Once the frame has been transmitted, it endlessly transmit zeroes to the .DAC
Clock Signal Compiler
NOTE: the number of cycles simulated by Simulink must be greater or equal to (Nsynch_symbols+Ndata_symbols)*Ts+TstartupNCO
where TstartupNCO ~= 50 clock cycles
Figura 4.15: Rappresentazione a più alto livello del modello Simulink del trasmettitore
4. Implementazione con dispositivi FPGA
4. Implementazione con dispositivi FPGA 127
0.5
0
−1
−1
100
0
−100
−2
200 400 600 800 1000 1200
Sample index
Figura 4.16: Principali segnali generati dai blocchi del modulatore PAM.
tutto il sistema.
Per il modello sviluppato si sono scelti i seguenti parametri di modulazione (per
facilitare il debugging):
TP AM f rame = (Nsynch symbols per f rame + Ndata symbols per f rame ) Ts = 16us
BRP AM
η P AM = = 1.33 bit/s/Hz
BWP AM
Come già accennato tali valori sono solo di prova e serviranno in futuri lavori a
testare il sistema hardware per valutare eventuali criticità del sistema; in caso positivo
sarà facile migliorare le prestazioni del sistema agendo sui parametri di modulazione
e migliorando il sistema in termini di compattezza e di numero di bit utilizzato.
Il sistema di test, sempre per facilitare il debug, è stato infatti realizzato utiliz-
zando un ampio numero di bit per tutti i segnali; con uno studio di bit-accuracy sarà
però possibile diminuire l’accuratezza della rappresentazione usata in numerosi punti
diminuendo cosı̀ la quantità di risorse hardware dell’FPGA attualmente richieste dal
modello.
A tal fine sarà importante valutare il rapporto segnale rumore di quantizzazione
SN Rq lungo tutto il percorso del modulatore, tenendo conto del rumore (dovuto agli
errori numerici) introdotto da ciascun blocco, assicurandosi che tutti i bit forniti al
DAC per rappresentare i campioni di uscita siano utilizzati per rappresentare segnale
(e non rumore). Naturalmente bisognerà poi assicurarsi che all’uscita del DAC il
rapporto segnale rumore SN R sia circa uguale al rapporto SN Rq , cioè che il rumore
analogico all’uscita sia circa uguale al rumore di quantizzazione.
I LNA FEEDBACK
READY
Q
Equalizer
4. Implementazione con dispositivi FPGA
system_ready AND
50Mhz global clock
20 ns
Clock
Signal Compiler
Logic: N/A
RAM: N/A
transitions indicate the points where the signal SIM_output_bits encodes two valid output bits.
DSP: N/A
Resource Usage NOTE: the number of cycles simulated by Simulink must be greater or equal to
129
Figura 4.17: Rappresentazione a più alto livello del modello Simulink del ricevitore
130
I
1 d x25 q
0
Ts sampler
signal
reset
SI(43:0)
DL_inphase
Delay_line
word_1(43:0)
word_2(43:0)
word_3(43:0)
word_4(43:0)
word_5(43:0)
word_6(43:0)
word_7(43:0)
word_8(43:0)
word_9(43:0)
word_10(43:0)
word_11(43:0)
word_12(43:0)
word_13(43:0)
word_14(43:0)
word_15(43:0)
word_16(43:0)
dl_end
dl_start
I TSS Goto Goto1 Goto2 Goto3 Goto4 Goto5 Goto6 Goto7 Goto8 Goto9 Goto10 Goto11 Goto14 Goto15 Goto12 Goto13
[R0_0] [R0_1] [R0_2] [R0_3] [R1_0] [R1_1] [R1_2] [R1_3] [R2_0] [R2_1] [R2_2] [R2_3] [R3_0] [R3_1] [R3_2] [R3_3]
2
[R0_0] A
0 R0 dot R1
[R0_1] A
1
[R0_2] A
2
[R0_3] A R0dotR1
3
[R1_0] B A dot B +
0
[R1_1] B
1
[R1_2] B
2
[R1_3] B
3
[R1_0] A R1 dot R2
0
[R1_1] A
1
[R1_2] A
2
[R1_3] A R1dotR2
3
[R2_0] B A dot B
0
[R2_1] B
1
[R2_2] B
2
[R2_3] B
3
a
>= sel(0:0)
[R2_0] A R2 dot R3 4000000 b
0
[R2_1] A 0 MUX 1
1 Threshold Comparator coarse trigger
[R2_2] A COARSE TRIGGE
R
2 R2dotR3 Metric value
[R2_3] A too low
3
[R3_0] B A dot B
0 Multiplexer
[R3_1] B
1 n
[R3_2] B
2 metric
[R3_3] B
3
[R0_0] A R0 dot R3
0
[R0_1] A
1
[R0_2] A
2
[R0_3] A R0dotR3
3
A dot B + NOTE: the quadrature samples are discarded by
[R3_0] B
0
the coarse timing logic since the Shi&Serpedin
[R3_1] B
1 metric works well also considering only the real
[R3_2] B parts of the samples (see PAM_rx.m)
2
[R3_3] B
3
Figura 4.18: Modello Simulink del blocco “Shi-Serpedin coarse timing metric”.
2 d x25 q QUADRATUR
E QUADRATURE_DELAYED 3
Q TSS
IMPORTANT: on these wires valid outputs are available Ts sampler1
Delay matcher
4. Implementazione con dispositivi FPGA
valore θ̃ calcolato tramite uno stimatore nello script MATLAB diviene la transizione
di un segnale nel modello Simulink.
Tale segnale aziona tutto il resto del ricevitore ed in particolare l’equalizzatore
(vedi la fig. 4.19), il quale memorizza N TTsc campioni sia per la parte in fase che per la
parte in quadratura in memorie FIFO, cosı̀ da introdurre nei segnali da elaborare un
ritardo pari a quello introdotto dal blocco di coarse-timing. Se infatti il primo simbolo
PAM del frame è localizzato al campione di indice θ, il segnale “COARSE TRIGGER”
ha una transizione in corrispondenza del campione di indice θ̃ + N TTsc (dove θ̃ = θ in
caso di una stima perfetta).
L’equalizzatore utilizza il campione di indice θ̃ + (N + m) TTsc per effettuare la sti-
ma del CPO e genera i segnali di uscita “I EQU” e “Q EQU” tramite l’eq. (4.4)
opportunamente semplificata:
requ [n] = r[n]e−j φ̂CP O = (Re{r[n]} + j Im{r[n]}) (cos φ̂CP O − j sin φ̂CP O ) =
= Re{r[n]} cos φ̂CP O + Im{r[n]} sin φ̂CP O +
j Im{r[n]} cos φ̂CP O − Re{r[n]} sin φ̂CP O
da cui:
La vera semplificazione consiste però nel modo in cui si possono esprimere il coseno
ed il seno:
Ts
cos φ̂CP O = cos ∠r θ̃ + (N + m) − ∠β(m) =
Tc
Im{r θ̃ + (N + m) TTsc }
= cos arctan − ∠β(m) =
Ts
Re{r θ̃ + (N + m) Tc }
q0
= cos arctan − ∠β(m)
i0
in cui si è posto q0 = Im{r θ̃ + (N + m) TTsc } e i0 = Re{r θ̃ + (N + m) TTsc } (parte
reale e immaginaria del campione di ingresso usato per la stima).
Posto poi y = tan x, x = arctan y per il teorema della funzione inversa2 risulta:
2
Le ipotesi di tale teorema richiedono che la funzione tan x sia continua, strettamente crescente e
derivabile con derivata non nulla in un intervallo [a, b] (vedi [4, equ. 42.11,
p.127]).
Nel caso specifico le ipotesi sono soddisfatte nell’intervallo aperto − π2 , + π2 (difatti dx
d
tan x =
1
cos2 x
=
0 in tale intervallo).
132
1000000
KeqN_per_KeqR
FIXME: q_a and q_b are 22 bits; multiplier inputs are 44bits!!!
KeqR
KeqR*Q/I Scope2 Scope5 1 EQU TRIGGE
R
Ieq
a(21:0) q(21:0)
3 Ieq [IEQ]
d 1000 r a(43:0) q(43:0) a(43:0)
q a = b X q +r
Q TSS X r (43:0) a
a=bXq+r
i b(43:0) + r d(43:0) q(21:0) b(21:0) r(21:0)
2 b(43:0) r(43:0) [TRIGGER]
i 1000000 b
I TSS Multiplier
Divider1
Divider KeqR_squared Pipelined Adder Square Root
Divider3
IMPORTANT: the input range of I & Q samples is
IMPORTANT: Ieq and Qeq values are valid after 2 clock cycles respect the
current status of the input I & Q samples
I
q a(43:0)
4 d i_delayed
y_i
full X r (43:0)
rreq FIFO
empty [IEQ] b(43:0)
1 wreq usdw(9:0)
Multiplier1
Single Pulse inphase FIFO
a
i_delayed_equ
r 1
i_delayed_equ
b I EQU
Multiplier3
3 a
READY + r 2
q_delayed_equ
b Q EQU
Multiplier4 q_delayed_equ
DEBUG1
i_delayed
q_delayed
d d 1
tan−1 y = arctan y = d
= cos2 (arctan y)
dy dy dx tan x
x=arctan y
π π
∀x ∈ − ,+ → ∀y ∈ (−∞; +∞)
2 2
d 1
e ricordando che ∀y ∈ ℜ, dy arctan y = 1+y 2
allora è facile dimostrare che:
1
cos (arctan y) = + 1 ∀y ∈ ℜ
1 + y2
(nell’estrarre la radice si è tenuto conto che cos (arctan y) > 0, ∀y ∈ ℜ) e analogamente:
y
sin (arctan y) = + 1 ∀y ∈ ℜ
1 + y2
da cui, se si sceglie l’indice m in modo tale che ∠β(m) = 0:
q0 1
cos φ̂CP O = cos(arctan )= 2
i0
1 + (q0 /i0 )2
q0 q0 /
i0
sin φ̂CP O = sin(arctan )= 2
i0
1 + (q0 /i0 )2
(fornito da Altera) e poi a calcolare per tutti i campioni del resto del segnale ricevuto:
is_synchronizing
sset
mod25 q(4:0) a
NOT clock == d z q 1
AUTO synch_clock
AND 24 b TS CLOCK SYNCH
ena
current_zero
clk_enamod21 q(4:0) a and1 synch Ts clock generator
current_zero Data symbols counter
IMPORTANT: the FRAME DETECTED signal and the bit/Ts clock signal must be aligned! <
is_synchronizing
15 b
Zero counter mod2^5
Number of synch data_symbols_availabl
e < a q(4:0) clk_ena
15
b
Figura 4.20: Modello Simulink del blocco “fine timing (clock recovery)”.
4. Implementazione con dispositivi FPGA
4. Implementazione con dispositivi FPGA 135
Figura 4.21: Principali segnali generati dai blocchi del demodulatore PAM.
calcolato il valore e(k + 1) e cosı̀ via. Le transizioni nel segnale “TED CLOCK” non
sono quindi equidistanziate.
Nell’eseguire il calcolo di e(k) si utilizza una look-up table per i fattori ĉk−1 −ĉk che
sono noti a priori e dopo aver generato N − 1 transizioni sul “TED CLOCK” il sincro-
nizzatore fine si disattiva. Da quel momento in avanti si limita a generare transizioni
sul clock che fornisce in uscita denominato “TS SYNCH CLOCK” equidistanziate di
un tempo di simbolo.
Infatti l’ultimo blocco del ricevitore (cioè il “channel symbol detector”) utilizza
quel clock per campionare il segnale equalizzato, per stabilire in quale quadrante si
trova (per fare questo, essendo M = 4 si limita a controllare il segno della parte in fase
e di quella in quadratura) e per segnalare che le sue uscite sono valide. Controllando
il valore di tali uscite in corrispondenza degli eventi di “TS SYNCH CLOCK” si può
risalire ai bit decodificati e verificare se erano effettivamente quelli trasmessi (per
automatizzare tale operazione si è scritta una funzione in MATLAB presente nel file
sample output bits.m).
L’evoluzione temporale dei segnali principali descritti finora è mostrata nella fig.
4.21.
Come considerazione conclusiva bisogna specificare che anche per il ricevitore sarà
importante in futuro effettuare un lavoro di ottimizzazione e uno studio di bit-accuracy
(come già accennato nella sezione precedente a proposito del trasmettitore). Inoltre a
differenza del trasmettitore che per sua natura è relativamente semplice, per il ricevito-
re ci sono architetture utilizzabili potenzialmente più ottimizzate in termini di risorse
richieste sull’FPGA (per il modello sopra esposto le parti che richiedono il maggior
136 4. Implementazione con dispositivi FPGA
numero di celle logiche sono i filtri adattati, l’NCO e i buffer FIFO utilizzati nell’equa-
lizzatore, nonchè il gran numero di moltiplicatori presenti nei vari sottosistemi) che
non si è avuto modo di esplorare per motivi di tempo.
Conclusioni
In questo lavoro di tesi sono state analizzate due possibili implementazioni di un mo-
dem digitale a larga banda. Sebbene l’approccio a DSP non si sia rivelato proficuo
ha comunque permesso di studiare e di mettere in pratica numerosi algoritmi senza i
quali è impossibile oggigiorno realizzare un sistema ad elevate prestazioni, nonchè di
guadagnare esperienza preziosa per la realizzazione di sistemi futuri.
L’implementazione con dispositivi FPGA si è invece rilevata assai più promettente
e, sebbene non sia stato possibile per motivi di tempo effettuare una verifica sperimen-
tale dei modelli sviluppati, dovrebbe essere possibile convertire il modello Simulink in
files atti alla programmazione dell’hardware senza eccessivi sforzi e in tempi brevi.
In futuri progetti, si spera anche grazie alle informazioni qui contenute, sarà più fa-
cile scegliere la giusta piattaforma hardware tenendo a mente che, se da un lato i DSP
consentono tempi di sviluppo ridotti grazie all’uso di un linguaggio di programmazione
“convenzionale” quale il C, hanno in generale un throughput limitato. Le FPGA dual-
mente abbinano ad un throughput molto elevato (grazie all’elevatissimo parallelismo
interno) tempi di sviluppo sensibilmente più lunghi a causa della necessità di usare
linguaggi di descrizione dell’hardware o simulazioni di elaborazione parallela (come
consente di fare Simulink).
In questa luce appare vincente un design che faccia uso dei DSP o di un processore
soft per quelle parti algoritmiche di signal-processing caratterizzate da frequenze ri-
dotte (ad esempio, le operazioni di equalizzazione e di decodifica eseguite a frequenza
di simbolo) e delle FPGA per quelle parti in cui è invece necessario un elevato pa-
rallelismo per fare fronte alla mole di dati da processare (ad esempio, le operazioni
di filtraggio e di coarse- e fine- timing del demodulatore). Per questo sarà importan-
te in futuro esplorare le modalità di uso e le funzionalità offerte dai processori soft
integrabili su FPGA, quali il processore Nios II offerto da Altera.
Rimangono inoltre aperte numerose possibilità di miglioramento, sia sulla parte
algoritmica che sulla quella hardware, che vengono riassunte nell’appendice A.
137
Appendice A
Sviluppi futuri
Eventuali futuri sviluppi sul lavoro presentato in questo documento possono riguarda-
re:
• studio del processore soft Nios II offerto da Altera per la creazione di un sistema
ibrido;
138
Bibliografia
[2] G.M.Vitetta, M. Luise, “Teoria dei segnali”, seconda edizione, McGraw Hill, 2003.
[6] R. Basso Brusa, “Introduzione all’utilizzo della scheda DSP Texas Instruments
EVM TMS320C6455”, Tesi di laurea triennale, Università degli Studi di Modena
e Reggio Emilia, 2008.
[7] I. Baroni, “Gestione dell’ingresso e dell’uscita digitali su scheda DSP Texas In-
struments EVM TMS320C6455”, Tesi di laurea triennale, Università degli Studi
di Modena e Reggio Emilia, 2009.
[10] M. Morelli, C.C. Jay Kuo, Man-On Pun, “Synchronization Techniques for Or-
thogonal Frequency Division Multiple Access (OFDMA): A Tutorial Review”,
Proceedings of the IEEE, vol. 95, No. 7, July 2007.
[11] M. Morelli, U. Mengali, “An Improved Frequency Offset Estimator for OFDM
Applications”, IEEE Communications Letters, vol. 3, no. 3, March 1999.
[12] Hlaing Minn, Vijay K. Bhargava, Khaled Ben Letaief, “A Robust Timing and
Frequency Synchronization for OFDM Systems”, IEEE Transactions on Wireless
Communications, vol. 2, no. 4, July 2003.
139
140 BIBLIOGRAFIA
[13] Giovanni Santella, “A Frequency and Symbol Synchronization System for OFDM
Signals: Architecture and Simulation Results”, IEEE Transactions on Vehicular
Technology, vol. 49, no.1, January 2000.
[14] Michael Speth, Stefan A. Fechtel, Gunnar Fock, Heinrich Meyr, “Optimum Re-
ceiver Design for Wireless Broad-Band Systems Using OFDM - Part I”, IEEE
Transactions on Communications, vol. 47, no. 11, November 1999.
[15] Michael Speth, Stefan A. Fechtel, Gunnar Fock, Heinrich Meyr, “Optimum Re-
ceiver Design for Wireless Broad-Band Systems Using OFDM - Part II: A Case
Study”, IEEE Transactions on Communications, vol. 49, no. 4, April 2001.
[16] Kai Shi, Erchin Sherpedin, “Coarse Frame and Carrier Synchronization of OFDM
Systems: A New Metric and Comparison”, IEEE Transactions on Wireless
Communications, vol. 3, no 4, July 2004.
[18] Dong Kyu Kim, Sang Hyun Do, Hong Bae Cho, Hyung Jin Choi and Ki Bum
Kim, “A new Joint Algorithm of Symbol Timing Recovery and Sampling Clock
Adjustment for OFDM Systems”, IEEE Transactions on Consumer Electronics,
vol. 44, no. 3, August 1998.
[20] William G. Cowley, Lesley P. Sabel, “The performance of two symbol timing reco-
very algorithms for PSK demodulators”, IEEE Transactions on Communications,
vol. 42, no. 6, June 1994.
[21] M. H. Meyers, L. E. Franks, “Joint carrier phase and symbol timing recovery for
PAM systems”, IEEE Transactions on Communications, vol. 28, no. 8, August
1980.
[23] E. Sironi, “Analisi sperimentale delle interferenze nelle comunicazioni a larga ban-
da su linee elettriche”, Tesi di laurea triennale, Università degli Studi di Modena
e Reggio Emilia, 2009.
[33] Sito web dell’ IEEE P1901 Working Group. Disponibile on-line:
http://grouper.ieee.org/groups/1901/.
Lo svolgimento del progetto descritto in questa tesi è stato possibile grazie all’aiuto di
varie persone che desidero qui ringraziare di cuore.
Ringrazio il dott. Paganelli che è sempre un passo avanti nel campo delle tele-
comunicazioni (e non solo) e che mi ha fornito aiuto disinteressato in tanti problemi
piccoli e grandi senza che potessi contraccambiare(!). Ringrazio il dott. Setti perchè
nei pochi stralci di tempo libero che siamo riusciti a trovare in questo periodo di tesi
mi ha aiutato ad accudire i nostri progetti di elettronica.
Ringrazio inoltre anche tutte le altre persone dell’ottimo ambiente di lavoro in
cui mi sono trovato in questi mesi: Simone, Alessandro e Daniela nonchè i ragazzi di
AUTOLAB (Giovanni, Davide, Federica, Marco...) e di OPTOLAB (Stefano, Matteo,
Less, Lullo, Luca...).
Ringrazio infine la mia famiglia per avermi supportato durante tutta l’attività di
tesi (e non solo).
143