Sei sulla pagina 1di 24

Implementazione modulazione AFSK su DSK

Alessio Baldazzi e Nicola Sparnacci

7 maggio 2017
Indice
1 Introduzione 2
1.1 Modulazione AFSK . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2 Specifiche di progetto . . . . . . . . . . . . . . . . . . . . . . . 3

2 Modulatore 4
2.1 Sorgente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.2 Modulazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.2.1 Generazione sinusoidi . . . . . . . . . . . . . . . . . . 7
2.2.2 Filtro gaussiano . . . . . . . . . . . . . . . . . . . . . . 9
2.3 Considerazioni e scelte progettuali . . . . . . . . . . . . . . . 9

3 Demodulatore 11
3.1 Tentativo su DSP . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.2 Simulink . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

4 Risultati 14
4.1 Trasmissione a 600bps . . . . . . . . . . . . . . . . . . . . . . 14
4.2 Trasmissione a 1200bps . . . . . . . . . . . . . . . . . . . . . 18
4.2.1 Modulazione . . . . . . . . . . . . . . . . . . . . . . . 18
4.2.2 Demodulazione . . . . . . . . . . . . . . . . . . . . . . 20

1
1 Introduzione
1.1 Modulazione AFSK
La AFSK (Audio Frequency Shift Keying) una modulazione in frequenza,
derivata dalla FSK, che utilizza due toni sinusoidali di frequenza diversa in
base al livello logico da trasmettere. La differenza maggiore dalla FSK
la frequenza dei segnali sinusoidali: per la AFSK si utilizzano dei segnali
in banda audio e, pi precisamente, in questo progetto sono state utilizzate
onde a 1200Hz per il livello logico alto (mark, Figura 1a) e 2200Hz per il
livello logico basso (space, Figura 1b). Si noti che:

@k1 , k2 N; T = k1 T1 = k2 T2 (1)

da cui si evince che le frequenze sono tra loro incommensurabili. Questo


garantisce che la sovrapposizione di due segnali periodici, a queste frequenze,
sia irregolare nel tempo ma con spettro a righe in frequenza. Segnali di questo
tipo si dicono multiperiodici. Alla luce di quanto detto sopra, la Audio-FSK
una modulazione molto semplice, caratterizzata da un inviluppo costante
che permette di avere una trasmissione del contenuto informativo con elevata
efficienza di potenza. Nella versione implementata in questo progetto, si
riusciti a comunicare con una data-rate di 1200bps come specifica della
AFSK1200.
Un esempio di segnale generato dal modulatore AFSK riportato in
Figura 4, considerando un tempo di bit molto elevato per mostrare meglio
landamento in corrispondenza dei diversi livelli logici. Si vede come in corri-
spondenza di un livello logico 1 (mark ) si ha sinusoide con frequenza 1200Hz
mentre per il livello logico 0 si ha quella con frequenza 2200Hz. La transizio-
ne tra i due livelli, idealmente, continua. Questo un problema, perch per
come ideato il modulatore mantenendo costante il tempo di bit, molto
facile avere dei salti di fase in transizione che creano degli elementi spettrali
non desiderati e, di conseguenza, un inutile aumento di banda occupata. Per
questo motivo necessario lutilizzo di filtri per regolarizzare il segnale nel
passaggio da un livello allaltro, andando a smorzare le irregolarit presenti

Vmark (t) Vspace (t)

T T
t t

(a) Sinusoide a 1200Hz generata in (b) Sinusoide a 2200Hz generata in


corrispondenza di un mark corrispondenza di uno space

Figura 1: Toni sinusoidali corrispondenti ai segnali generati

2
x(t)

(a) Segnale nel tempo della somma di sinusoidi


incommensurabili

F[x(t)]

f
1200Hz 2200Hz
(b) Spettro della somma di sinusoidi incommensu-
rabili

Figura 2: Somma di sinusoidi incommensurabili, in assenza di rumore

nello scambio di sinusoide. Di questo si discuter nei dettagli in sezione 2.2,


dove verr discusso il modulatore.

1.2 Specifiche di progetto


Il dispositivi utilizzati per limplementazione del progetto sono i kit DSK
TMS320C6000 della Texas Instruments e lambiente Simulink di MatLAB.
Viste le caratteristiche di funzionamento in banda audio della modulazione
AFSK, i collegamenti fra le diverse periferiche sono stati fatti utilizzando
i jack audio da 3.5mm disponibili a bordo del DSK ed stato possibile
collegare luscita line-out allingresso del computer dotato di scheda audio
con input da sorgente esterna.
Il sistema di trasmissione AFSK, composto da modulatore e demodula-
tore stato progettato rispondendo ai seguenti vincoli progettuali:

sinusoidi fissate, alle frequenze di cui sopra;

data-rate di trasmissione massimo pari a 1200bps;

filtri Gaussiani;

3
frequenza di campionamento fs = 44.1kHz, rilassata a fs = 16kHz a
causa di problemi prestazionali riguardanti il processing real-time del
DSK utilizzato.

2 Modulatore
Limplementazione del modulatore AFSK consiste nella creazione del segnale
temporale che trasporti linformazione della sorgente attraverso il canale,
rispettando certe specifiche. LAFSK, come detto, associa delle sinusoidi ai
bit generati dalla sorgente, quindi stato necessario scrivere un codice C da
far eseguire al DSK per svolgere questo compito.
Analizzando lo schema a blocchi di Figura 3, si nota che le funzioni da
implementare sono:

la sorgente binaria dei bit dinformazione da modulare, discussa nel


prossimo paragrafo;

la generazione di sinusoidi alle frequenze generate;

il meccanismo di associazione bit-sinusoide;

il filtraggio passa-banda regolarizzante per eliminare i salti di fase nelle


transizioni tra bit;

lunione dei due segnali processati per ottenere il segnale modulato


s(t).

Tutte queste funzionalit sono state scritte in codice C e caricate sul DSP, che
si occuper di fare questo processing real-time. Nel seguito della relazione
verranno riportati gli spezzoni di codice necessari a capire come sono state
realizzate le funzionalit di cui sopra.
Idealmente, il segnale s(t) in uscita dalla scheda, a fronte di una sorgente
binaria come in Figura 4a, dovrebbe essere analogo a quello mostrato in
Figura 4b, rappresentato per un tempo di bit Tb molto elevato e in assenza
di rumore per mostrare meglio le diverse sinusoidi.
La scheda DSK Texas Instruments stata programmata utilizzando le
funzioni (fornite da librerie) e la frequenza di lavoro rappresentati in Codice
1.

Codice 1: Impostazioni DSK


3 //DSK s u p p o r t f i l e s
4 #include " d s k 6 7 1 3 _ a i c 2 3 . h"
5 #include " dsk6713 . h"
6
7 // Function p r o t o t y p e s
8 void c 6 7 1 3 _ d s k _ i n i t ( ) ;
9 void comm_intr ( ) ;

4
Sorgente
bk

Filtro
Gaussiano

0
fspace
s(t)
Filtro
1 Gaussiano

fmark

Modulatore

Figura 3: Schema di principio del modulatore AFSK

bk

t
Tb
(a) Segnale dingresso del modulatore, dove ogni bit tempo
di bit Tb

s(t)

(b) Segnale modulato

Figura 4: Esempio di segnale modulato AFSK

5
10 void output_sample ( i n t ) ;
11 void o u t p u t _ l e f t _ s a m p l e ( short ) ;
12 void output_right_sample ( short ) ;
13 Uint32 input_sample ( ) ;
14 short i n p u t _ l e f t _ s a m p l e ( ) ;
15 short i n p u t _ r i g h t _ s a m p l e ( ) ;
16
17 // Sampling r a t e 16 kHz
18 Uint32 f s = DSK6713_AIC23_FREQ_16KHZ ;

Il dato in uscita dalla look-up table attiva fornito ai due filtri passa-
banda Gaussiani centrati nelle due frequenze delle sinusoidi e la loro uscita
infine sommata e resa disponibile alluscita.

2.1 Sorgente
La sorgente binaria utilizzata in questo progetto implementata attraverso
un blocco simulato internamente al DSP, separato per dal cuore del mo-
dulatore; la parte di codice che realizza questa funzione si trova infatti nel
main e viene eseguita ciclicamente. In Codice 2, viene riportato il listato che
implementa la sorgente binaria situata nel main del programma.

Codice 2: Sorgente binaria


147 while ( 1 ) {
148 i f ( t >= T) {
149 t =0;
150 i P a t t ++;
151 i f ( i P a t t >= l e n g t h P a t t )
152 i P a t t =0;
153 s o u r c e=p a t t [ i P a t t ] ;
154 }
155 }

La sorgente si pu schematizzare attraverso le seguenti variabili:


base dei tempi t;
divisore di frequenza T ;
memoria contenente i dati da inviare patt.
La base dei tempi rappresenta il numero di Tclock passati ed stata realizzata
per semplicit attraverso un contatore incrementato allinterno della routine
di interrupt. La sua frequenza di lavoro quindi pari alla frequenza di
campionamento dei campioni in uscita che, nellimplementazione finale,
pari a 16kHz. Il divisore di frequenza necessario per ridurre il bit rate dei
dati in uscita dalla sorgente, in modo tale da ottenere un valore conforme
alla specifica di 1200bps. Si scelto quindi un divisore T = 13 ottenendo un
valore effettivo di:
16000
Br = = 1.230, 769 1230b/s. (2)
13

6
Infine la memoria contenente i dati realizzata attraverso un array: ad ogni
tempo di bit viene letto un valore da questo e copiato nella variabile source.
Questa realizza il collegamento tra sorgente e modulatore.
Allinterno del codice sono stati inseriti diversi array patt, questi sono
utili per realizzare pattern di sorgente pi o meno complessi cos da testare
il funzionamento e le performance del sistema in varie condizioni.

2.2 Modulazione
Il blocco realizzante il modulatore stato implementato allinterno della
routine di interrupt includendo: generazione di sinusoidi, meccanismo di
associazione, filtraggio passa-banda e lunione dei segnali. Le prime due fun-
zioni sono assolte dal calcolatore appena entra nella routine di servizio inter-
rupt c_int11(), controllando quale sia il valore della sorgente e prelevando
il campione corretto dalla look-up table relativa.

2.2.1 Generazione sinusoidi


Per generare le sinusoidi, si scelto di lavorare con delle look-up tables pre-
calcolate attraverso lo script MatLAB riportato in Codice 3. Il calcolo dei
valori stato effettuato prendendo un numero di punti nsamples1 , nsamples2 ,
linearmente equispaziati tra loro ai quali sono stati applicate le funzioni seno.
Per agevolare il processing del DSP, si scelto di fornire look-up tables in
virgola fissa e di applicare un guadagno A per avere segnali con ampiezze
meno sensibili alla distorsione del rumore termico.

Codice 3: Generazione look-up tables tramite script MatLAB


1 % MARK a t f =1200kHz
2 % 16000/1200=13.33 >14 s a m p l e s
3 % 160003/1200=40 s a m p l e s
4 % SPACE a t f =2200kHz
5 % 16000/2200 =7.27>8 s a m p l e s
6 % 1600011/2200=80 s a m p l e s
7 % We d e c i d e d t o m u l t i p l y s i n e s with a c o n s t a n t g a i n A s o t h a t
8 % DSP r a i s e s s i g n a l a m p l i t u d e
9
10 %%Data
11 A=1e4 ;
12 n s a m p l e s 1 =40;
13 n s a m p l e s 2 =80;
14
15 %%Compute s i n e v a l u e s
16 % Mark
17 x1=l i n s p a c e ( 0 , 3 2 pi , n s a m p l e s 1 +1);
18 % S a v i n g x u n t i l end1 t o d e l e t e t h e l a s t z e r o
19 x1=x1 ( 1 : end 1);
20 s i n e 1=A s i n ( x1 ) ;
21 % Space
22 x2=l i n s p a c e ( 0 , 1 1 2 pi , n s a m p l e s 2 +1);
23 x2=x2 ( 1 : end 1);
24 s i n e 2=A s i n ( x2 ) ;

7
25
26 %%P r i n t i n g t a b l e s
27 % Mark
28 f p r i n t f ( mark_table [% i ]={ , n s a m p l e s 1 ) ;
29 f o r k =1: l e n g t h ( s i n e 1 )1
30 f p r i n t f ( %.0 f , , s i n e 1 ( k ) ) ;
31 end
32 f p r i n t f ( %.0 f } ; \ r \n , s i n e 1 ( n s a m p l e s 1 ) ) ;
33 % Space
34 f p r i n t f ( s p a c e _ t a b l e [% i ]={ , n s a m p l e s 2 ) ;
35 f o r k =1: l e n g t h ( s i n e 2 )1
36 f p r i n t f ( %.0 f , , s i n e 2 ( k ) ) ;
37 end
38 f p r i n t f ( %.0 f } ; \ r \n , s i n e 2 ( n s a m p l e s 2 ) ) ;

Considerando la frequenza di campionamento pari a 16kHz (intervalli di


T = 62.5s) e le due frequenze desiderate, si ottengono dei vettori che
devono avere lunghezza minima:
16 103 16 103
nsamples1 = = 13.33, nsamples2 = = 7.27 . (3)
1200 2200
Per ottenere delle sinusoidi precise, si scelto di cercare delle costanti mol-
tiplicative per rendere la lunghezza del vettore un numero intero, per non
troncare parte di segnale che potrebbe portare a un errore di frequenza. Ci
che si ottenuto :
16 103 16 103
nsamples1 = 3 = 40, nsamples2 = 11 = 80 . (4)
1200 2200
Infine, sono state stampate le look-up tables in un formato array idoneo
al linguaggio C. A questo punto, ad ogni ricorrenza di un livello logico, il
DSP dovr andare a mettere in uscita il campione corrispondente alla sua
sinusoide.

Codice 4: Generazione sinusoidi dai bit di sorgente


71 i f ( b i t ==0){
72 i f ( l o o p >= space_L )
73 l o o p =0;
74 sample=s p a c e _ t a b l e [ l o o p ] ;
75 l o o p ++;
76 } else {
77 i f ( l o o p >= mark_L )
78 l o o p =0;
79 sample=mark_table [ l o o p ] ;
80 l o o p ++;
81 }
82 output_sample ( sample ) ;

Il codice scritto per compiere questa funzione riportato in Codice 4,


dove la variabile loop il puntatore dedicato alla ripetizione ciclica della
sinusoide; il valore viene azzerato quando viene raggiunta la fine del vettore
della look-up table utilizzata.

8
hn

Figura 5: Risposta impulsiva dei filtri gaussiani

2.2.2 Filtro gaussiano


I filtri Gaussiani, con risposte impulsive riportate in Figura 5, sono stati
progettati tramite Filter Designer (nuova versione di FDAtool ). Si tratta di
filtri passa-banda centrati alle rispettive frequenze che hanno la caratteristica
di regolarizzare il segnale. Questa caratteristica diretta conseguenza della
propriet regolarizzante della funzione Gaussiana ed molto usata, anche
per la riduzione delleffetto blur nel image-editing.
Considerando che il tempo di bit equivale a 13 cicli di clock, i filtri sono
stati scelti a 14 prese per non andare a prendere un numero elevato di cam-
pioni vecchi. Il progetto dei coefficienti stato fatto utilizzando solo valori
interi.

Codice 5: Filtri FIR Gaussiani


89 // F i r s t Gaussian FIR
90 d l x [ 0 ] = sample ;
91 yn1 =0;
92 f o r ( i =0; i <N; i ++)
93 yn1 = yn1 + f i r 1 [ i ] d l x [ i ] ;
94 f o r ( i=N1; i >0; i )
95 d l x [ i ]= d l x [ i 1 ] ;
96
97 // Second Gaussian FIR
98 d l x 2 [ 0 ] = sample ;
99 yn2 =0;
100 f o r ( i =0; i <N; i ++)
101 yn2=yn2+ f i r 2 [ i ] d l x 2 [ i ] ;
102 f o r ( i=N1; i >0; i )
103 d l x 2 [ i ]= d l x 2 [ i 1 ] ;
104
105 // Output
106 output_sample ( ( yn1+yn2 ) > >15);

2.3 Considerazioni e scelte progettuali


Quando si implementato su DSK larchitettura realizzante sorgente e mo-
dulatore, si lavorato sullottimizzazione al fine di ottenere le prestazioni
volute. Inizialmente il progetto prevedeva di rispettare le specifiche dellAF-
SK, ovvero una frequenza di campionamento fs = 44.1kHz. Per questo,

9
nel progetto dei due filtri, essendo le due frequenze molto vicine tra loro
rispetto a fs , per rendere lo spettro il pi compatto possibile si reso ne-
cessario rendere molto selettivi i filtri aumentando il numero di prese dei
FIR. Per verificare i progressi effettuati, controllando la validit del progetto
fatto attraverso Filter Designer, si generata unonda quadra dalla sorgente
e attraverso la funzione FFT delloscilloscopio si osservato lo spettro del
segnale di uscita. Un valore che garantisse una buona selettivit risultato
70 prese. Testando soluzioni cos al limite, si verificato uno spostamento
dello spettro di uscita verso il basso causato dallinsufficiente tempo a di-
sposizione per il calcolo delle risposte dei filtri. Quello che si riscontrato
la perdita di campioni dovuta alla grande mole di calcolo che il processore
non riusciva a completare nel breve periodo tra due campioni. In altre pa-
role per eseguire il codice cos scritto sarebbe stato necessario un DSP pi
veloce. Sono stati tentati alcuni approcci, come limplementazione di FIR
circolari e lottimizzazione del compilatore C ma anche con questi tentativi
il calcolo della risposta di due filtri a 70 prese con fs = 44.1kHz non risul-
tata possibile. Volendo ottenere uno spettro compatto si scelto di ridurre la
frequenza di campionamento fino ad arrivare, dopo aver provato tutte le fre-
quenze maggiori disponibili, a 16kHz, i benefici portati da questa soluzione
sono due:

il tempo a disposizione per un campione quasi triplicato, garantendo


pi tempo per il calcolo al DSP;

i filtri, a parit di prese, diventano pi selettivi.

La riduzione di frequenza ha causato una riprogrettazione dei filtri, delle


look-up tables delle sinusoidi, e del tempo di bit T .
Unultima considerazione va fatta sulle prese del filtro. Progettando il
demodulatore si capito che lordine dei filtri molto maggiore rispetto al
numero di bit per sample portava un effetto regolarizzante troppo eleva-
to, rendendo problematica la decodifica della sequenza trasmessa. Dopo
aver notato questo problema, si scelto di ridurre la lunghezza dei filtri fi-
no a 14 prese ottenendo un segnale tale per cui fosse facile loperazione di
demodulazione, pagando per con uno spettro meno compatto.
Durante la fase di testing si sono provate due soluzioni per il momento
del cambio di sinusoide, in particolare si provato a resettare o meno lindice
della tabella: le prove hanno mostrato una leggera differenza in termini di
compattezza spettrale, in particolare lasciando correre il cursore liberamente
si notato un piccolo vantaggio (si noti che i due array sono di lunghez-
za diversa, grazie allimplementazione presente comunque garantito che il
puntatore non esca dallarray).

10
3 Demodulatore
La demodulazione AFSK stata progettata in modo non coerente senza uno
stimatore di fase per sincronizzare modulatore e demodulatore. Questo ha
permesso di ottenere un demodulatore molto pi semplice in grado di funzio-
nare bene, anche se con prestazione non ottima. Lo schema di principio del
blocco di ricezione raffigurato in Figura 6. Il segnale ricevuto dal demodu-
latore sar il segnale modulato s(t), al quale ovviamente sar sovrapposto un
segnale aleatorio legato al rumore n(t), quindi ci che si sente a lato ricezione
:
r(t) = s(t) + n(t). (5)
Lidea quella di fornire il segnale ricevuto r(t) e mandarlo su due rami
paralleli a due filtri passa-banda Gaussiani che per semplicit di progetto
sono gli stessi utilizzati in modulazione. Questa operazione permette di
eliminare parte dello spettro indesiderato del segnale ricevuto.
Successivamente, nel caso di filtraggio perfetto, quello che si avrebbe a
valle dei filtri sarebbero segnali perfettamente sinusoidali alle frequenze di
progetto in base a quale bit fosse stato trasmesso. Infatti, ad esempio, tra-
smettendo un 1 (mark ), in quel tempo di bit il modulatore avrebbe generato
una sinusoide a 1200Hz che sarebbe passata attraverso il filtro Gaussiano del
ramo superiore (mark ) e sarebbe stata totalmente filtrata dal filtro del ramo
inferiore (space).
Il demodulatore, per decidere quale sinusoide sia stata trasmessa, deve
effettuare un confronto tra i due segnali in uscita dal filtro. Per questo,
si scelto di implementare blocchi non lineari per il calcolo del valore as-
soluto, cos da generare armoniche aggiuntive. Di quelle create, quella pi
interessante quella a frequenza nulla, che permette di capire il valor medio
del segnale e fornisce una importante indicazione sulla potenza del segnale
trasmesso.
Dopo i blocchi di valore assoluto, si effettua il confronto facendo la diffe-
renza fra i due segnali. Il risultato della differenza viene filtrato da un filtro
IIR passa-basso in modo da evidenziare linviluppo del segnale differenza
efficacemente con un basso numero di prese.
Prima di prendere la decisione sul bit trasmesso, dallo schema a blocchi
si distingue un blocco mediatore. Questo blocco si rivela utile quando si va a
trasmettere una sequenza "sbilanciata", dove il numero di space e mark non
sono uguali. Se questo non venisse considerato, non si avrebbe una corretta
detection, in quanto la soglia di decisione sarebbe sbagliata di un offset pari
al valor medio della sequenza. per questo che si scelto di fare unulteriore
differenza fra il segnale in uscita dal filtro IIR e il valor medio della sequenza,
in modo da andare a considerare solo il segno risultante.
Infatti, come ultimo passo, si ha il decisore, modellato come un blocco
che va ad analizzare il segno del segnale:

11
1200Hz

|abs| |rmark (t)|

IIR
y(t)
r(t) bk
- -
2200Hz

|abs| |rspace (t)| Mediatore y(t)

Figura 6: Schema a blocchi del demodulatore AFSK1

se il segnale risultante positivo, significa che |rmark (t)| > |rspace (t)| e
si decide per un mark (bk = 1);

se il segnale negativo, |rmark (t)| < |rspace (t)|, la decisione per uno
space (bk = 0).

Discussa lidea generale, nei seguenti paragrafi si affronta limplementa-


zione vera e propria del demodulatore, analizzando le problematiche riscon-
trate con DSK e come i problemi siano stati risolti passando allambiente
Simulink. Da notare che i segnali che nello schema sono rappresentati tempo-
continui in realt, prima di essere processati, sono stati convertiti in digitale
dalla scheda DSK o dalla scheda audio del calcolatore.

3.1 Tentativo su DSP


Inizialmente si scelto di implementare il demodulatore attraverso un secon-
da scheda DSP. Larchitettura implementata era molto simile a quella finale
sopra descritta. Le differenze maggiori riscontrate sono due: si inizialmen-
te esplorata la possibilit di inserire un filtro passa basso per ogni linea e
successivamente farne la differenza oppure il contrario, come da implemen-
tazione definitiva, scelta mai conclusa su DSK; la seconda differenza risiede
nella mancanza di un vero e proprio blocco mediatore. Inoltre, nelle prime
implementazioni, si scelto di lavorare alla stessa fs del modulatore cos da
poter utilizzare gli stessi filtri gaussiani gi correttamente progettati in mo-
dulazione. da notare come ancora non si fosse esplorato accuratamente la
risposta nel tempo del modulatore, infatti la prima versione di demodulatore
su DSK ha a bordo filtri a 70 prese.
Il tentativo rimasto una semplice bozza in quanto si sono riscontrate
alcune difficolt. Infatti, la scheda non in grado di fare uscire un segnale in
1
Si ricordi che i segnali rappresentati nel tempo sono in realt segnali campionati dal
DSP o dalla scheda audio del calcolatore su cui si usato Simulink.

12
continua in quanto pensata per applicazioni audio in cui sarebbe distruttivo
per i dispositivi a valle. A questo inconveniente si cercato di dare soluzione
facendo uscire delle onde quadre, come da lookup table, di ampiezza diversa
cos da avere disponibile un segnale binario. Avere a disposizione solo unu-
scita binaria sufficiente se il demodulatore ben funzionante ma in una
fase iniziale in cui sarebbe utile vedere i segnali intermedi (valori assoluti,
sottrazioni, segnali filtrati, etc.) chiaramente molto limitante, questo com-
porta una elevata difficolt nel debug del sistema. Infine la programmazione
di due schede risultata pi lenta e macchinosa. Per via dei motivi esposti
si scelto di abbandonare limplementazione del demodulatore su DSK, che
quindi resta solo una prima bozza non funzionante, migrando verso la piat-
taforma Simulink di MatLAB in cui si realizzato il demodulatore nella
forma finale e funzionante.

3.2 Simulink
Viste le difficolt riscontrate provando ad utilizzare la scheda DSK per demo-
dulare, si scelto di passare a Simulink di MatLAB. Questo stato possibile
considerando che il segnale trasmesso in modulazione a basse frequenze ed
adatto ad essere utilizzato come sorgente audio dingresso. Infatti, colle-
gando tramite jack 3.5mm DSK e calcolatore, sfruttando il blocco Simulink
From Audio Device stato possibile lavorare sul segnale r(t) campionato al-
la frequenza di 16kHz. Analizzando Figura 7, si vede che lo schema uguale
a quello rappresentato in Figura 6, anche il nome dei segnali stato rispet-
tato. I filtri FIR Gaussiani, sono stati creati utilizzando il blocco Discrete
FIR Filter, utilizzando lo stesso numero di prese dellimplementazione del
modulatore per riutilizzare i coefficienti gi calcolati. A valle dei FIR sono
stati inseriti i blocchi di valore assoluto Abs e il differenziatore.
Per avere un buon filtraggio delle componenti armoniche a f 6= 0, si
utilizzato un filtro IIR a 3 prese utilizzando il blocco Biquad Filter. Nel
progetto di questo filtro, si utilizzato il tool MatLAB Filter Designer (che
nelle versioni pi recenti sostituisce FDAtool ), impostando la frequenza di
taglio a 300Hz, sufficiente per gli scopi di questo progetto.
Il calcolo del valor medio della sequenza stato fatto utilizzando il blocco
Mean. Questultimo ha la peculiarit di poter calcolare la media dellintero
input in un intervallo prefissato di tempo. Nelle prove effettuate sono state
testate solo sequenze che si ripetono nel tempo, ma la funzione di media
mobile di questo blocco permette di demodulare anche sequenze con diversi
valori medi.
Infine, dopo lultimo confronto di segnale, viene utilizzato un blocco Sign
per il calcolo del segno per effettuare la decisione sul segnale ricevuto.
In sezione 4, vengono riportate alcune delle prove effettuate per testare
il funzionamento del sistema di modulazione.

13
num(z)
1
AbsMark abs(r_mark(t))
FIR13mark

Audio Biquad
r(t) y(t)
b_k
IIR Sign Time
From Audio Scope
Device abs(r_space(t))
num(z)
1 Mean
FIR13space AbsSpace

Figura 7: Schema Simulink del demodulatore

4 Risultati
In questultimo paragrafo della relazione sono riportati alcuni dei test ef-
fettuati per valutare le prestazioni del sistema di modulazione AFSK. I ri-
sultati riportati sono stati realizzati creando unonda quadra o un pattern
personalizzato tale da avere numero di 1 e 0 uguali. Sono stati riportati
graficamente grazie allacquisizione delloscilloscopio Tecktronix per quanto
riguarda il modulatore e attraverso il blocco Time Scope fornito da Simulink
in demodulazione.

4.1 Trasmissione a 600bps


Il primo test effettuato caratterizzato da una data-rate pari alla met
di quella richiesta. Questo fattore permette di avere una maggiore purez-
za spettrale del segnale, quindi si traduce in una migliore prestazione del
filtraggio.

Segnali filtrati. Andando ad utilizzare una sorgente ad onda quadra, si


va a verificare quello che si ottiene in alcuni nodi fondamentali per capire il
funzionamento del demodulatore. In particolare, utile andare a vedere lan-
damento dei segnali nei due rami dopo il filtraggio con FIR Gaussiano: per
maggiore chiarezza, si riportano i segnali in uscita dai blocchi abs. Prenden-
do come esempio landamento di Figura 8a, si vede chiaramente che in base
alla trasmissione di un 1 o di uno 0, il segnale che domina rispettivamente
mark o lo space.
Confrontando i segnali dopo i blocchi abs dopo aver filtrato con 13 prese
(Figura 8a) e con 70 prese (Figura 9a), si vede come il risultato migliore sia il
primo. Questo dovuto allesagerato numero di prese del secondo filtro che
porta il demodulatore ad analizzare campioni anche molto vecchi, andando
a rendere meno netta la separazione tra un bit e laltro.

14
Uscita IIR. Oltre a questo grafico, si scelto di riportare anche leffetto
del filtro IIR posto a valle della differenza dei segnali mark e space. I grafici di
Figura 8b e Figura 9b mostrano landamento del segnale prima del filtraggio
(in giallo) e il segnale filtrato (in blu), rispettivamente per FIR a 13 e 70
prese. Anche da questi grafici si pu vedere come la prestazione sia migliore
nel primo caso, dove londa restante dopo il filtraggio si presenta con una
buona regolarit e con livelli di tensione circa uguali, mentre nel secondo
caso vi sono dei punti in cui la transizione da un livello logico allaltro
meno netta.

Output. Lultimo risultato riportato riguarda, ovviamente, luscita del


modulatore. Le Figura 8c e Figura 9c, del caso rispettivamente a 13 e 70 pre-
se, mostrano in rosso il segnale allingresso del decisore, in azzurro la media
mobile calcolata dal mediatore e in giallo la decisione, dove il livello logico
alto rappresentato dal valore 1 mentre quello basso da -1. Nonostante la
peggiore prestazione del caso con filtri a 70 prese, entrambi i demodulatori
riescono a ricreare i bit di sorgente.

15
(a) Segnali in uscita dal blocco abs

(b) Somma dei segnali non filtrato (giallo) e filtrato (blu)

(c) Segnale demodulato

Figura 8: Demodulazione di unonda quadra con filtri FIR a 13 prese a


600bps

16
(a) Segnali in uscita dal blocco abs

(b) Somma dei segnali non filtrato (giallo) e filtrato (blu)

(c) Segnale demodulato

Figura 9: Demodulazione di unonda quadra con filtri FIR a 70 prese a


600bps

17
4.2 Trasmissione a 1200bps
Aumentando la data-rate della trasmissione, il sistema lavora con pi sforzo.
Mantenendo il filtro a 13 prese che garantisce le prestazioni migliori, si va
ad analizzare prima la demodulazione della stessa onda quadra generata
precedentemente ma se ne raddoppia la frequenza.

4.2.1 Modulazione
In seguito vengono riportate delle acquisizioni effettuate con loscilloscopio
del segnale in uscita dal DSK.
In Figura 10 riportata la rappresentazione spettrale e temporale della
modulazione di unonda quadra, disattivando il filtraggio Gaussiano. Come
si vede in Figura 10a, lo spettro risulta molto complesso e sono presenti delle
ampie armoniche anche a frequenze indesiderate. Un altra considerazione
pu essere fatta guardando Figura 10b: si pu notare come la transizione
tra un bit e laltro si verifichino dei bruschi salti di fase.
Sia a livello spettrale che a livello temporale, inserendo un filtro FIR a
13 prese, i risultati migliorano e vengono riportati in Figura 11. Guardando
lo spettro, si vede come le armoniche di ordine maggiore vengano eliminate
dal filtraggio anche se restano abbastanza evidenti le armoniche vicine alle
frequenze 1200Hz e 2200Hz di interesse. Il vantaggio pi interessante lo si
vede guardando il segnale duscita nel tempo riportato in Figura 11b, dove
si vede come i salti di fase siano stati resi molto pi dolci e in alcuni casi
addirittura eliminati.
In Figura 12, stato riportato il segnale modulato filtrato da un filtro FIR
a 70 prese. Analizzando Figura 12a si vede chiaramente come le armoniche
alle frequenze delle sinusoidi di interesse siano dominanti rispetto a tutte le
altre armoniche: la purezza spettrale notevolmente migliorata, ottenendo
un risultato simile allo spettro teorico di Figura 2b. Il problema per sorge
quando si va a vedere il risultato nel dominio del tempo. Infatti, si verifica
una notevole diminuzione dellampiezza del segnale modulato.
Analizzando il caso in cui la sorgente non emetta unonda quadra ma il
pattern di simboli:

Codice 6: Pattern bilanciato generato dalla sorgente


20 short p a t t [ 2 0 ] = { 0 , 1 , 1 , 1 , 0 , 0 , 1 , 1 , 0 , 1 , 1 , 0 , 0 , 0 , 1 , 1 , 0 , 0 , 1 , 0 } ;

il contenuto armonico del segnale modulato diventa pi ampio e i risultati


sono pi complessi da decifrare. In Figura 13a si riporta lo spettro del
pattern modulato, eliminando il filtraggio. A differenza dei casi precedenti
con londa quadra, aumentano molto le componenti spettrali attorno alle
frequenze dinteresse rendendo molto pi complessa la demodulazione. Nel

18
(a) Onda quadra non filtrata in uscita dal (b) Onda quadra non filtrata in uscita dal
modulatore in frequenza modulatore nel tempo

Figura 10: Onda quadra senza filtro FIR

(a) Segnale filtrato con FIR13 in uscita dal (b) Onda quadra filtrata con FIR13 nel
modulatore tempo

Figura 11: Onda quadra con filtro FIR13

(a) Segnale filtrato con FIR70 in uscita dal (b) Onda quadra filtrata con FIR70 nel
modulatore tempo

Figura 12: Onda quadra con filtro FIR70

19
(a) Pattern non filtrato in uscita dal (b) Pattern non filtrato in uscita dal
modulatore in frequenza modulatore nel tempo

Figura 13: Pattern non filtrato

(a) Pattern filtrato con FIR13 in uscita dal (b) Pattern filtrato con FIR13 nel tempo
modulatore

Figura 14: Pattern con filtro FIR13

dominio del tempo si possono distintamente vedere i salti di fase tra un bit
e laltro.
Si riesce a migliorare il risultato quando si inserisce il filtro. Guardando
le Figure 14a e 14b si vede come lo spettro sia notevolmente migliorato e i
salti di fase siano stati "smussati".

4.2.2 Demodulazione
Nel caso di onda quadra, come si vede in Figura 15a, le regioni in cui la deci-
sione non netta sono aumentate. Anche la differenza fra i segnali avr dei
valori pi mobili e di conseguenza anche luscita dellIIR sar meno stabile,
come raffigurato in Figura 15b. Per questo il decisore si trova a effettuare il
controllo del segno su unonda pi irregolare. Allora la decisione presa risul-
ta non essere esattamente periodica come londa creata dalla sorgente, ma
caratterizzata da livelli logici consecutivi di durate spesso diverse. Tutta-

20
via, nonostante un peggioramento, il sistema continua ad essere funzionante,
come mostrato in Figura 15c.
Studiando invece il pattern bilanciato, si ottiene il risultato di Figura 16.
Si vede chiaramente come il sistema si trovi in difficolt nella transizione
quando da un grande numero di bit allo stesso livello si passa ad un bit di
livello opposto. Infatti, il segnale in ingresso al decisore, che si ricorda essere
ottenuto sottraendo alluscita dellIIR (segnale rosso) il segnale del mediatore
(segnale blu), riesce a sorpassare a malapena il livello di decisione.

21
(a) Segnali in uscita dal blocco abs

(b) Somma dei segnali non filtrato (giallo) e filtrato (blu)

(c) Segnale demodulato

Figura 15: Demodulazione di unonda quadra con filtri FIR a 13 prese a


1200bps

22
Figura 16: Demodulazione di un pattern bilanciato a 1200bps

23