Sie sind auf Seite 1von 11

Esercitazione 7 : PLL digitale

Introduzione

Scopo dell’esercitazione è da un lato dimostrare l’uso di circuiti completamente digitali


per emulare funzioni di dispositivi tradizionalmente realizzati con tecniche analogiche,
dall’altro fornire un’introduzione all’utilizzo di circuiti logici programmabili per
realizzare sistemi elettronici.

Il sistema da realizzare è un PLL con campo di mantenimento centrato intorno a


4.5kHz., che accetta in ingresso un segnale ad onda quadra, duty-cycle 50%, compatibile
TTL. Nell’esercitazione occorre progettare due diverse versioni di tale dispositivo, una
equivalente ad uno schema analogico con demodulatore di fase a moltiplicatore (o ad
EX-OR) e filtro con guadagno in continua finito, l’altra comparabile con lo schema del
demodulatore 2 del CD 4046, demodulatore di fase/frequenza. Entrambe le versioni non
richiedono alcun componente analogico per realizzare l’anello ad aggancio di fase.

Nel seguito è fornita la descrizione funzionale dei blocchi che costituiscono il PLL. Da
questa occorre ricavare una descrizione VHDL equivalente, programmare l’Altera MAX
7128S presente sulla scheda Altera UP1 a disposizione su ogni tavolo e verificare il
funzionamento del dispositivo.

Ingressi ed uscite del sistema

Il PLL digitale, in entrambe le versioni, prevede i seguenti piedini di ingresso ed uscita:

• Vin: segnale di ingresso del PLL: dinamica di frequenza tra circa 3kHz e circa
6kHz.

• Vout: segnale di uscita dall’oscillatore a controllo numerico (NCO); è reso


disponibile per valutare la condizione di aggancio dell’anello; è collegato
internamente al demodulatore di fase.

• Filout(5...0): segnale di uscita del filtro, numero binario positivo espresso su 6 bit.
Tale segnale è disponibile per poter visualizzare la caratteristica a farfalla del PLL:
collegando un convertitore D/A a questi piedini è possibile pilotare il canale Y di un
oscilloscopio con il segnale analogico corrispondente alla configurazione digitale in
ingresso all’NCO.

• Clk: segnale di clock presente sulla scheda UP1, fclk=25.175MHz; tale segnale viene
utilizzato come riferimento per tutte le funzioni svolte dal dispositivo.

ETLlb07bb - 3 ago. 00 1
Internamente, il PLL è costituito dai due blocchi funzionali riportati nella figura
seguente:

Clk

Vin
Vout
Demodulatore
NCO
di fase e filtro

Filout(5..0)

Il circuito in entrambi i casi è basato su di un oscillatore controllato numericamente ed


un blocco che ha funzioni di demodulatore di fase e di filtro numerico. I due casi si
differenziano nella realizzazione del demodulatore.

Oscillatore a controllo numerico

L’oscillatore a controllo numerico emula le funzioni del VCO nei PLL tradizionali. Lo
scopo è di avere un segnale di uscita la cui frequenza dipende dal valore presente
sull’ingresso. Il modo più semplice di realizzare tale funzione è di costruire un divisore
di frequenza programmabile, il cui modulo dipende dal numero di ingresso.

Le specifiche richiedono una variazione di frequenza di circa un’ottava, perciò il valore


finale di conteggio deve poter variare da un valore minimo N ad un massimo pari a 2N.
Il numero di bit da utilizzare come ingresso al divisore è un compromesso tra diversi
fattori, tra cui: complessità del circuito, campo di frequenza e valore dell’incremento
elementare di frequenza in uscita, risoluzione del demodulatore di fase e corrispondente
“rumore di fase” dovuto alla quantizzazione. Un buon compromesso tra questi fattori
può consistere nell’utilizzare un numero a sei bit come ingresso dell’NCO (segnale
Filout nello schema a blocchi). In questo caso l’ingresso può variare da 0 a 63 e la
frequenza di uscita deve cambiare di un’ottava. Allora il divisore programmabile può
essere realizzato con un contatore a sette bit dotato di reset sincrono. Il reset viene
attivato quando sull’uscita del contatore è presente la configurazione 64+Filout. In
corrispondenza dell’attivazione del reset il contatore genera un impulso in uscita di
durata pari ad un periodo di clock (pgcout). La frequenza di pgcout varia da un minimo
di 196.7kHz (Filout=128) ad un massimo 387.3kHz (Filout=0). Il segnale pgcout è
mandato in ingresso ad un ulteriore contatore modulo 64 (div64), per ottenere il campo
di frequenza richiesto per il segnale Vout, che è costituito dal bit più significativo di
uscita di questo contatore. Nella descrizione del demodulatore verrà anche utilizzato il
segnale di fine conteggio di questo contatore, chiamato EOC. La transcaratteristica tra
numero di ingresso e frequenza presente su Vout è riportata nella figura seguente.

ETLlb07bb - 3 ago. 00 2
Caratteristica NCO

6.5

5.5
Frequenza Vout

4.5

3.5

3
0 10 20 30 40 50 60

Filout

E’ evidente che l’NCO non è lineare, la caratteristica è infatti iperbolica ed inoltre è


invertente. Questo influenzerà anche la forma della caratteristica a farfalla. Il segno è
importante per verificare la stabilità nel caso di demodulatore tipo fase/frequenza.

Demodulatore a EX-OR

Il primo tipo di PLL da realizzare è basato su di un blocco “demodulatore di fase/filtro”


costruito in modo da emulare il demodulatore di fase ad EX-OR seguito da un filtro che
estrae il valor medio dal segnale di uscita. In questo caso il filtro accumula l’uscita
dell’EX-OR su di un periodo del segnale Vout e genera un numero proporzionale alla
porzione di periodo per cui i due segnali Vin e Vout sono diversi.

Il demodulatore è costituito dai seguenti blocchi funzionali:

• Sincronizzatore di ingresso per Vin: non è altro che un registro a scorrimento a due
bit il cui ingresso è collegato a Vin, con segnale di clock clk, il cui scopo è
eliminare la possibilità di stati metastabili dovuti al fatto che questo segnale non è
sincorno con il PLL. L’uscita di questo circuito è il segnale Vinsync.

• Accumulatore di fase: è un contatore a sei bit, con clock clk, che è abilitato a contare
solo quando pgcout è attivo e contemporaneamente Vinsync EX-OR Vout vale 1.
Questo contatore è azzerato in modo sincrono ogni volta che EOC e pgcout sono
contemporaneamente attivi. In questo modo, dato che EOC si attiva una volta ogni
64 cicli in cui pgcout è attivo, subito prima dell’azzeramento è disponibile sulle
uscite un numero compreso tra 0 e 63, proporzionale allo sfasamento tra i segnali
Vin e Vout.

ETLlb07bb - 3 ago. 00 3
• Registro di uscita: è un registro a sei bit che campiona le uscite dell’accumulatore di
fase immediatamente prima dell’azzeramento e le mantiene costanti per il ciclo
successivo di Vout. Le uscite del registro costituiscono il segnale Filout che
comanda la variazione di frequenza dell’NCO.

Sarebbe possibile inserire tra l’uscita del registro e l’ingresso dell’NCO un ulteriore
blocco con funzioni di filtro passa-basso per modificare l’ampiezza della banda di
cattura del PLL. Questo filtro normalmente viene realizzato mediante una struttura FIR.
Tuttavia i coefficienti del filtro devono essere calcolati con cura e occorre valutare
attentamente gli effetti dovuti alle approssimazioni numeriche introdotte lavorando su
grandezze espresse con pochi bit. Inoltre, i filtri FIR sono generalmente realizzati con
dei moltiplicatori che richiedono un grosso numero di celle dell’FPGA. Di conseguenza
si è deciso di non inserire tale filtro in questo progetto. Il fatto di mantenere costante il
valore di Filout per un periodo di Vout introduce in ogni caso un effetto filtrante,
riscontrabile dall’esame della caratteristica a farfalla del PLL.

Demodulatore fase/frequenza

Il secondo PLL da realizzare differisce dal primo nel demodulatore. In questo caso il
demodulatore cerca di mantenere la posizione della transizione basso-alto del segnale di
ingresso coincidente con quella del segnale di uscita. Lo schema a blocchi è delineato
nella figura seguente:

Vin
Vinsync
Clk Sincronizzatore Phaseout
Rilevatore di
Calcolatore
transizione
di Filout
Div64
Inedge Noedge fase/frequenza
Rilevatore di
transizioni
Pgcout

EOC multiple Moreedges


Clk

Pgcout

Pgcout
EOC
Clk

Clk

I blocchi della figura hanno la seguente funzione:

• Sincronizzatore di ingresso per Vin: questo blocco è identico all’analogo descritto


per il caso precedente. Produce in uscita il segnale Vinsync.

• Rilevatore di transizione L->H del segnale Vinsync: è un blocco sincrono con clk
abilitato dal segnale pgcout, che confronta il valore del segnale Vinsync con quello
campionato nel ciclo precedente. Nel caso in cui il valore rilevato sia alto e quello
memorizzato sia basso, il valore corrente del contatore div64 viene memorizzato in
un registro. Questo blocco genera in uscita due segnali: phaseout, uscita del registro
(campo di valori possibili: [0…63]), e inedge, attivo per un periodo di pgcout ogni
volta che viene memorizzato un nuovo valore in phaseout.

ETLlb07bb - 3 ago. 00 4
• Rilevatore di transizioni multiple: è abilitato sui fronti di salita di clk in cui pgcout è
attivo. Genera due segnali: noedge e moreedges. Noedge è attivato quando EOC è
attivo e disattivato nel primo periodo in cui inedge viene campionato alto.
Moreedges è azzerato quando EOC è attivo e attivato se inedge è alto con noedge
non attivo. In questo modo vengono rilevate due condizioni che indicano che le
frequenze dei segnali Vin e Vout sono molto diverse.

• Calcolatore di fase/frequenza: genera il segnale filout di ingresso all’NCO. L’uscita


viene calcolata quando EOC e pgcout sono attivi sul fronte di salita di clk. La
variazione di Filout viene calcolata come combinazione lineare di due termini di
correzione, uno dipendente dalla differenza tra la posizione della transizione L->H
del segnale di ingresso e la posizione di riferimento (termine di fase, segnale
phasecoeff), l’altro dipendente dalla differenza tra la posizione della stessa
transizione rilevata nel ciclo precedente e la posizione rilevata nel ciclo attuale
(termine di frequenza, segnale freqcoeff). Il termine phasecoeff è pari alla
differenza (in complemento a 2) tra la fase attuale (phaseout) e 32, numero
corrispondente al valore che assume div64 in corrispondenza della transizione L->H
di Vout. Per calcolare il termine freqcoeff occorre invece memorizzare il valore
assunto da phaseout al ciclo precedente (phaselast): freqcoeff=phaseout-phaselast
(in complemento a 2). Il valore assegnato a filout dipende da alcune condizioni:

• se noedge=1, la frequenza di Vout è molto più alta della frequenza di Vin: in


questo caso filout=63.
• se moreedges=1, la frequenza di Vout è molto più bassa della frequenza di Vin:
in questo caso filout=0.
• se noedge=0, si pensa di essere nel campo giusto. Se il valore
newvco=phasecoeff/4+freqcoeff+filout è positivo e minore di 63, allora
filout=newvco; se è negativo, filout=0; se maggiore di 63, filout=63.

Uno schema funzionale del circuito è riportato di seguito:

+
Phaselast - Freqcoeff Newvco Clip
D Q 0
+ [0..63]
* + + 0
63 Filout
1 D Q
Phaseout 0
1 *
Noedge

+ Phasecoeff
Moreedges

* I registri sono abilitati quando


EOC e Pgcout = 1; il segnale di -
clock è Clk. 32 4

Le operazioni precedenti devono essere fatte su di un numero di bit maggiore di sei, in


modo da poter controllare l’overflow. I coefficienti indicati per i vari termini che
compongono newvco portano ad un comportamento stabile dell’anello. E’ possibile
provare ad usare altri coefficienti e verificare, sia sulla caratteristica a farfalla sia
visualizzando nel tempo ingresso ed uscita, se il comportamento cambia ed in che
modo.

ETLlb07bb - 3 ago. 00 5
Misure

Una volta programmato il componente, le misure eseguibili sono analoghe a quelle


previste per un PLL “hardware”:
- campo di cattura
- campo di mantenimento
- caratteristica a farfalla

Per tracciare la caratteristica a farfalla occore generare una tensione analogica


proporzionale all’uscita del filtro (Filout). Portare su piedini esterni questi segnali, e
collegare un convertitore D/A a 6 bit, realizzato con resistenze pesate o rete a scala. Nel
determinare il valore delle resistenze tener conto della caratteristiche elettriche delle
uscite. Dato che la rete di peso è pilotata da deviatori tra massa e Vr (la tensione di
alimentazione), la resistenza equivalente di uscita è costante per tutte le configurazioni
di ingresso, e l’uscita del D/A può essere ottenuta come tensione a vuoto anzichè come
corrente di corto circuito. Non occorre pertanto montare l’amplificatore di
transresistenza all’uscita della rete di peso.

Visualizzazione della
caratteristica a farfalla con
convertitore D/A. E’ riconoscibile
l’andamento iperbolico della
caratteristica (in pratica sull’asse
orizzontale compare il periodo,
non la frequenza)

Nelle zone in cui il PLL non è


agganciato l’uscita del filtro ha
valore casuale.

Nella seconda immagine le


condizioni di funzionamento del
PLL sono invariate, ma la
visualizzazione è fatta su una
media di 128 campioni, e a PLL
sganciato compare un segnale di
controllo a valoro medio nullo.
Sono riconoscibili i campi di
cattura e di mantenimento.

Un effetto analogo si ottiene


inserendo un filtro passa basso RC
all’uscita del D/A.

ETLlb07bb - 3 ago. 00 6
SCHEDA ALTERA UP1

La scheda UP1 è descritta completamente nei documenti “University Program Design


Laboratory Package User Guide” (univ.pdf) e “University Program Design … User
Guide Supplement” (upds_ugs.pdf) scaricabili dal sito ALTERA (www.altera.com).
La topografia della scheda è riportata nella figura seguente.

Topografia della scheda UP1

Di seguito si riportano solo le caratteristiche più importanti utilizzate nell’esercitazione.


La scheda permette di realizzare progetti basati su due diversi componenti Altera: un
EPM7128SLC84-7 e un EPF10KRC240-4. Nell’esercitazione si utilizza solo il primo
componente, si tralascia quindi di descrivere le funzioni relative al componente serie
10K.Il data-sheet del 7128S si trova nel file M7000.pdf. Le sezioni utilizzate della
scheda sono descritte di seguito.

Connettore di alimentazione

Al connettore di alimentazione (jack marcato “DC IN” in alto a sinistra”) deve essere
collegata una tensione di 9V ottenuta da una sezione dell’alimentatore triplo presente
sul banco. Prestare attenzione alla polarità che deve ovviamente essere rispettata.
Seguire le indicazioni date in proposito da docente o coadiutore.

Connettore J-TAG

Il connettore J-TAG permette di programmare i dispositivi presenti sulla scheda tramite


un cavo, denominato “Byte-Blaster”, collegato alla porta parallela del PC.
Prestare attenzione alla disposizione di un gruppo di quattro jumper posti sotto al
connettore che permettono di scegliere quale componente programmare e in che modo. I

ETLlb07bb - 3 ago. 00 7
quattro jumper (denominati TDI, TDO, DEVICE e BOARD), devono essere tutti inseriti
e disposti nella posizione più vicina al connettore J-TAG, come nella figura seguente.

Disposizione dei jumper per programmare correttamente la 7128S

Pulsanti

I due pulsanti, denominati MAX_PB1 e MAX_PB2, sono collegati ai connettori P9 e


P10. I segnali corrispondenti sono a livello logico basso quando i pulsanti sono premuti.
Dai due connettori occorre cablare la connessione ai piedini della 7128S cui il sistema
assegnerà in modo automatico ed ottimizzato gli ingressi corrispondenti, utilizzando i
cavetti per collegamenti normalmente utilizzati per le basette bianche. Tutti i piedini
utente della 7128S sono disponibili sui piedini dei connettori P1, P2, P3 o P4 secondo la
tabella seguente.

Display a sette segmenti

I display a sette segmenti sono collegati direttamente alla 7128S. Non è quindi
necessario utilizzare dei cavetti di collegamento, ma occorre specificare in MAXPLUS2
i piedini cui collegare le uscite corrispondenti del dispositivo. I display accettano dei
segnali attivi bassi. Questo vuol dire che per accendere un segmento, bisogna porre a
zero logico l’uscita corrispondente. La mappatura tra piedini della 7128S e display è
descritta nella figura seguente.

ETLlb07bb - 3 ago. 00 8
Clock

La scheda UP1 dispone di un generatore di clock quarzato a frequenza di 25,175 MHz,


collegato al piedino 83 della 7128S.

Compilazione del progetto

Il file contenente il programma in VHDL può essere scritto con qualunque editor di
testi, purché non inserisca caratteri di controllo nel testo (es. Notepad, edit del DOS
ecc.). L’editor del sistema MAXPLUS2 ha alcuni vantaggi in quanto colora in modo
diverso le parole chiave, i commenti ed i caratteri vietati nella descrizione. Per poter
essere accettato dal compilatore Altera, il file in VHDL deve contenere una sola Entity,
il cui nome deve essere uguale al nome del file. L’estensione del file deve essere .VHD.

Per procedere alla compilazione del progetto occorre effettuare i passi seguenti:

1. Creare, se non esiste, sul disco C: del computer la directory C:\ELNTLC99.


2. Copiare il file con la descrizione del progetto nella directory di cui al punto 1, se lo
si è già sviluppato prima dell’esercitazione.
3. Ogni file necessario per l’esercitazione (schematici, file VHDL, etc…..) DEVONO
risiedere nella directory di cui al punto 1.
4. Entrare nel sistema MAXPLUS2, cliccando con il mouse sull’icona corrispondente
sul desktop del PC.
5. Se si aveva già il file del progetto, visualizzarlo utilizzando il menù File ->
Open… e selezionando la directory ed il file copiato nel punto 2
6. Se il file deve essere creato, utilizzare il menù File -> New… , selezionando
l’opzione Text Editor File. Salvare subito il file con il menù File ->
Save As…, dando come estensione .vhd.

ETLlb07bb - 3 ago. 00 9
7. Editare il file se sono necessarie modifiche (non dovrebbero mai comparire scritte in
rosso, tutte le parole chiave devono apparire in blu, i commenti e le stringhe
assumono colore verde).
8. Definire il progetto: con la finestra di editing del file selezionata, attivare il menù
File -> Project -> Set Project to Current File.
9. Quando il file sembra corretto, attivare il compilatore: menù Max+plus II ->
Compiler. Questo attiva una finestra di monitoraggio della compilazione ed una di
messaggi dove vengono riportati eventuali errori.
10. Con la finestra del compilatore selezionata, definire il dispositivo da utilizzare:
menù Assign -> Device…; nella finestra selezionare come device family
MAX7000S e come device EPM7128SLC84-7.
11. Definire i piedini cui devono essere collegate le uscite dei display 7 segmenti e
l’ingresso di clock (i piedini sono definiti nelle pagine precedenti): utilizzare il menù
Assign -> Pin, Location, Chip… ; nella finestra relativa specificare:
• il nome del segnale nella casella Node name:;
• il piedino cui deve essere collegato, nel riquadro Chip resource, alla voce Pin:;
• cliccare sul pulsante Add e ripetere la procedura per ogni segnale.
12. Terminata la fase di definizione, eseguire la compilazione, cliccando sul pulsante
Start nella finestra del compilatore. In caso di errori compariranno dei messaggi
nella finestra apposita. Molte volte è possibile richiedere al sistema di portarsi in
editing sulla riga dove si è verificato l’errore, utilizzando il pulsante Locate dopo
aver selezionato il messaggio.
13. Reiterare editing e compilazione fino ad ottenere un progetto funzionante. Le fasi di
definizione non devono essere ripetute, vengono mantenute dal sistema a meno che
non le si cancelli esplicitamente.
14. Quando la compilazione sia corretta, recuperare l’informazione sul posizionamento
dei pin relativi ai pulsanti: visualizzare il report file, cliccando sul simbolo rpt che
si trova sotto alla casella Fitter nella finestra del compilatore. Scorrere il file
notando quante celle sono state utilizzate (all’incirca alla linea 40 del file) e la
disposizione dei piedini. Per quest’ultima, data la mole di informazione presente nel
file, la procedura più semplice è utilizzare la funzione di Find (^F) specificando
il nome del piedino.

Completate con successo queste procedure, è possibile passare a verificare sulla scheda
il funzionamento del circuito.

Programmazione e verifica

Il primo passo da effettuare è controllare che la scheda sia configurata e collegata come
descritto nella sezione Scheda UP1.

Successivamente, devono essere collegati i pulsanti ai pin del dispositivo definiti al


passo 14 della sezione precedente.

Occorre poi alimentare la scheda e quindi scaricare la configurazione nel dispositivo


EPM7128S:

1. Nel sistema MAXPLUS2, attivare il programmatore: menù Max+plus II ->


Programmer. Se compare una finestra in cui si richiede di specificare il tipo di

ETLlb07bb - 3 ago. 00 10
hardware presente, specificare nella casella Hardware Type: la voce
ByteBlaster.
2. Nella finestra del programmatore, cliccare sul pulsante Program. Durante la
programmazione, si accenderà sulla scheda il LED TCK. Quando questo LED si
spegne, la scheda è pronta a funzionare come cronometro digitale.
3. Provare a premere i tasti e a verificare se il funzionamento rispetta le specifiche di
progetto. La parte più delicata generalmente è nel debounce dei pulsanti: se questo
non è effettuato in modo efficace, la scheda sembra non rispondere o rispondere
male ai comandi.
4. In caso di funzionamento non corretto, modificare il programma e riprogrammare il
dispositivo. Per fare ciò non è necessario spegnere e riaccendere la scheda.

ETLlb07bb - 3 ago. 00 11

Das könnte Ihnen auch gefallen