Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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)
T T
t t
2
x(t)
F[x(t)]
f
1200Hz 2200Hz
(b) Spettro della somma di sinusoidi incommensu-
rabili
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:
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.
4
Sorgente
bk
Filtro
Gaussiano
0
fspace
s(t)
Filtro
1 Gaussiano
fmark
Modulatore
bk
t
Tb
(a) Segnale dingresso del modulatore, dove ogni bit tempo
di bit Tb
s(t)
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.
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.
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 ) ) ;
8
hn
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:
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
IIR
y(t)
r(t) bk
- -
2200Hz
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).
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
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.
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.
15
(a) Segnali in uscita dal blocco abs
16
(a) Segnali in uscita dal blocco abs
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:
18
(a) Onda quadra non filtrata in uscita dal (b) Onda quadra non filtrata in uscita dal
modulatore in frequenza modulatore nel tempo
(a) Segnale filtrato con FIR13 in uscita dal (b) Onda quadra filtrata con FIR13 nel
modulatore tempo
(a) Segnale filtrato con FIR70 in uscita dal (b) Onda quadra filtrata con FIR70 nel
modulatore tempo
19
(a) Pattern non filtrato in uscita dal (b) Pattern non filtrato in uscita dal
modulatore in frequenza modulatore nel tempo
(a) Pattern filtrato con FIR13 in uscita dal (b) Pattern filtrato con FIR13 nel tempo
modulatore
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
22
Figura 16: Demodulazione di un pattern bilanciato a 1200bps
23