PLL e Fine Tuning Circuit

42
UNIVERSITÀ DEGLI STUDI DI ROMA “TOR VERGATA” FACOLTÀ DI INGEGNERIA Corso di Circuiti Integrati per Telecomunicazioni Studio ed implementazione di un PLL che utilizza un Fine Tuning Circuit per aumentare la risoluzione in frequenza del VCO PROFESSORE CANDIDATI G.C. Cardarilli Marco Mattei Manuel Papasidero Anno accademico 2009/20010

Transcript of PLL e Fine Tuning Circuit

Page 1: PLL e Fine Tuning Circuit

UNIVERSITÀ DEGLI STUDI DI ROMA

“TOR VERGATA”

FACOLTÀ DI INGEGNERIA

Corso di Circuiti Integrati per Telecomunicazioni

Studio ed implementazione di un PLL che utilizza

un Fine Tuning Circuit per aumentare la

risoluzione in frequenza del VCO

PROFESSORE CANDIDATI

G.C. Cardarilli Marco Mattei

Manuel Papasidero

Anno accademico

2009/20010

Page 2: PLL e Fine Tuning Circuit

2

Page 3: PLL e Fine Tuning Circuit

3

Sommario

Introduzione .............................................................................................................................. 4

Direct Digital Synthesis DDS ....................................................................................................... 5

Fine Tuning Circuit...................................................................................................................... 7

Phase Locked Loop ................................................................................................................... 10

Approssimazione lineare e funzione di trasferimento .................................................................. 13

Progettazione PLL del secondo ordine ........................................................................................... 16

Fine Tuning Circuit (Simulink) ................................................................................................... 17

Simulazione comportamento fine tuning circuit 4-stages ............................................................. 18

DDS simulink .................................................................................................................................. 19

PLL double floating point precision ........................................................................................... 23

Simulazione Pll con salto di fase .................................................................................................... 27

Simulazione Pll con segnale d’ingresso rumoroso ......................................................................... 28

PLL fixed point precision ........................................................................................................... 31

Analisi spettrale.............................................................................................................................. 33

HDL Coder ................................................................................................................................ 36

Conclusioni .............................................................................................................................. 41

Bibliografia .............................................................................................................................. 42

Page 4: PLL e Fine Tuning Circuit

4

Introduzione

In questo lavoro siamo andati a realizzare il modello Simulink del Fine Tuning Circuit [1], e dopo

averne simulato il corretto funzionamento abbiamo connesso in cascata quattro stadi dello stesso

riuscendo ad aumentare notevolmente la risoluzione in frequenza di un DDS a 16 bit. Utilizzando

questo modello di DDS come oscillatore controllato in tensione (VCO) abbiamo realizzato una

struttura PLL in grado di seguire eventuali variazioni delle frequenze e delle fasi del segnale in

ingresso. Una volta realizzata la struttura in double precision siamo passati alla realizzazione dello

stesso circuito in precisione fixed point con diversi gradi di quantizzazioni andando poi a

confrontare tra loro le rispettive FFT del segnale d’uscita. Infine, servendoci di HDL Coder,

abbiamo ottenuto la descrizione del circuito tramite codice vhdl. Dopo aver sintetizzato il tutto su

diversi tipi di FPGA abbiamo verificato e messo a confronto tra loro diversi parametri, come

percentuale di area occupata e frequenza massima di funzionamento.

Page 5: PLL e Fine Tuning Circuit

5

Direct Digital Synthesis DDS

La Direct Digital Synthesis (DDS) è una metodologia di generazione di forme d’onda arbitrarie

(generalmente sinusoidali) partendo da un singolo oscillatore di riferimento detto Numerically

Controlled Oscillator (NCO). In figura 1 è mostrato lo schema a blocchi di un generico generatore

di funzione DDS. La funzione seno viene immagazzinata in una memoria RAM, la cui uscita

sinusoidale in formato digitale può essere convertita in una forma d’onda analogica per mezzo di

un DAC. I gradini ottenuti all’uscita del DAC sono filtrati da un filtro passa basso per ottenere così

in uscita una forma d’onda sinusoidale pulita. La frequenza di oscillazione dell’onda sinusoidale

dipende dal rate con il quale vengono cambiati gli indirizzi di lettura delle locazioni della RAM. Gli

indirizzi sono generati sommando una costante, immagazzinata nel registro di incremento di fase

(PIR), all’accumulatore di fase. Solitamente il rate della somma è mantenuto costante e la

frequenza viene modificata andando a variare il numero nel PIR. [2]

Figura 1 schema a blocchi generico DDS

Page 6: PLL e Fine Tuning Circuit

6

La risoluzione in frequenza dipende dal numero di bit del PIR. Se il PIR, il sommatore, e

l’accumulatore di fase supportano ad esempio somme a 48 bit, la risoluzione in frequenza sarà:

∆� = ����2�

e la frequenza in uscita:

��� = ���� ∙ ����_����2�

Dalla prima equazione vengono introdotte due possibili alternative per permettere un incremento

della risoluzione in frequenza di un DDS. La prima è quella di ridurre la frequenza di clock, mentre

la seconda consiste nell’aumentare il numero di bit dell’accumulatore di fase. Il primo caso è di

difficile realizzazione in quanto, ad ogni variazione della ����, dovrebbe corrispondere una

variazione della frequenza di cut-off del filtro passa basso. Questa variazione porta ad una

diminuzione del range di frequenze in uscita che andrebbe a contrapporsi ad un eventuale

incremento della risoluzione. Pertanto il metodo più diffuso è proprio quello che porta ad un

aumento del numero di bit dell’accumulatore di fase. Questo può essere realizzato mettendo in

cascata due NCO utilizzando le connessioni di carry input e carry output. In questa situazione il

carry output dell’NCO di ordine più basso viene connessa al carry input dell’NCO di ordine

superiore. Questo metodo non è poi così appropriato in quanto se l’unico obbiettivo è quello di

migliorare la risoluzione in frequenza, molte delle funzioni contenute nel NCO di ordine più basso

non vengono di fatto utilizzate.

Page 7: PLL e Fine Tuning Circuit

7

Fine Tuning Circuit

Se il DDS in questione presenta oltre all’ingresso per l’incremento di fase anche un ulteriore

ingresso di tipo ext_carry, è possibile effettivamente aumentarne la risoluzione, il funzionamento

classico richiede che il bit ext_carry sia settato al valore logico “0”, quando invece è settato a “1” il

valore effettivo dell’incremento di fase viene aumentato, ciò permette di poter variare la

risoluzione in frequenza di un DDS semplicemente andando a controllare l’ingresso ext_carry.

Il Fine Tuning Circuit proposto nell’articolo “Increasing the Frequency Resolution of NCO-Systems

Using a Circuit Based on a Digital Adder” di R. Ertl e J. Baier [1], introduce un possibile modo per

aumentare la risoluzione controllando questo ingresso, utilizzando una struttura flessibile e con un

minimo overhead di Hardware. La cella base del Fine Tuning Circuit, è composta da un Full-Adder

più due registri di tipo D, posizionati sulle uscite.

Figura 2 schema e tabella verità full adder

Page 8: PLL e Fine Tuning Circuit

8

La tabella di verità del Full-Adder è mostrata in figura 2. Possiamo vedere che l’uscita che

maggiormente ci interessa è Cout ; se Ti e Ci sono uguali l’uscita non commuta e il suo valore logico

è pari al valore degli ingressi, se invece essi differiscono Cout si prende il valore di Sout. Se ora

connettiamo l’uscita Cout all’ext_carry del NCO la risoluzione in frequenza potrebbe aumentare di

un fattore 2 in caso di Cout=1.

Un ulteriore incremento può essere realizzato andando a connettere in cascata più celle

elementari del circuito mostrato nella pagina precedente come mostrato in figura 3:

Figura 3 ftc 4-stages

I 4 bit di Fine Tuning T0…..T3 controllano l’ingresso della corrispettiva cella di Fine Tuning, il

secondo ingresso di ogni stato è il carry ouput dello stato precedente, mentre C4 è collegato

all’ ext_carry del NCO. In questo modo è possibile avere 24 combinazioni diverse del segnale

d’uscita e la nuova risoluzione in frequenza sarà:

∆�� = ∆�2�

con K pari al numero di fine tuning bits. A seconda della configurazione degli ingressi abbiamo

un’uscita periodica con periodo 2K=16, maggiore è il numero di bit a 1 in un singolo periodo,

maggiore sarà il valore della Fout del DDS. La sequenza di Carry output di un K-stage Fine Tuning

Page 9: PLL e Fine Tuning Circuit

9

Circuit è la stessa di un K-bit phase accumulator, dunque non ci sono differenze nelle proprietà

spettrali della sinusoide realizzata con questo metodo. Invece quando si vuole passare da una

frequenza ad un’altra, dobbiamo aspettare alcuni cicli di clock affinché si abbia in uscita (ossia sul

Carry output) la sequenza corretta.

Le 16 combinazioni del riporto d’uscita vengono mostrate nella figura seguente:

T0 T1 T2 T3 Carry output # 1 States # Clock Cycles

0 0 0 0 …0000 0000 0000 0000… 0 0

1 0 0 0 …1000 0000 0000 0000… 1 3

0 1 0 0 …1000 0000 1000 0000… 2 2

1 1 0 0 …1000 0010 0001 0000… 3 13

0 0 1 0 …0010 0010 0010 0010… 4 1

1 0 1 0 …0100 1001 0010 0010… 5 11

0 1 1 0 …1001 0100 1001 0100… 6 4

1 1 1 0 …1010 1010 0101 0100… 7 13

0 0 0 1 …0101 0101 0101 0101… 8 0

1 0 0 1 …0101 0110 1010 1011… 9 11

0 1 0 1 …1011 0110 1011 0110… 10 10

1 1 0 1 …0110 1110 1101 1011… 11 5

0 0 1 1 …1101 1101 1101 1101… 12 15

1 0 1 1 …1111 1011 1101 1110… 13 3

0 1 1 1 …1111 1011 1111 1011… 14 4

1 1 1 1 …1111 1111 1111 1110… 15 5

Page 10: PLL e Fine Tuning Circuit

10

Phase Locked Loop

I phase-locked loop (PLL) sono dispositivi non lineari che vengono solitamente studiati attraverso

dei modelli linearizzati che sono però validi soltanto quando il segnale in uscita dall’oscillatore

controllato in tensione è agganciato al segnale di riferimento, perché fino ad allora hanno un

comportamento estremamente non lineare.

Il PLL è un sistema elettronico controreazionato, composto essenzialmente da tre componenti: un

circuito moltiplicatore o rivelatore di fase, un filtro lineare di tipo RC passa-basso e un oscillatore

controllato in tensione, come illustrato in figura 4:

Figura 4 pll generico con rivelatore di fase

Il rivelatore di fase, per segnali analogici, è formato da un circuito moltiplicatore, per cui produce

sulla sua uscita componenti con frequenza somma e differenza tra quelle applicate al suo ingresso.

Il filtro passa-basso elimina le componenti ad alta frequenza e lascia passare il segnale di tensione

proporzionale alla differenza tra le frequenze e le fasi dei segnali in ingresso al rivelatore di fase; il

segnale di uscita del filtro costituisce l'ingresso del VCO.

Il VCO è un oscillatore controllato in tensione, il quale genera un segnale con frequenza

dipendente dalla tensione applicata al suo terminale di controllo. In assenza di segnale in ingresso

al rivelatore di fase, il VCO genera un segnale con frequenza costante ��, detta frequenza di

oscillazione libera (free run). Quando, invece, è applicato un segnale di frequenza ��

sufficientemente prossima a ��, il rivelatore di fase, che rappresenta il blocco di confronto del

sistema retroazionato, paragona la frequenza e la fase del segnale d'ingresso con quella del

Page 11: PLL e Fine Tuning Circuit

11

segnale proveniente dal VCO e produce alla sua uscita una tensione di errore e(t) con componenti

a frequenza somma e differenza tra le due.

Da un punto di vista funzionale il rivelatore di fase non è altro che un moltiplicatore, tale che

Applicando le formule di Werner

Il filtro passa-basso posto alla sua uscita lascia passare solo la componente a frequenza differenza

(naturalmente se il valore è tale da rientrare nella banda passante del filtro) ed elimina tutte le

altre ad alta frequenza presenti all'uscita del rivelatore di fase. La componente �� è quindi una

tensione di errore proporzionale alla differenza tra le due frequenze �� e �� e viene applicata al

terminale di controllo del VCO per variarne la frequenza di oscillazione in maniera tale da ridurre

lo scarto di frequenza con il segnale d'ingresso. In questa fase si dice che l'anello è nello stato di

cattura.

Conseguenza di questo funzionamento è che la differenza tra le due frequenze tende a ridursi a

zero; si ottiene così la sincronizzazione del VCO, che aggancia la frequenza del segnale d'ingresso e

la tensione di errore si mantiene costante. Il segnale di uscita del VCO presenta dunque la stessa

frequenza (���� = ��) e fase molto prossima a quella del segnale d'ingresso (anello nello stato di

aggancio). In questa situazione il segnale di uscita dal filtro è una componente continua,

dipendente dal prodotto delle ampiezza dei due segnali e dalla differenza fra le loro fasi.

Viene definito campo di cattura l'intervallo di frequenze, intorno alla frequenza di oscillazione

libera �� del VCO, in cui l'anello riesce ad agganciare la frequenza del segnale d'ingresso. Si

definisce campo di aggancio l'intervallo di frequenze, intorno alla frequenza di oscillazione libera

del VCO, in cui l'anello riesce a seguire le variazioni di frequenza del segnale d'ingresso, dopo

averla agganciata. Il campo di cattura risulta più piccolo del campo di aggancio.

Durante la fase di aggancio la frequenza del VCO risulta uguale a quella del segnale esterno a

meno di una piccola differenza di fase che serve a produrre la tensione di errore che mantiene la

frequenza del VCO agganciata a quella del segnale d'ingresso, nel caso di variazione di

Page 12: PLL e Fine Tuning Circuit

12

quest'ultima. La tensione di errore, durante l'aggancio di fase, è quindi un indicatore di qualsiasi

variazione di frequenza del segnale d'ingresso .

Se il segnale d'ingresso è modulato in frequenza e il PLL è agganciato alla frequenza portante ��,

poiché questa contiene le deviazioni di frequenza dovute alla modulazione, il VCO tenderà a

seguire continuamente il valore istantaneo della frequenza del segnale d'ingresso. La tensione di

errore in uscita al filtro risulta proporzionale alle variazioni di frequenza del segnale ricevuto, per

cui una volta amplificata rappresenta il segnale modulante.

Un’altra applicazione di questo circuito è il sintetizzatore di frequenza, che è in grado di generare

frequenze variabili, il cui valore d’uscita risulta sempre essere multiplo di una frequenza di

riferimento in ingresso.

θ̂ ( )t

0

t

( )tφ( )tθ( ( ))S tφ

Figura 5 Modello in banda base di un anello ad aggancio di fase

Nella figura 5 viene presentato lo schema in banda base del PLL . Al posto del phase detector c’è

un sommatore seguito da un blocco non-lineare che ne rappresenta la caratteristica, in questo

caso (rivelatore moltiplicativo) !"(#)$ = % sin "(#). Inoltre il VCO è stato sostituito da un

integratore ideale. E’ interessante notare che le variabili )(#) e )*(#) appaiono esplicitamente in

questo modello mentre nello schema a blocchi del PLL esse comparivano solo come argomenti di

funzioni del tempo. Altro risultato importante è che in questo modello non è presente la

frequenza di riposo, questo spiega perché lo schema sia detto in banda base del PLL. Come si può

notare il modello adottato è non-lineare, il che rende una trattazione matematica del sistema

abbastanza difficoltosa. L’approssimazione lineare dell’equazioni che regolano il funzionamento

del PLL ci fornisce un metodo d’analisi semplice e veloce.[3]

Page 13: PLL e Fine Tuning Circuit

13

Approssimazione lineare e funzione di trasferimento

Supponiamo che il PLL sia a regime di funzionamento e che non ci siano disturbi, se è

dimensionato correttamente, è lecito aspettarsi che la fase stimata )* sia molto vicina alla fase in

ingresso ). Sotto queste condizioni "(#) ≪ 1 rad per ogni istante di tempo. In questo caso

possiamo far uso dell’ approssimazione :

sin "(#) ≈ "(#)

e quindi trascurare tutte le non-linearità. L’equazione linearizzata del PLL diventa quindi:

."(#).# = .)

.# − 0% 1 �(# − 2)��

"(2).2

con 0% = 0�0304%, rispettivamente i guadagni del VCO, del moltiplicatore e l’energia del

segnale generato localmente dall’oscillatore digitale.

Si può notare subito un limite dell’approssimazione lineare: durante la fase d’acquisizione,nella

quale )* viene portata dal suo valore iniziale fino a ), nulla garantisce che "(#) ≪ 1 e che, quindi, il

modello lineare sia valido. Nonostante questo alcune importanti caratteristiche del PLL possono

essere facilmente ricavate dall’equazione linearizzata. Per analizzare un sistema lineare è

conveniente spostarsi nel dominio di Laplace. Ammettendo l’esistenza delle trasformate:

0

0

( ) ( )

( ) ( )

st

st

s t e dt

s t e dt

φ φ

θ θ

∞−

∞−

=

=

e per ( 0) ( 0) 0t tθ φ= = = = , possiamo riscrivere l’equazione del PLL :

( ) ( ) ( ) ( )s s s s KAF s sφ θ φ= −

Page 14: PLL e Fine Tuning Circuit

14

Dalla quale si ricava facilmente la funzione di trasferimento dell’errore:

( )

( )( )

s s

s KAF ss

φ

θ∧ =

+

Il diagramma a blocchi che realizza questa equazione è illustrato in Fig 6

θ( )s

θ̂(s)

(s)φ

1s

Figura 6 Modello linearizzato di un PLL.

Sostituendo ( )sφ con ( ) ( )s sθ θ∧

− otteniamo la funzione di trasferimento ad anello chiuso:

0

0

( )( )( )

1 ( )( )

G ssH s

G ss

θ

θ∧= =

+

dove 0( )G s è la funzione di trasferimento ad anello aperto e vale

0

( )( )

KAF sG s

s=

Esiste quasi sempre una differenza ω∆ tra la frequenza del segnale e quella dell’oscillatore locale,

dovuta, ad esempio, alle inevitabili differenze esistenti tra l’oscillatore del trasmettitore e quello

del ricevitore. A causa di tutto questo, per annullare completamente l’errore, come verrà spiegato

in seguito, serve un PLL del secondo ordine. Un PLL si dice del secondo ordine se la sua funzione di

trasferimento ad anello chiuso ha almeno due poli, il che implica che F(s) deve avere almeno un

Page 15: PLL e Fine Tuning Circuit

15

polo. Dato che i PLL del secondo ordine sono di gran lunga i più diffusi, limiteremo il nostro studio

a questo caso, sebbene i metodi usati valgano per i PLL di qualsiasi ordine. In Figura 7 sono

elencate le funzioni di trasferimento, le realizzazioni circuitali e i diagrammi di Bode di due tra i più

usati filtri d’anello, quello attivo e quello passivo. Il filtro passivo è un filtro Passa-Basso con un

polo in 11/s T= − , mentre quello attivo è un integratore perfetto, cioè sempre un Passa-Basso ma

con un polo in zero, e la sua realizzazione circuitale richiede la presenza di un amplificatore con un

alto guadagno.

Figura 7 Filtro attivo e passivo

Page 16: PLL e Fine Tuning Circuit

16

Progettazione PLL del secondo ordine

Partendo dalle specifiche del nostro progetto, si illustrerà la progettazione di un filtro attivo del

secondo ordine con una frequenza di attraversamento:

5� = 2630 9:;< = 188,4 9��./���<

e margine di fase pari a:

"A = 60°

Ricordando che nel caso di Pll del secondo ordine si ha:

1/ 2

1n

KA

=

1/ 2

22

12 2nTT KA

T

ωζ = =

e che inoltre

5� = 2D5E

si passa alla progettazione vera e propria del filtro partendo dalla relazione che lega il margine di

fase al fattore di smorzamento D:

D ≈ 0.01"A = 0.6 9G��.�<

Una volta calcolati i valori di D � 5E, utilizzando le equazioni descritte in precedenza, è possibile

derivare i valori di HI e �JKL che rispettivamente saranno pari a :

HI = (2D)I5� = 7,64 �NO

0%H4 = 5EI = P5�2DQI = 24.649

Pertanto, andando ad inserire i valori ottenuti all’interno della funzione ad anello aperto del

circuito attivo descritto nel paragrafo precedente, si ottiene:

S�(�) = T%�

1 + �HI�H4 = 1 + 7,64�NO�4,056�NW�I

Page 17: PLL e Fine Tuning Circuit

17

Fine Tuning Circuit (Simulink)

Per poter realizzare la struttura di cui si è parlato nelle pagine precedenti è stato utilizzato

Simulink, un tool di Matlab, che ci permette di descrivere attraverso dei blocchi il comportamento

del sistema e eseguire le simulazioni opportune.

Prima di tutto si è realizzato un semplice Full-Adder, che è l’elemento base della struttura Fine-

Tuning, attraverso porte logiche di tipo AND, sommatori a 2 e 3 ingressi ed infine dei blocchi

Compare to Constant. Questi ultimi blocchi ci permettono di avere un valore logico 1 in uscita

rispettivamente se l’ingresso è pari a 1 (sul ramo relativo a Sout) oppure se il suo valore è maggiore

di 1 (sul ramo relativo a Cout).

Figura 8 ftc con blocchi simulink

Il valore che si propagherà agli stati successivi sarà dunque dipendente da H�; se sarà 0 si

propagherà anche anche su Cout, altrimenti in uscita passerà il valore logico di Sout. Per realizzare

una struttura a 4 stadi basta connettere in serie 4 Full-Adder di questo tipo. Ovviamente in questo

caso il valore di Cout dipenderà dai 4 Fine Tuning Bits H�, H4, HI, HO.

Page 18: PLL e Fine Tuning Circuit

18

Simulazione comportamento fine tuning circuit 4-stages

Abbiamo effettuato la simulazione del comportamento del riporto d’uscita per una combinazione

di questi ingressi pari a “1011”, imponendo che i Fine Tuning Bits (settati a precedentemente a

“0000”) assumano questi valori al 5° colpo di clk. La tabella 2 [1] riporta la sequenza del Carry

Output, il numero di ‘1’ logici presenti in essa ed il numero di clock cycles necessari prima che essa

si ripeti in maniera periodica, proprio per la combinazione di ingressi da noi utilizzata nella

simulazione:

Tabella 2 dati per ingressi “1011”

Dai risultati ottenuti nella nostra simulazione (mostrati in figura 9), si può notare come

effettivamente il numero di clock cycles che bisogna attendere affinché la sequenza del carry

ouyput sia quella desiderata è pari a 5 (partendo dal 5° clk in cui commutano gli ingressi), ed il

numero di livelli logici alti è proprio pari a 11 su 16. A causa di questo # di Clock Cycles, la nostra

analisi va considerata tra l’11° e il 27° colpo di clk.

Figura 9 simulazione ftc ingressi "1011"

Dal confronto tra la sequenza periodica del carry out ottenuta dalla nostra simulazione e quella

riportata in tabella 2, rispettivamente “0110110110110111” e “0110111011011011”, abbiamo

dimostrato che la sequenza della tabella indica solamente quanti bit a 0 e a 1 sono presenti nella

Word in uscita, e la loro alternanza.

Page 19: PLL e Fine Tuning Circuit

19

DDS simulink

Il passo successivo è la realizzazione del DDS, sempre sulla stessa piattaforma di sviluppo. Gli

ingressi all’accumulatore sono tre:

• L’incremento principale: che definisce la Frequenza della sinusoide generata

• Il carry output della struttura precedente analizzata

• Il valore della somma dell’istante precedente

Figura 10 DDS ingresso pll

Il compito che ha l’accumulatore è la generazione di una rampa che vada a leggere

oppurtanamente i valori della funzione coseno (in questo caso), presenti nella ROM.

Figura 11 simulazione accumulatore

Page 20: PLL e Fine Tuning Circuit

20

La frequenza del coseno in uscita dipende dal valore dell’incremento principale secondo:

��� = ���� ∙ ����_����2X

con N pari al numero di bit dell’accumulatore. Dunque a parità di incremento i parametri su cui

possiamo agire per avere una determinata frequenza sono Fclk e la profondità della memoria.

Fclk Profondità memoria Risoluzione

no FT

Risoluzione

con FT

20 Mhz 12 bit 4.885 Hz 305 Hz

20 MHz 16 bit 305 Hz 19 Hz

Tabella 3 risoluzione in frequenza 12-16 bit

In tabella 3 si nota la differenza della risoluzione che si ottiene scegliendo una ROM con 4096

locazioni o 65536, per il nostro progetto abbiamo optato per la seconda scelta, perché con l’uso

del Fine Tuning siamo riusciti ad ottenere una risoluzione pari a 19 Hz, ottimale anche per quanto

riguarda l’uso di questo dispositivo come VCO di un Phase Locked Loop. Con queste specifiche per

raggiungere la Fout desiderata, pari a 10 Khz, l’incremento da dare all’accumulatore è 32. La forma

d’onda generata si può vedere in figura 12:

Figura 12 uscita DDS 10kHz

Page 21: PLL e Fine Tuning Circuit

21

Ovviamente dobbiamo ricordare che la forma d’onda in uscita non è una sinusoide pura, in quanto

stiamo leggendo la ROM con passo 32, e dunque rappresentandola con soli 2048 campioni e non

con i totali 65536. Ciò produce delle spurie che si vanno a sommare alla frequenza portante.

Figura 13 fft sinusoide d’uscita DDS

In figura si può notare che comunque essendo un progetto fatto in double floating point precision

l’ SFDR (Spurious Free Dinamic Range) risultante è circa 159.6 dB

Ovviamente per poter implementare un dispositivo di questo tipo su un hardware dedicato è

necessario passare il progetto in fixed point, ossia andare a quantizzare la parte decimale dei valori

memorizzati in tabella. La memoria è infatti l’elemento che occupa maggiore area e quindi è

necessario andare a ridurre la lunghezza di parola dei campioni memorizzati nella ROM.

Page 22: PLL e Fine Tuning Circuit

22

Quantizzando a 16 e a 8 bit otteniamo rispettivamente un SFDR pari a 61 dB e 36 dB, come

mostrato nelle figure 14 e 15:

Figura 14 fft sinusoide d’uscita DDS fxp 16 bit

Figura 15 fft sinusoide d’uscita DDS fxp 8 bit

Page 23: PLL e Fine Tuning Circuit

PLL double floating point

Una volta descritta e simulata la struttura del DDS che utilizza un Fine Tuning Circuit per

aumentare la risoluzione in frequenza abbiamo realizzato, sempre su sim

utilizza questa particolare struttura di DDS come oscillatore controllato in tensione

schema del circuito è rappresentato in Figura 1:

Come si può notare dalla figura, un segnale sinus

uscente dal VCO. Il risultato di questa moltiplicazione viene poi filtrato (e poi moltiplicato per un

guadagno opportuno) in modo tale da eliminare le componenti ad alte frequenze, così come

descritto in maniera più dettagliata nel

cui il segnale viene poi sommato, sono stati scelti in maniera tale da far oscillare il VCO alla sua

frequenza di riposo �� = 10T:;

una frequenza pari a quella di riposo

floating point precision

Una volta descritta e simulata la struttura del DDS che utilizza un Fine Tuning Circuit per

aumentare la risoluzione in frequenza abbiamo realizzato, sempre su simulink, un circuito PLL che

utilizza questa particolare struttura di DDS come oscillatore controllato in tensione

ito è rappresentato in Figura 1:

Figura 16 schema a blocchi PLL

Come si può notare dalla figura, un segnale sinusoidale in ingresso viene moltiplicato per il segnale

uscente dal VCO. Il risultato di questa moltiplicazione viene poi filtrato (e poi moltiplicato per un

guadagno opportuno) in modo tale da eliminare le componenti ad alte frequenze, così come

maniera più dettagliata nel capitolo precedente. Il valore del guadagno, e dell’offset a

cui il segnale viene poi sommato, sono stati scelti in maniera tale da far oscillare il VCO alla sua

T:;. Infatti nel momento in cui il segnale di ingresso

una frequenza pari a quella di riposo, il segnale in ingresso al VCO oscillerà tra valori compresi tra

23

precision

Una volta descritta e simulata la struttura del DDS che utilizza un Fine Tuning Circuit per

ulink, un circuito PLL che

utilizza questa particolare struttura di DDS come oscillatore controllato in tensione (VCO). Lo

viene moltiplicato per il segnale

uscente dal VCO. Il risultato di questa moltiplicazione viene poi filtrato (e poi moltiplicato per un

guadagno opportuno) in modo tale da eliminare le componenti ad alte frequenze, così come

. Il valore del guadagno, e dell’offset a

cui il segnale viene poi sommato, sono stati scelti in maniera tale da far oscillare il VCO alla sua

il segnale di ingresso abbia anch’esso

, il segnale in ingresso al VCO oscillerà tra valori compresi tra

Page 24: PLL e Fine Tuning Circuit

24

524,6 e 525,4, così in uscita dal convertitore ADC a 10 bit si avrà un segnale costante a 525. A

questo punto da questo segnale vengono estratti i 4 bit meno significativi che vanno in ingresso al

fine tuning circuit, diventando così i bit HO,HI,H4,H� di cui si è parlato nel capitolo precedente. I bit

restanti, (opportunamente divisi per 2�) vanno al quinto ingresso del DDS, ovvero quello dedicato

all’incremento di fase che, per far oscillare il segnale a 10T:; con un accumulatore di fase a 16

bit, deve valere 32. Infatti prendendo il segnale in uscita dal convertitore che in binario è pari a

“100001101” e andandolo a ‘tagliare’ dividendolo per 2�, si ottiene “100000” ovvero proprio il 32

decimale necessario all’incremento di fase del VCO. Le porte AND presenti tra il selettore di bit e il

VCO, e con un ingesso fisso ad 1, permettono di mandare in ingresso al fine tuning circuit valori

che siano o ‘0’ o ‘1’ andando in questo modo a simulare perfettamente il comportamento binario

del sistema.

Una volta descritto come inizializzare il VCO alla sua frequenza di riposo vediamo come

effettivamente l’oscillatore è in grado di dare in uscita un segnale della stessa frequenza del

segnale di ingresso, anche in presenza di variazioni della frequenza di quest’ultimo.

In figura 17 è mostrato il segnale di errore che va in ingresso al VCO prima della conversione

analogico digitale, nel caso in cui il segnale di ingresso passi da 10.015:; a 10.030:;, e poi una

volta assestato il segnale di uscita a 10.065:;.

Figura 17 aggangio PLL

Page 25: PLL e Fine Tuning Circuit

25

Dalla figura 17 si può facilmente vedere come si parte inizialmente da una situazione di equilibrio

in cui il VCO e il segnale di ingresso oscillano entrambi alla frequenza di riposo e il valore

dell’errore è proprio 525 per le ragioni descritte in precedenza. Questo equilibrio viene rotto a

0.01s quando la frequenza del segnale di ingresso passa istantaneamente a 10.030:; . Dopo

0,15s il segnale di errore si assesta in maniera definitiva intorno a 526 mandando così in ingresso

al fine tuning “1101” e al phase accumulator 32, e proprio questi valori permettono al VCO di far

oscillare il suo segnale di uscita a 10.030:;, rendendo effettivo l’aggancio col segnale di ingresso.

Per confermare la flessibilità del PLL e verificare che una volta agganciato il segnale, questo sia

ancora in grado di seguire eventuali variazioni di quello in ingresso, a 0,5s viene portato il segnale

in ingresso a frequenze superiori. Si può vedere come ancora una volta l’errore dopo diverse

fluttuazioni, questa volta per un tempo maggiore dovuto al maggiore ∆� applicato al segnale in

ingresso, si assesti (a 0,67s) intorno ad un valore costante pari a 528. Questo valore manda in

ingresso al fine tuning una sequenza di bit pari a “0000” e il valore 33 al phase accumulator in

modo da generare una sinusoide a 10.060:; proprio pari a quella in ingresso.

Un’ulteriore prova per dimostrare la validità del progetto è stata quella di applicare al segnale di

ingresso anche un ∆� negativo. Pertanto la frequenza del segnale di ingresso si sposterà dalla

frequenza di riposo �� verso frequenze più basse. L’andamento dell’errore è mostrato in figura 18:

Figura 18 aggangio PLL con variaz di freq negativa

Page 26: PLL e Fine Tuning Circuit

26

Ancora una volta è possibile notare come, dopo diverse fluttuazioni, il segnale si stabilizzi intorno a

due valori costanti 524 e 523 rispettivamente per frequenze d’ingresso pari a 9.995:; e 9.975:;.

Nelle figure seguenti vengono mostrate sovrapposte le forme d’onda in ingresso (viola) e in uscita

dal VCO (gialla) in due momenti differenti andando così a mostrare come, alla variazione dei

segnali d’ingresso, segua prima uno sfasamento tra i due segnali fino a 180° (figura 19) e poi un

riaggancio della fase a 90° (figura 20) nel momento in cui il segnale d’uscita riesce a raggiungere la

frequenza del segnale d’ingresso:

Figura 19 sfasamento segnali 180°

Figura 20 sfasamento segnali 90°

Page 27: PLL e Fine Tuning Circuit

27

Simulazione Pll con salto di fase

Avendo realizzato un filtro del secondo ordine, oltre a variazione della frequenza, il nostro

dispositivo dovrebbe essere in grado di agganciare anche un salto di fase del segnale in ingresso.

Pertanto abbiamo simulato proprio questa situazione, applicando un gradino di ampiezza 500, alla

rampa di indirizzamento della memoria seno andando così a realizzare il salto di fase.

Dalla figura 20.1 è possibile notare come ancora una volta il dispositivo si comporti in maniera

corretta, rispettando le attese teoriche, agganciando la fase del segnale in ingresso oscillando così

alla sua stessa frequenza:

Figura 20.1 errore ingresso VCO dopo salto di fase

Page 28: PLL e Fine Tuning Circuit

28

Simulazione Pll con segnale d’ingresso rumoroso

Un’ulteriore prova che si è effettuata è stata quella di vedere il comportamento del Pll nel caso in

cui in ingresso arrivi un segnale sinusoidale sporcato da rumore Gaussiano.

Figura 21 schema a blocchi con dds + rumore

Questo caso rispecchia più fedelmente ciò che succede nella realtà, in cui le forme d’onda sono

difficilmente prive di rumore. Nelle prossime figure possiamo vedere come il seno generato dal

DDS in ingresso, sebbene oscilli alla frequenza di 10.03 Hz (figura 22), abbia molte più componenti

spettrali che si sommano alla portante (figura 23).

Figura 22 sinusoide 10kHz con rumore

Page 29: PLL e Fine Tuning Circuit

29

Figura 23 fft sinusoide con rumore

In questo caso, come è possibile notare dalla figura, abbiamo dunque uno Spurious Free Dynamic

Range notevolmente minore rispetto alla stessa sinusoide priva di rumore, passiamo infatti da

circa 50 dB a 35 dB.

E’ interessante notare come la sinusoide che viene generata dal VCO del PLL in esame, che va ad

agganciare la forma d’onda in ingresso, sia invece abbastanza ‘pura’ e presenti addirittura un SFDR

notevolmente maggiore (figura 24).

Ciò può essere spiegato col fatto che la struttura realizzata è abbastanza rigida ai disturbi, infatti il

blocco che divide l’ampiezza del valore in uscita del filtro ci permette di limitare l’escursione

dell’errore intorno a quel valore binario che fa oscillare il VCO intorno al valore corretto, evitando

di produrre delle spurie a frequenza molto vicina a quella di aggancio. Si può inoltre osservare che

anche il filtro LP elimina quelle componenti a frequenza più alta che ‘sporcano’ la sinusoide in

ingresso.

Page 30: PLL e Fine Tuning Circuit

30

Figura 24 fft sinusoide uscita VCO

Page 31: PLL e Fine Tuning Circuit

31

PLL fixed point precision

Una volta realizzata la struttura in double floating point, si è passati alla realizzazione in precisione

fixed point per visualizzare eventuali differenze e per una descrizione del circuito in linguaggio

Vhdl tramite il tool di Simulink HDL Coder, a cui potrebbe seguire un’implementazione su

dispositivo Fpga.

Per fare questo, attraverso il Functional Block Parameter, abbiamo modificato la tipologia dei

segnali andando a variare i parametri dei singoli blocchi del circuito.

Figura 25 functional block parameters

La modifica probabilmente più significativa alla struttura double precision, è stata la

trasformazione del filtro passa basso dal dominio di Laplace a quello in ; in quanto, proprio per

definizione, la trasformata zeta può essere vista come l’analogo della trasformata di Laplace nei

casi di segnali a tempo discreto.

Page 32: PLL e Fine Tuning Circuit

32

Utilizzando la trasformazione bilineare:

� = 2H Y1 − ;N4

1 + ;N4Z

con H pari al periodo di campionamento, si passa da una funzione di trasferimento del filtro pari a:

:(�) = 1 + 7,8�NO�0,31�N��

ad una in ; definita come:

:(;) = 0,98 − 0,979993;N41 − ;N4

Un’altra importante modifica effettuata al circuito, per rendere così possibile la generazione del

codice vhdl, è stata quella di sostituire i blocchi sommatori e di comparazione interni al Fine

Tuning Circuit, con delle porte logiche OR o XOR. Questa sostituzione non comporta variazioni a

livello funzionale del sistema rendendo però possibile l’utilizzo di HDL Coder. In figura 26 è

riportata la nuova struttura di un singolo stadio del fine tuning:

Figura 26 singolo stadio fine tuning circuit fxp

Page 33: PLL e Fine Tuning Circuit

33

Analisi spettrale

Una volta verificato che la struttura fixed point manteneva lo stesso comportamento di quella

double, abbiamo verificato come varia la purezza spettrale della sinusoide generata nel VCO in

seguito a diverse quantizzazioni della lut in cui sono stati memorizzati i suoi valori.

Per effettuare queste misurazioni ci siamo serviti del seguente codice matlab:

prima si è definita la funzione positiveFFT:

per poi applicarla ai vettori di interesse prelevati dalla simulazione di simulink su un numero di

punti scelto in maniera opportuna:

Page 34: PLL e Fine Tuning Circuit

34

Sono state fatte tre diverse prove mantenendo in tutte la lut del DDS d’ingresso quantizzata a 18

bit. Le figure 27, 28 e 29 riportano le FFT del segnale in uscita dal VCO quantizzato rispettivamente

a 18, 14 e 10 bit:

Figura 27 fft sinusoide VCO 18 bit

Figura 28 fft sinusoide VCO 14 bit

Page 35: PLL e Fine Tuning Circuit

35

Figura 29 fft sinusoide VCO 10 bit

Dalle figure mostrate sopra, che riportano la purezza spettrale, è possibile notare come questa

vada a degradarsi all’aumentare della quantizzazione. I risultati ottenuti sono riportati in tabella 3:

#bit segnale SFDR out VCO [dB]

18 49

14 45

10 40

Tabella 3

Page 36: PLL e Fine Tuning Circuit

36

HDL Coder

Per poter implementare il progetto del PLL su una FPGA, come descritto in precedenza, è

necessario convertire i blocchi simulink in un linguaggio HDL attraverso il tool di Matlab HDL

Coder.

Dopo aver effettuato le modifiche al circuito descritte nel capitolo precedente, abbiamo studiato

la sintesi del dispositivo descritto tramite il linguaggio vhdl per diversi livelli di quantizzazione.

Naturalmente il codice generato da HDL Coder del Pll in esame, non è ottimizzato come se lo

stesso codice fosse generato manualmente. Proprio per questo nel nostro caso abbiamo dovuto

aggiungere una piccola correzione al codice inserendo un registro in uscita dalla tabella in cui

vengono memorizzati i valori del seno, ottenendo così in uscita un campione ogni colpo di clk. Se

non fosse stato effettuato questo cambiamento la tabella sarebbe stata sintetizzata non sulla

memoria RAM dedicata, che hanno a disposizione le schede FPGA, ma utilizzando i blocchi di

logica combinatoria, sprecando dunque notevoli risorse hardware.

Soffermeremo la nostra analisi sulla velocità, in termini di frequenza di clock, e sull’area occupata

dal dispositivo su FPGA.

Page 37: PLL e Fine Tuning Circuit

37

Le schede che abbiamo scelto per l’implementazione sono: Spartan3 XC3S700AN e Virtex5

XC5VTX240T. Nella tabella 4 possiamo vedere le caratteristiche di questi due dispositivi:

Device Logic Cells CLBs Slices Block RAM

XC3S700AN 13.248 1.472 5.888 360Kbits

XC5VTX240T 239.616 149.760 37.440 18,576 Mbits

Tabella 4 caratteristiche dispositivi

Come si vede dalla tabella 4, le differenze tra i due dispositivi sono piuttosto nette sia in termini di

memoria che di risorse hardware. Tenendo conto di queste differenze abbiamo provato ad

implementare il dispositivo da noi realizzato su entrambe le schede, per poter così confrontare la

frequenza massima raggiungibile dal sistema e l’area occupata.

Come prima prova abbiamo sintetizzato su dispositivo Spartan3 il Pll, con la Rom del VCO

quantizzata a 16 bit di parte decimale:

Possiamo quindi vedere che, utilizzando questo tipo di dispositivo, non si avrebbe la possibilità di

implementarlo sulla scheda in quanto le risorse hardware non sono sufficienti, infatti si avrebbe

bisogno di più Slices di quante ne siano disponibili sulla Spartan3.

Sebbene il tool di sintesi abbia comunque sintetizzato questo progetto, sarebbe stato impossibile

fare le operazioni di Mapping e Routing. Mentre la frequenza di Clock massima del sistema

sarebbe stata, come si vede dai dati riportati di seguito, di 27,365 MHz.

Page 38: PLL e Fine Tuning Circuit

38

A questo punto per non cambiare dispositivo abbiamo pensato di quantizzare la Rom, non più a 16

bit ma ad 8, accettando di fatto di avere un SFDR minore (circa 20 dB, come visto nel capitolo

precedente), ma migliorando decisamente l’occupazione d’area:

In questo secondo caso abbiamo un’occupazione di risorse Hardware 10 volte minori rispetto al Pll

presentato precedentemente.

Mentre dal punto di vista delle prestazioni abbiamo un miglioramento minimo (passando da

27,36MHz a 28MHz), perché la lunghezza di parola dei valori memorizzati nella ROM influenza

solamente l’occupazione d’area e non rallenta il sistema.

Page 39: PLL e Fine Tuning Circuit

39

A questo punto abbiamo ritenuto opportuno implementare il progetto su Virtex5, anziché su

Spartan3, per i seguenti motivi:

• La frequenza massima raggiungibile dall’implementazione su Spartan3 può non essere

sufficiente per sistemi che richiedono prestazioni maggiori.

• Sebbene abbiamo messo il registro in uscita dalla tabella Seno, sulla Spartan3 non

riusciamo comunque ad utilizzare la memoria Ram a disposizione, in quanto è troppo

piccola per memorizzare tutti i campioni.

La Virtex5 ha infatti una memoria Ram di profondità tale che ci permette di memorizzare il valore

del seno (65.536 locazioni x 18 bit di parola) anche quantizzandolo a 16 bit. . Nelle prossime

figure è riportata l’occupazione dell’intero sistema su questo dispositivo e l’occupazione della RAM

per la memorizzazione della tabella del seno:

Page 40: PLL e Fine Tuning Circuit

40

Come ci si poteva aspettare utilizzando una FPGA decisamente più performante come la Virtex 5,

ne ha risentito anche la frequenza massima del circuito, si passa infatti dai circa 27 MHz agli attuali

51 MHz:

Page 41: PLL e Fine Tuning Circuit

41

Conclusioni

Al termine di diverse prove e simulazioni abbiamo concluso che, tramite l’utilizzo del fine tuning

circuit 4-stages come extra_carry_in di un DDS, si migliora nettamente la risoluzione in frequenza

del segnale in uscita di un fattore 16, arrivando come nel nostro caso ad una risoluzione di circa

20Hz. Inoltre, utilizzando questo particolare DDS come oscillatore di un Pll, abbiamo reso possibile

l’aggancio del segnale in ingresso sia in caso di variazioni sulla frequenza che sulla fase di

quest’ultimo. Comportamento che non subisce variazioni sia per ∆� positive che negative ed

anche in presenza di sorgenti di rumore in ingresso. Andando a confrontare i risultati delle FFT del

segnale in uscita dal VCO, abbiamo constatato che l’SFDR subisce un peggioramento nel momento

in cui si applica ai campioni della sinusoide una quantizzazione più netta. Realizzato il codice vhdl e

sintetizzato il tutto su piattaforma Xilinx, è risultata evidente la superiorità della Virtex5 rispetto

alla Spartan3 in quanto è dotata di risorse hardware nettamente maggiori e permette al

dispositivo di lavorare ad una frequenza massima superiore.

Page 42: PLL e Fine Tuning Circuit

42

Bibliografia

[1] “Increasing the Frequency Resolution of NCO-System Using a Circuit Bases on a Digital Adder”

R.Erlt and J.Baier IEEE Transactions on circuits and systems vol.43, NO. 3, March 1996

[2] Direct Digital Synthesis (Application Note #5)

http://www.thinksrs.com/downloads/PDFs/ApplicationNotes/DDS.pdf

[3] L.Malesani, G.Spiazzi - 2005 - 2.6.1 – “Complementi di Elettronica II - P.L.L.”

[4] D.R.Stephens 2002 Kluwer Academic Publishers “Phase-Locked Loop for wireless

communication-Digital, Analog and Optical Iplementations”

[5] G.C.Cardarilli 2008 “Dispense corso Circuiti Integrati per Telecomunicazioni”

[6] L.W.Couch II 2002 Apogeo “Digital and Analog Communication System”