Sei sulla pagina 1di 48

Caratterizzazione dei convertitori A-

D
Introduzione
Prima di poter essere elaborato il segnale analogico necessita di una conversione digitale,
ovvero sottoforma numerica. Avere un segnale numerico anziché analogico è utile per
avere dei blocchi di elaborazione meno costosi e più potenti. Si può avere anche
l’opportunità di memorizzare con facilità il segnale e operare in un secondo momento
dall’acquisizione, l’elaborazione stessa.

Per poter essere espresso sottoforma numerica il segnale deve essere campionato e
quantizzato, bisogna cioè discretizzare l’asse dei tempi e la grandezza a cui si fa
riferimento.

Capitolo 8 : caratterizzazione convertitori A/D

L’asse delle tensioni è discretizzato indipendentemente dal segnale Vin, invece quello
dei tempi in base alla variabilità di Vin e ai tempi di conversione.

Se è necessario campionare con tempi di campionamento piccoli si usano convertitori


veloci e si avranno tempi di conversione totale contenuti: quanto più piccolo è il
periodo di campionamento, tanti più campioni si avranno e più lungo sarà il tempo
totale di conversione. È importante allora scegliere un opportuno convertitore una una
corretta frequenza di campionamento, in base alla banda del segnale. In particolare per
evitare ALIASING la frequenza di campionamento si sceglie in base alla banda del
segnale, questo può essere facilmente compreso considerando lo spettro di frequenza del
123
segnale; per ricavare tale spettro bisogna applicare l’algoritmo di Trasformata di Fourier
(discreta o continua); gli algoritmi di trasformata e di antitrasformata sono gli stessi a
meno di certe costanti. Per tale motivo campionare in frequenza equivale a replicare nel
tempo e viceversa campionare nel tempo equivale a replicare in frequenza. In particolare
deve valere per il teorema di Shannon:

fc>2B

Se si considera un segnale periodico nel dominio del tempo, in frequenza si ha un


segnale a righe, cioè con uno spettro a righe, distanziate di una quantità pari alla
frequenza fondamentale del segnale periodico f=1/T , con T il periodo del segnale:

… …

-2f0 -f0 f0 2f0 3f0 f

Osservando il segnale campionato ci si accorge che altro non è che il segnale stesso
moltiplicato per un treno di impulsi:

Capitolo 8 : caratterizzazione convertitori A/D


in frequenza tale segnale avrà uno spettro periodico con un periodo pari a 1/Tc, ovvero
pari alla frequenza di campionamento del segnale:

Dove lo spettro del segnale di partenza si ripete uguale a se stesso ogni fc.

Accade che, se si considera lo spettro del segnale campionato nell’intorno dello zero,
ovvero nel primo periodo, tra –fc/2 e fc/2, questo coincide proprio con lo spettro del
segnale non campionato e si deduce ancora che il campionamento nel tempo del segnale
rende periodico l’andamento in frequenza dello stesso, con periodo pari a fc. Questo è
vero nell’ipotesi che la frequenza di campionamento sia maggiore dell’intervallo di
124
frequenze occupato dalla trasformata del segnale, ovvero dalla banda del segnale,
altrimenti si ha aliasing (sovrapposizione). Nel caso in cui il campionamento è effettuato
correttamente si può filtrare lo spettro del segnale campionato ottenendo il seguente
spettro:

che è proprio lo spettro del segnale non campionato. A questo punto anti-trasformando
si può ottenere il segnale non campionato. In definitiva, si può partire dai campioni e
ricostruire il segnale da cui provengono senza perdere informazioni. Nella pratica anche
se il segnale non ha una banda relativamente limitata si può dire che le armoniche a
frequenza alta hanno un basso contenuto in potenza pertanto i loro effetti di eventuale
aliasing sono poco rilevanti.

In un convertitore A/D con un segnale d’ingresso variabile, se l’ingresso non si


mantiene costante per un tempo sufficiente, possono verificarsi dei problemi.

Capitolo 8 : caratterizzazione convertitori A/D

Tc

Dall’istante in cui inizia la conversione all’istante in cui finisce, il segnale varia di una
certa quantità; per un convertitore ad approssimazioni successive il tempo di conversione
si conosce ed è pari a N*τ; nel ciclo continuo di confronti e modifiche dei bit, il
125
confronto precedente perde di significato perché il segnale è variato. Bisogna ipotizzare
che il segnale sia variato di una quantità trascurabile, ovvero più piccola del quanto; in
questo modo al più si ha incertezza sul LSB perché il segnale potrebbe corrispondere ad
una soglia di transizione, ma questo è un effetto tollerabile.

N*τ influenza anche la frequenza di campionamento, perché il periodo di


campionamento TC deve essere maggiore o uguale di N*τ (in genere maggiore perché è
necessario anche un tempo per memorizzare il dato); quindi la frequenza di
campionamento fC ha un limite maggiore dato dal reciproco di N*τ. In base a queste
considerazioni bisogna poter scegliere un convertitore in cui N*τ sia sufficientemente
piccolo e in cui allo stesso tempo la risoluzione (che cresce con N) sia sufficientemente
elevata in modo che l’incertezza ottenuta sia minore di quella desiderata. Non sempre
ciò è possibile.

In questi casi, se la variazione del segnale è maggiore del quanto, è necessario modificare
il segnale preliminarmente, limitando l’ampiezza della variazione (indicata in rosso in
figura); si può ricavare un segnale costante a tratti tra un istante e l’altro di
campionamento. La conversione impiegherà un tempo finito ma la variazione del
segnale è nulla; ciò che importa è solo che nel nuovo segnale il valore negli istanti di
campionamento sia uguale a quello del segnale originario.

Riassumendo, per i convertitori A/D è necessaria una discretizzazione dell’asse della


tensione e dei tempi: la discretizzazione dell’asse delle tensioni introduce un’incertezza

Capitolo 8 : caratterizzazione convertitori A/D


di quantizzazione, mentre quella dell’asse dei tempi definisce la frequenza di
campionamento. Accettando quindi una certa incertezza di quantizzazione, si parte
dall’intervallo di tensioni considerato, lo si divide in tanti intervallini ad ognuno dei
quali si associa un codice e con un numero finito di codici si descrive un numero
infinito di condizioni (tensioni), accettando un certo errore (una certa incertezza di
quantizzazione). È cosi che si rende biunivoca una funzione che in realtà non lo è.

CARATTERIZZAZIONE STATICA DI UN CONVERTITORE A/D


La quantizzazione vista finora è però ancora ideale perché si è detto di voler dividere
l’asse delle tensioni in intervalli e i valori di tensione appartenenti ad ogni intervallo
sono associati ad un certo valore di tensione (ad esempio il valore di tensione al centro
dell’intervallo) a cui è associato un valore numerico, un codice. Questo teoricamente,
ma nella pratica, quando viene realizzato il convertitore, le problematiche che si hanno
sono molteplici e si parla di diversi tipi di incertezza.

126
Si consideri un certo range di tensione definito tra Vmin e Vmax e si assuma che è stato
diviso in 8 pedate:

Idealmente il quanto Q, espresso come

è costante, cioè la distanza tra le soglie è costante.

Capitolo 8 : caratterizzazione convertitori A/D


Nella realtà non è così: nel convertitore flash ad esempio, la grandezza del quanto, è
definito mediante un partitore resistivo, con resistenze che solo nominalmente sono tutte
uguali (saranno affetti da incertezza).

Questo fa capire che il primo problema a cui si va incontro è che un convertitore reale
non avrà mai larghezza delle pedate uguali: saranno uguali solo nominalmente.

Si supponga di aver a disposizione un convertitore A/D e di volerne studiare la


caratteristica in modo da quantificare di quanto si discosta l’ampiezza di ogni quanto dal
valore Q nominale (ideale). Lo scostamento dell’ampiezza di ogni quanto dall’ampiezza
del quanto ideale dice di quanto si scosta il convertitore reale da quello ideale. Si sta
dicendo che si ha quindi una incertezza sul quanto (sull’ampiezza delle pedate), oltre a
quella che già si aveva nella quantizzazione (per un convertitore ideale).

Per tracciare la caratteristica è necessario individuare le soglie. Per individuarle, si


ricorda che, idealmente, la soglia è definita come quel valore di tensione che separa 2
codici, cioè è una V’ tale che a V’-∆V è associato codice ‘i’ (codice 3 nell’esempio di

127
figura) e a V’+∆V è associato codice ‘i+1’ (4, in figura). In altre parole per V=V’ si ha
una indeterminazione sul codice. Questa appena data è una definizione ideale perché
basata su una caratteristica ideale. Nella realtà invece bisogna procedere in modo
diverso.

Nella realtà si deve procedere attraverso un’analisi statistica. Si definisce un certo


intervallino centrato intorno al valore nominale della tensione di soglia e per tale
intervallino i codici possono essere sia ‘i’ che ‘i+1’ in maniera statisticamente casuale:
più la tensione è bassa rispetto a V’, più probabilmente il codice in uscita sarà ‘i’ (3, in
figura), più alta è la tensione in ingresso rispetto a V’ e più è probabile che il codice sia
‘i+1’ (4 in figura). In altre parole si ha un intervallo di tensioni intorno a V’ in cui si può
avere uno dei due codici in maniera casuale,tenendo conto che man mano che V<V’
molto più probabilmente si ha ‘i’ e viceversa per ‘i+1’.

Tutto diventa un discorso di probabilità: la tensione di soglia non può essere definita
come quella tensione in ingresso che fa passare dal codice ‘i’ al codice ‘i+1’, ma va
definita in termini probabilistici, come la soglia di tensione Vth che è quella tensione in
ingresso per cui la probabilità di avere un codice ‘i’ o il codice successivo ‘i+1’ è del 50%.
A rigore la probabilità di avere un codice anziché un altro è il limite per il numero di
esperimenti che tende all’infinito della frequenza statistica (ad esempio la probabilità di
avere codice 3 è il limite del numero di esperimenti che tendono all’infinito dell’evento
codice 3) ma nella realtà non si possono svolgere infiniti esperimenti e allora, in base
all’incertezza desiderata, va fissato un numero di esperimenti sufficientemente elevato

Capitolo 8 : caratterizzazione convertitori A/D


(ad esempio 1000 esperimenti) e si dirà che V’ è una soglia se su 1000 volte che V’ è in
ingresso, il convertitore dà 500 volte codice ‘i’ e 500 volte codice ‘i+1’.

Più in generale se N è il numero di esperimenti per una data tensione, se N/2 volte si
ottiene codice ‘i’ e N/2 volte si ottiene codice ‘i+1’, allora questa tensione si definisce
come tensione di soglia.

Procedendo secondo questa strada si ha un modo pratico per individuare la tensione di


soglia tra 2 codici.

Tuttavia ci sono degli aspetti da tenere in conto.

In primo luogo non bisogna dimenticare l’incertezza legata al numero finito di


esperimenti, questa può essere portata in conto in base una incertezza desiderata.
In secondo luogo il ragionamento fatto dà per scontato che si possa incrementare
linearmente la tensione di ingresso, cosa che è non vera. Nella pratica si devono operare

128
allora delle approssimazioni. Si parte dal fatto che del convertitore si conosce
nominalmente il quanto

(dove N è il numero di bit con cui si rappresenta il codice di uscita)

Questo quanto può essere diviso in sottointervalli elementari, ad esempio lo si divide in


4 sotto-intervallini come in figura:

Q
∆V

V’

Noto Q nominale, dividendo per 4 si ottiene un certo ∆V che sarà l’incremento discreto
da dare alla tensione di ingresso: partendo da V’, la tensione di ingresso vale V’,poi
V’+∆V, poi V’+2∆V, ecc.

Capitolo 8 : caratterizzazione convertitori A/D


Ogni volta che viene fissato un valore della tensione di ingresso si vanno a valutare le
occorrenze, ovvero quante volte si è verificato un codice o un altro. Man mano che la Vin
si avvicina alla soglia nominale, si ha più probabilità che il numero di volte che si
verifica il codice ‘i’ sia uguale al numero di volte che si verifica il codice ‘i+1’ (cioè la
probabilità di avere N/2 volte ‘i’ e N/2 volte ‘i+1’ aumenta). Poichè si sta variando la
tensione di ingresso in maniera discreta, il passo, incrementato ogni volta di ∆V può
non coincidere con la tensione di soglia. Cioè, ritornando all’esempio, dividendo Q in 4
parti si dovrebbe avere che al colpo V’+4∆V la tensione Vin coincida con la tensione di
soglia nominale successiva V’’ ma, nella realtà, V’+4∆V non sarà V’’ ma si troverà un pò
prima o un pò dopo V’’.

Se ad esempio V’+4∆V sta un pò prima di V’’, si avrà che la probabilità di avere il codice
‘i’ non è uguale a quella di avere codice ‘i+1’, ma è più grande. Se invece V’+4∆V si
trova dopo V’’ di pochissimo vuol dire che la probabilità di avere codice ‘i’ è minore
della probabilità di avere ‘i+1’:

129
i+1 i+1

i i

V’’ V’’

Poiché si incrementa di un ∆V piccolo la tensione di ingresso, si assume che la


probabilità di avere un codice o il successivo vari linearmente con la Vin e quindi si
interpolano i due codici che si ottengono intorno alla soglia nominale V’’, cioè si fa una
proporzione, ad esempio:

i+1

V’’-∆V V’’ V’’+∆V

Se in V’’-∆V la probabilità di avere codice ‘i+1’ è del 30% e in V’’+∆V la probabilità di

Capitolo 8 : caratterizzazione convertitori A/D


avere il codice ‘i+1’ è del 70%, allora la tensione di soglia sarà quella tensione Vth tale
che il 30% di Vth è V’’-∆V e il 70% è V’’+∆V ed è come se si trasferisse il numero di
occorrenze percentuali del codice, sulle tensioni. Ovviamente maggiore è il numero di
intervallini in cui suddivido il quanto (minore ∆V) migliore è l’interpolazione data dalla
soglia. Però quanto più piccolo è il ∆V, maggiore sarà il numero di esperimenti che si
dovranno fare, perché in un quanto cadono più ∆V. La norma dice di suddividere il
quanto in un numero di intervallino che va da 4 a 8, cioè tipicamente ∆V è Q/4 o Q/8.

Quindi con un’interpolazione lineare si va a stimare la posizione della soglia di


transizione. Questa operazione va fatta per tutte le soglie di transizione, dopodiché si
può andare a tracciare la caratteristica reale del convertitore. Tutto questo però vale solo
quando il segnale di ingresso aumenta in maniera discreta e in ogni intervallino ∆V è
costante.

130
CARATTERIZZAZIONE DINAMICA DI UN CONVERTITORE A/D

Bisogna trovare la caratteristica del convertitore considerando che il segnale di ingresso


ha una sua dinamica. Considerando un segnale di ingresso variabile, bisogna capire i
limiti da imporre a queste variazioni. Per non avere aliasing la banda che segnale deve
essere minore di fc/2. Si assume poi che in ingresso il segnale non sia a piccoli gradini
come visto precedentemente, ma che vari linearmente come una rampa.

Ciò vuol dire che, idealmente, per il tempo in cui la Vin assume valori interni al
quanto, il codice non dovrebbe cambiare, cosa che dovrebbe avvenire solo sulla soglia e
si dovrebbero avere pedate (e quindi quanti) tutti uguali. Ovviamente nella realtà le
pedate non saranno tutte uguali. Per valutare quanto sono grandi queste pedate, o
meglio per individuare le soglie, anche in questo caso va fatto uno studio probabilistico
valutando le occorrenze dei codici: si va a campionare con una certa frequenza di
campionamento tale rampa in ingresso e per ogni valore del segnale di ingresso si
annota il codice che si ottiene.

Capitolo 8 : caratterizzazione convertitori A/D


Come risultato ideale, ci si aspetta che per ogni codice si ha lo stesso numero di
occorrenze, cioè si ottiene lo stesso codice per un numero di volte, numero che è sempre
lo stesso per ogni codice.

Nella pratica, se si suppone che facendo variare laVin da Vmin a Vmax si acquisiscono
M campioni, allora M, diviso per il numero di codici possibili ( ) restituisce il numero
di volte (campioni) per il quale il codice è sempre lo stesso:

e questo dovrebbe essere uguale per tutti i codici.

131
Questo è il caso ideale. Nella realtà il numero di codici varia. Se si ha un codice per un
numero di campioni maggiore di

allora la pedata è più grande del valore nominale; se invece il codice resta sempre lo
stesso per un numero di campioni minore di quello indicato nella formula, la pedata in
esame è più piccola del valore nominale.

Anche in tal caso ovviamente si sta stimando la pedata in termini di occorrenze, gioca
quindi anche un’incertezza di discretizzazione legata al campionamento della rampa:
aumentando la pendenza della rampa, a parità di frequenza di campionamento,
diminuisce il numero di campioni che si prelevano per ogni codice, non consentendo
più di approssimare la probabilità con la frequenza statistica. Per ovviare a questo
inconveniente e, quindi, continuare a prendere lo stesso numero di campioni per ogni
codice bisogna aumentare la frequenza di campionamento. Si consideri che, dato il
tempo finito e non infinitesimo occorrente al dispositivo per compiere la conversione,
esiste per ogni dispositivo un limite superiore per la frequenza di campionamento.
Questa limitazione comporta che, superata una certa pendenza della rampa, il
convertitore inizierà a prelevare un numero di campioni sempre minore. Per superare
tale limite è possibile rendere periodico il segnale a rampa (ottenendo quindi un segnale
“a dente di sega”) allo scopo di prelevare nell’arco di più periodi il numero di campioni
desiderato, pur sollecitando il convertitore con un segnale a forte dinamica. Questo

Capitolo 8 : caratterizzazione convertitori A/D


accorgimento consente di raggiungere sempre un sufficiente numero di campioni per
ogni codice del convertitore A/D. C’è da notare che se in ingresso al convertitore
anziché applicare un segnale a dente di sega se ne applica uno “a triangolo” si
riuscirebbe a sollecitare il convertitore sia in fase ascendente che in fase discendente del
segnale.

Vediamo come dalla rampa e dal numero di occorrenze si può valutare l’ampiezza della
pedata:

Tc

132
La pendenza è nota assumendo che la rampa sia lineare, la durata pure perché si
conosce il periodo di campionamento della rampa, Tc e si conoscono le occorrenze,
quindi quanti campioni danno quel codice, si divide allora pendenza su durata e si
ricava la pedata.

Da notare è che “l’adozione del segnale a rampa consente di effettuare la


caratterizzazione sia statica che dinamica dei convertitori semplicemente variando la
pendenza della rampa: per pendenze molto basse la dinamica è praticamente trascurabile
e pertanto si perviene alla caratterizzazione statica; aumentando la pendenza della rampa
è poi possibile variare lo stimolo dinamico al convertitore e valutare come il suo
comportamento degradi all’aumentare della pendenza del segnale di prova”. Tutto
questo se la rampa è un segnale perfettamente lineare, ma la rampa non è un segnale
che si riesce a generare bene, del tipo:

Cioè dovrebbe essere un segnale che arriva ad un certo valore massimo, poi si azzera e
deve risalire per fare un’altra misura, arrivare al valore massimo, azzerarsi e ripartire per
un’altra misura: questo segnale ha uno spettro enorme (infinito), perciò difficile da
generare.

Capitolo 8 : caratterizzazione convertitori A/D


“La scelta della rampa lineare presenta il grosso vantaggio “teorico” di presentare una
pendenza costante lungo tutto il range di funzionamento del convertitore ed ha
consentito di concludere che la larghezza della pedata è funzione della frequenza di
occorrenza del codice k e della pendenza della rampa. Cosa succede se invece di usare
un segnale a pendenza costante si usa un segnale di cui è nota la pendenza in funzione
della ampiezza? Se si conosce l’influenza della pendenza del segnale sulla frequenza di
occorrenza dei codici è certamente possibile trovare un funzionale che consente di usare
qualsiasi segnale di stimolo di cui sia perfettamente nota l’espressione analitica (in modo
da sapere la relazione tra l’ampiezza del segnale e la sua pendenza, ossia la sua derivata)”.
La sinusoide è il segnale meglio generabile, anche perché con l’ausilio di un filtro a
spillo si riesce a renderla più pura possibile. Vediamo se attraverso una sinusoide in
ingresso è possibile individuare le tensioni di transizione.

133
Campionando con una certa fc il segnale di ingresso come fatto per la rampa, si avrà
ancora una caratteristica a gradino, nel senso che per un certo numero di volte si ha un
codice, per un altro numero di volte un altro codice e così via, solo che, mentre nel caso
della rampa per ogni codice si aveva lo stesso numero di occorrenze, con una sinusoide
accade che per ogni codice il numero di occorrenze è diverso dato che il seno ha una
pendenza variabile: lì dove varia meno (intorno al minimo e al massimo) si avranno più
occorrenze, dato che più campioni cadranno nel quanto; lì dove la pendenza è più alta
(intorno al passaggio della sinusoide per lo zero) il numero di occorrenze sarà minore,
perche in ogni quanto cadono meno campioni.

Però la pendenza della sinusoide è nota punto per punto e quindi si può stimare
teoricamente quante occorrenze dovrebbero esserci per ciascun codice, successivamente
si può confrontare il numero di occorrenze che si ha realmente con quello che ci si
aspetta teoricamente: se si ha un numero di occorrenze maggiore rispetto al numero di
occorrenze teorico, la pedata è più grande del valore teorico, se minore la pedata è più
stretta.

Riassumendo: il numero di occorrenze teorico si può trovare per simulazione,


numericamente, attraverso la tabella di una funzione sinusoidale:

Capitolo 8 : caratterizzazione convertitori A/D


1) si genera una sinusoide;

2) la si campiona con una certa fc;

3) si divide il range di tensioni da Vmin a Vmax per il numero di livelli del


convertitore, ad esempio 8 (8 pedate) e si calcola per ogni codice quante occorrenze si
hanno (si noti che lì dove la sinusoide varia di meno ci sono più occorrenze);

4) si prende poi un convertitore reale, con lo stesso numero di bit, al quale si applica la
stessa sinusoide in ingresso, con la stessa fc usata per la simulazione e si valutano le
occorrenze;

5) poi si confrontano e si osserva se le pedate per ogni codice sono più grandi o più
piccole rispetto a quelle nominali, trovate in simulazione.

Ma si può fare di più: al posto di fare l’analisi teorica attraverso la simulazione, si può
prevedere qual è il numero delle occorrenze data una certa sinusoide campionata con
una certa fc. Basta applicare una sinusoide in ingresso al convertitore, con una certa fc e
si elabora l’istogramma delle occorrenze:
134
4

3
2

0
-1
-2

-3

-4

Capitolo 8 : caratterizzazione convertitori A/D


Come detto, le occorrenze saranno di più dove la sinusoide varia di meno e di meno
dove varia più velocemente. Dall’istogramma si vuol capire dove sono le soglie di
transizione, ipotizzando che la sinusoide è pura e che la fc sia costante (il che è
accettabile), senza fare analisi teorica a priori con la simulazione. Si tratterà il
procedimento per far ciò:

135
Fs

Tk
k
Tk-1

Tc
k-1
T/2 t
τ

-Fs

Si divide l’asse delle tensioni in un numero di livelli pari ai livelli del convertitore e si
pone questa lunghezza pari alla pedata di un certo codice compreso tra le soglie Tk-1 e
Tk; Tk - Tk-1 è la larghezza della pedata.

La sinusoide è campionata con un certo periodo di campionamento Tc; il numero di


campioni che cadono nell’intervallo τ è il numero di occorrenze (volte) in cui si verifica
il codice k, quindi è il valore dell’istogramma, indicato con H(k):

H(k)

Capitolo 8 : caratterizzazione convertitori A/D


Se Tc è il periodo di campionamento e H(k) il numero di occorrenze del codice k,
TcH(k) è la durata (τ):

Ovviamente se si considera un codice più vicino alla stazionarietà, H(k) è più elevato e τ
è piu ampio. A questo punto si vuole trovare quanto valgono Tk-1 e Tk , cioè si vuol
vedere dove sono localizzate le soglie. Il Tk-1 è dato dal valore che assume la funzione nel
punto k-1, ma k-1 è dato dalla somma di tutti i τ che lo precedono, dove ogni τ è Tc
H(k):

La funzione è e inserendo la somma degli come argomento del


coseno, ovvero il punto k-1, trovo il Tk-1 :

136
In realtà nel coseno si dovrebbero avere i radianti dimensionalmente, non un tempo,
quindi è:

dove T è il periodo del coseno.

La sommatoria è detta istogramma cumulativo. Si può riscrivere:

Ma T è il periodo del segnale, Tc è il periodo di campionamento, quindi T/Tc è pari al


numero di punti per periodo (Npp) e quindi Tc /T è pari all’inverso del numero di punti
per periodo. Cioè se si hanno Npp punti in un periodo, vuol dire che il periodo T si può
ottenere come numero di punti per periodo per il periodo di campionamento Tc.
Quindi:

Capitolo 8 : caratterizzazione convertitori A/D


Da figura si nota che si sta campionando solo mezzo periodo di cosinusoide, quindi si
deve valutare il numero di punti per mezzo periodo, ovvero:

dove al posto di Npp si inserisce Nc, numero di campioni acquisiti dall’istante zero
all’istante T/2.

Ecco allora spiegato come calcolare le soglie. Ricordiamo che è noto il fondo scala FS,
l’istogramma cumulativo (calcolando le occorrenze e sommandole) e pure il numero di
campioni acquisiti. Questo in linea teorica, bisogna poi trovare il modo di implementare
questo metodo teorico di calcolo.

Si deve dunque dimensionare il problema: FS non è nient’altro che Vrange/2 se il


convertitore è bipolare; nel caso invece di convertitore unipolare con una componente
continua C, è sempre Vrange/2 poichè bisogna sommare al segnale di prova una
componente continua: C

137
2fs

y(x)=C-FScos( )

La frequenza della sinusoide la si sceglie in base alla dinamica a cui si vuole caratterizzare
il convertitore, cioè in base alla variabilità che si vuole che abbia il segnale di ingresso.

Bisogna capire anche come scegliere la frequenza di campionamento: come si era detto nel
caso di un segnale costante all’ingresso, si vuole che nell’intervallino τ i campioni siano
vicinissimi, perche quanto più sono vicini tanto più il calcolo delle probabilità è
rigoroso. Quindi la frequenza del segnale deve essere molto minore della frequenza di
campionamento. Tuttavia si è anche detto però che si vuole sollecitare il convertitore
alla frequenza di Nyquist, ovvero si vuole che la frequenza del segnale sia circa fc/2 o
fc/4 (se la massima frequenza di campionamento è 100Mhz si ricerca un segnale a
50Mhz, ma a 50Mhz si hanno 2 campioni in tutto l’esperimento e con due campioni si

Capitolo 8 : caratterizzazione convertitori A/D


dovrebbero ricavare tutte le soglie: impossibile!

Ecco che passando alla pratica si ha qualche problema. Allora si opera in questo modo:
si cerca la fc in modo che tutti i codici abbiano almeno un campione, ovvero abbiano
almeno un’occorrenza. Per fare questo, basta imporlo al codice con occorrenza minore,
ovvero dove varia di più il segnale, cioè nel passaggio per lo zero. Si cerca cioè la fc tale
che, se un campione cade nel passaggio dello zero della sinusoide, il campione successivo
cade prima della soglia tra 1 e 2, perchè se Tc è tale che il prossimo campione cade dopo
il punto A della figura seguente, al campione è associato codice 2 e il codice 1 non ha
neanche un campione.

138
Riassumendo: si assume che un campione sia nello zero, a cui è associato codice zero e si
vuole che ogni codice abbia almeno un campione. Si vuole cioè che il codice con minori
campioni ne abbia almeno uno. Ma i codici con meno campioni sono ‘1’ e ‘-1’ cioè
quelli intorno allo zero, ovvero dove la funzione varia pù velocemente. Se il Tc è tale che
il campione successivo è dopo la soglia, ad esso è associato 2, se invece cade prima della
soglia è associato 1. Si deve allora fare in modo che il Tc sia tale che al successivo
campione sia associato 1: se si impone questa condizione anche per il codice -1, poi la
pendenza della sinusoide diminuisce e gli altri codici sicuramente avranno uno o più
campioni.

Il Tc si dimensiona quindi in funzione della frequenza del segnale e del numero di


campioni del convertitore. In figura è stato individuato il quanto:

Ma anche: Capitolo 8 : caratterizzazione convertitori A/D

perché Vrange/2 è l’ampiezza e è il valore della sinusoide dopo un tempo


Tc dall’origine (valore zero) e quindi Q. In realtà nel caso esaminato è un –cos(.) ma si
assume per semplicità un seno come caso generale. Questo Tc è il massimo valore del
periodo di campionamento tale che il prossimo campione non vada a codice 2.
Uguagliando le due relazioni:

Ovvero:
139
cioè:

Poichè Tc <<T , si può affermare che in prima approssimazione che il seno è circa pari
all’arco:

Assumendo che il convertitore sia ad 8 bit:

N=8, 2N=28=256, 2N-1=128, da cui:

ancora:

Capitolo 8 : caratterizzazione convertitori A/D


da cui:

Npp=π 256

Questa condizione afferma che dato un convertitore ad 8 bit, applicando un segnale in


ingresso che va da FS a –FS, se questo viene campionato in modo che per ogni periodo
si ottenga un numero di punti pari a π 256, si è sicuri che con questa fc ogni codice ha
almeno un campione e, probabilmente, nell’intorno dello zero ha solo un campione.
Dire che bisogna avere π 256 punti per periodo vuol dire che la frequenza del segnale
deve essere almeno π 256 volte più piccola della fc, e non a fc/2 .

Quindi anche volendo un solo campione per codice si trova che fc/fs è circa π 256.
Questo è un problema poiché il metodo esaminato in queste condizioni può essere
utilizzato solo per frequenze della sinusoide molto più piccole di quella di
campionamento. Si cerca una soluzione. Facendo più di un’acquisizione, ad esempio
acquisendo campioni non in mezzo periodo ma in un periodo intero, in modo che nel
secondo semiperiodo si acquisisca campioni che non sono stati acquisiti nel primo
semiperiodo, si riduce il numero di punti per periodo da π 256 a π 128.
140
Nota: fin ora è stato considerato il periodo ma il disegno è stato fatto per un
semiperiodo. In generale si può ragionare sul periodo: se in un periodo si è trovato che
bisogna avere π 256 Npp, acquisendo in due periodi in modo che nel secondo periodo si
acquisisca campioni diversi da quelli acquisiti nel primo, Npp è ridotto a π 128. Facendo
più acquisizioni quindi si riduce Npp!

Per far ciò non si può scegliere come frequenza del segnale di ingresso una frequenza
arbitraria come fatto finora, ma deve essere una fs tale da poter stare in un certo
rapporto con fc , in modo da essere certo che per periodi successivi si va a campionare in
istanti di tempo sempre diversi rispetto ai precedenti (cioè la fs deve essere scelta in
modo che fc/fs assuma un valore tale che, campionando per periodi successivi, i
campioni acquisiti nei periodi successivi siano diversi da quelli che acquisiti nei
precedenti). Per scegliere fs si ricorda che Npp=fc/fs ; ma il numero di punti per periodo è
pari al numero di punti N diviso il numero di periodi, Np:

Si fa in modo che fc/fs sia uguale al rapporto di due numeri coprimi. Due numeri si
dicono coprimi quando non hanno fattori comuni ovvero quando non sono
semplificabili. In tal modo, finchè non si prende un numero di punti pari ad N
vengono acquisiti sempre campioni diversi, all’N-esimo + 1 campione si ritorna il primo.
Va fissata fc, N, Np. Il costruttore stabilisce che il convertitore può essere impostato con

Capitolo 8 : caratterizzazione convertitori A/D


diverse fc e tra le varie si prende quella desiderata. Poi si vuole un elevato numero di
campioni perchè quanto più è elevato il numero di campioni tanto migliore è la
statistica che viene fatta e così si fissa un certo N elevato. Np viene invece fissato
ricordando due cose:

1) Np deve essere coprimo rispetto a N;

2) in modo che N/Np sia prossimo a Npp desiderato, ovvero prossimo a fc/fs desiderato;

cioè se si vuole un fs=fc/4 , ovvero se si vuol prendere 4 punti per periodo, vuol dire che
N/Np deve essere circa 4 e inoltre il rapporto deve valere 4 contemporaneamente alla
condizione di essere coprimi, quindi bisogna trovare due numeri coprimi il cui rapporto
sia circa pari a quello desiderato, in base alla sollecitazione da applicare in ingresso,
ovvero in base alla fs rispetto a fc. Per trovare N e Np basta allora prendere N, una
potenza di 2, ed Np un valore non semplificabile per due, quindi Np come un numero
dispari: se N=216=65536, affinchè N/Np sia pari a 4, Np deve essere 214 e allora si prende
Np=214+1 :

141
N=216 , Np=214+1 , e si ha che il rapporto è circa 4, con N ed Np coprimi. Dalla
relazione:

si ricava fs che sarà circa 4 volte fc . In tal modo si ha un numero di campioni pari a
65536 che ovviamente è maggiore di 256π e si è aumentata la frequenza del segnale.

Capito come si sceglie il segnale test di ingresso, fissata fc, si applica tale segnale al
convertitore e si accumulano i campioni; si conta poi quante volte si ha ciascun codice
(numero di occorrenze) e il numero di campioni di ogni codice si divide per il numero
totale di campioni, ottenendo la frequenza di occorrenza di ciascun codice.
Successivamente si traccia l’istogramma delle occorrenze, si calcolo l’istogramma
cumulativo (ragionando ad esempio un questo modo: la prima volta si ha solo il codice
zero, la seconda codice zero più codice 1, la terza 0 +1 +2…ecc…).

Dall’istogramma cumulativo si evince che la probabilità che un codice è minore o uguale


di un certo valore, finche non si arriva all’ultimo che esprime qual è la probabilità di
avere un codice qualsiasi, che è 1. Ovvero l’istogramma va da zero ad uno. Questa
istogramma cumulativo lo si pone nella formula scritta di seguito trovando le varie soglie
di transizione.

Capitolo 8 : caratterizzazione convertitori A/D


Facendo questo si trovano le varie soglie e la parte sperimentale si conclude.

Elaborazione delle soglie


Trovate le soglie va valutato lo scostamento delle soglie da quelle teoriche ottenute
partendo da zero e sommando multipli di Q=Vrange/2N. In prima battuta si può dire che
lo scostamento tra soglie di transizione reali e quelle ideali sia dato da un errore di non
linearità nel senso che, se le soglie di transizione non sono equispaziate si ha un errore
che ricorda quello di non linearità. In realtà questi scostamenti possono intendersi come
tre tipi di errori:

1) errori di guadagno;

2) errori di offset;

3) errore di non linearità;

142
Bisogna ora trattare separatamente questi tre contributi.

1) Si ha un errore di guadagno quando le pedate sono tutte uguali tra loro, ma sono
diverse dal valore delle pedate nominali: Q=Vrange/2N. Ovvero le pedate sono esprimibili
come:

Q=Vrange/2N Q

Questo comporta che la pendenza media della gradinata della caratteristica è diversa da
quella nominale: ecco perche errore di guadagno;

2) Se la caratteristica ideale è traslata a destra o a sinistra si ha un errore di offset: le


pedate sono tutte uguali a Q, solo che non cominciano dove cominciano le relative
pedate della caratteristica ideale ma iniziano più a destra o più a sinistra.

3) Tutto ciò che resta, una volta individuato nello scostamento l’errore di guadagno e di
offset, è l’errore di non linearità. Cioè se si individuano gli errori 1) e 2) e vengono
compensati, lo scompenso che si continua a vedere è tutto dovuto a non linearità.

Norme sulla caratterizzazione


Abbiamo visto che la caratterizzazione statica e dinamica non coincidono, in quanto le
soglie individuate sono in generale diverse, si è inoltre visto che sollecitando il
convertitore con un segnale sinusoidale (che è il segnale che si sa generare meglio),

Capitolo 8 : caratterizzazione convertitori A/D


scegliendo una fc opportuna si trovano le varie soglie che si indicano con Tkr dove il
pedice r indica che si tratta delle soglie reali e non di quelle ideali. Note queste soglie
reali si può disegnare la caratteristica reale, poiché l’altezza di ogni gradino è unitaria in
quanto ogni gradino è associato a un codice e il gradino successivo si associa al codice
incrementato di ‘1’ , inoltre la larghezza del gradino è pari alla distanza tra 2 soglie.
Trovate le soglie reali si deve far riferimento alla norma per una corretta
caratterizzazione, si tratta della norma IEEE 1241/2000.

Tale norma “stabilisce, per ciascun parametro la metodologia di misura, la


strumentazione e le impostazioni da utilizzare per pervenire alla valutazione del
parametro stesso. La norma prevede dunque la caratterizzazione del solo hardware, non
di tutto il processo di misurazione che coinvolge il convertitore, che ovviamente
influenza le prestazioni della misura stessa: la norma rimane vaga su questo punto e ciò è
dovuto alla difficoltà degli enti di seguire l’evoluzione tecnologica”.

Tale normativa ci dà dei paramteri che si devono andare a stimare per caratterizzare il
convertitore dal punto di vista dinamico, tali parametri sono:
143
1) ERRORE DI GUADAGNO,
2) OFFSET,
3) NON LINEARITÀ INTEGRALE
4) NON LINEARITÀ DIFERENZIALE,
5) NON MONOTONICITÀ

L’errore di offset e l’errore di guadagno sono errori che non introducono non linearità,
ovvero se il convertitore ha rispetto al comportamento ideale solo i primi due errori
allora si continua ad avere pedate tutte uguali tra di loro; in particolare l’errore di offset
si manifesta nel fatto che i Tkr rispetto ai Tk differiscono per una costante di offset;
ovvero le varie soglie sono tutte traslate di una quantità costante rispetto alle soglie
ideali, quelle ottenute cioè come Vrange/2^N.

L’errore di guadagno invece è dato da fatto che i quanti non sono tutti uguali, ma
differiscono di una quantità che è il guadagno, ovvero se si considera la caratteristica
ideale

Capitolo 8 : caratterizzazione convertitori A/D

E si uniscono tutti i centri delle pedate si ottiene una retta che ha una certa pendenza, se
si considera la caratteristica reale si ottiene ancora una retta perché l’errore è di
guadagno non di non linearità, tuttavia la pendenza è diversa. Quindi l’errore di
guadagno si manifesta nella variazione della pendenza della caratteristica.

Quindi un primo passo per esaminare gli errori è dividere gli errori lineari (offset e
guadagno) da quelli non lineari, per fare questo si considera il grafico dei Tkr e Tk:

144
I Tk ideali sono discreti quindi il plot è per punti fatto rispetto ai Tk che distano l’uno
dall’altro di una distanza Q. I Tkr hanno invece una certe distribuzione che trovo
rispetto ai Tk corrispondenti. Nel caso di un convertitore ideale Tkr=Tk, e si ha la
rappresentazione fatta sopra. L’interpolzione è la retta passante per l’origine con
pendenza 45°.. Tuttavia nella realtà questi punti non è detto che sono su una retta. Dati

Capitolo 8 : caratterizzazione convertitori A/D


i Tkr si può tracciare la retta che meglio li interpola.

Una generica retta ha equazione

y=mx+n

dove m ed n sono i ‘migliori’ valori per cui lo scarto quadratico medio tra i punti Tkr e i
corrispondenti ideali è minimo. Ovvero la retta interpolante che si considera è la
migliore cioè quella che minimizza lo scarto tra valori reali e corrispondenti ideali.
Trovata questa retta, si conosce la pendenza m. Questa pendenza è l’errore di guadagno,
mente n è l’offset (ovvero lo shift della curva). Avendo estratto da una retta si
individuano quindi l’offset e il guadagno, i primi errori di non idealità. Noto m ed n si
può traslare la retta interpolante facendo in modo da farla passare per l’origine e si può
fare in modo che si abbia pendenza unitaria come quella ideale. Questo significa che se
a tutti i Tkr da cui si è estratta la retta si sottrae n, ricalcolando la retta interpolante si

145
troverà la retta passante per l’origine. Inoltre se si divide per m si trova proprio la retta a
pendenza unitaria. Facendo in questo modo si trovano i Tk reali compensati Tkc.

I Tkc sono le soglie reali prive di errore di offset e di errore di guadagno, quindi tutto
quello che differisce tra Tkc e Tk è errore di non linearità. Cioè resta l’errore di non
linearità. Cioè resta solo il fatto che i Tk non stanno proprio su una retta.

Se si calcola la differenza tra i Tkc e i Tk si trova l’errore che tiene conto della non
linearità:

Nell’ambito della non linearità si distingue una non linearità differenziale e una non
linearità integrale. La differenza risiede nello scopo, ovvero dipende da se si è interessati
a caratterizzare il convertitore nell’intorno di una tensione di funzionamento
(differenziale) oppure si è interessati a caratterizzarlo in tutto il suo range di
funzionamento.

Si vedrà che tipo di informazione danno questa due non linearità, tuttavia in linea di
principio entrambe dicono che il Tkc non sta in corrispondenza del Tk ma si discosta da
quest’ultimo.

Quello integrale dice che uno dei tanti Tkc differisce dal rispettivo Tk non tanto perché

Capitolo 8 : caratterizzazione convertitori A/D


la pedata a cui è associato è diversa da Q ma perché tutte le altre soglie precedenti sono
diverse dalle Tk, quindi tutte le pedate sono diverse da Q. Cioè se si prende una pedata
si può vedere ad esempio che è più grande perchè quella precedente è magari più
piccola. L’errore integrale dice proprio questo, ovvero una certa soglia da quanto si
discosta da quella ideale a causa del fatto che le altre soglie compensate precedenti
differiscono da quella ideale; l’errore di non linearità integrale ha una definizione più
generale che coinvolge più soglie in generale perciò ‘integrale’. Quindi l’errore di non
linearità integrale è proprio

L’errore di non linearità differenziale, ci dice se una certa pedata è maggiore o minore di
Q. Quindi ci dà delle informazioni locali, in un certo punto della caratteristica. Quindi
ci dice la larghezza di una pedata di quanto si scosta da Q.

146
Per questo motivo potrà essere espresso come:

A questo punto esaminiamo la norma per vedere quali istruzioni dà per calcolare questi
due errori di non linearità. La norma dice che la va calcolata come detto solo che va
espressa in percentuale rispetto al fondo scala.

Errore di non linearità integrale

Tkc − Tki
INL(k ) = ⋅ 100
fs

L’errore invece differenziale definito come rapporto rispetto al quanto:

Errore di non linearità differenziale:

(TK +1 − TK ) − Q
DNL (k ) =
Q

dove:

Q il valore nominale del quanto (errore di quantizzazione del convertitore ideale):

Capitolo 8 : caratterizzazione convertitori A/D


TK+1 la soglia di transizione tra il codice k e il codice k+1;

TK la soglia di transizione tra il codice k-1 e il codice k;

Tkc la soglia di transizione compensata del convertitore in prova tra il codice k e il codice
k+1;

Tki la soglia di transizione del convertitore ideale tra il codice k e il codice k+1;

Ovviamente sono funzioni di k, ovvero della pedata che si sta considerando.

In questo modo ci si aspetterebbe che il costruttore, nel momento in cui vende il


convertitore dà 2 tabelle di valori di errori di non linearità, una per quelli integrali, e
una per quelli differenziali, e questo dovrebbe essere fatto per ogni convertitore
venduto. Tuttavia quello a cui si è interessati quando lo si acquista è se è adatto o meno
alla esigenze dell’utilizzatore, quindi il venditore trascrive il caso peggiore sul datasheet.
147
Si riportano in questo modo due errori in termini percentuali. Si tratta allora di
parametri sintetici di worst case, presenti sui datasheets degli strumenti:

INL = max INL(k )

N
1
DNL = RMS[ DNL(k )] =
N
∑ DNL (k )
i =1
2

Non è possibile correggere l’errore dovuto alla non linearità, ma solo effettuare una
stima di incertezza su quanto espresso dal convertitore stesso. INL e DNL sono perciò
indipendenti da k, mentre il massimo è calcolato al variare di k, così come INL(k) e
DNL(k) sono calcolati per ogni k. RMS è definito come il valore efficace calcolato
rispetto a k.

Finora si è fatta l’ipotesi che la caratteristica del convertitore sia monotona crescente.
Vediamo quali sono i problemi se questo non si verifica. Se la curva passante per i punti
al centro delle pedate fosse del tipo rappresentato in figura:

Capitolo 8 : caratterizzazione convertitori A/D

Allora i ragionamenti fatti smettono di essere validi. Precedentemente si è assunto che la


curva interpolante sia una retta; in generale può essere una curva non monotona; in tal
caso si noti che si può avere lo stesso valore di Tkr al variare di Tk. Ciò significa che
quando si vanno a contare le occorrenze si troverà per tale codice un numero di
occorrenze molto più alto rispetto agli altri, quindi si deve andare ad usare un
istogramma perché valutare le occorrenze non basta più.

Il metodo detto in precedenza è valido a meno di errori di monotonicità. Quindi


esistono questo tipo di errori che si verificano con una caratteristica non monotona
come quella rappresentata. L’errore di monotonicità si può ricavare da una
caratterizzazione statica, poiché aumentando la tensione in ingresso si nota che il codice
148
anziché aumentare diminuisce! Quando però si ha la sola caratterizzazione dinamica
come descritta in precedenza, di tale errore non ci si accorge. Per questo motivo si può
fare una caratterizzazione dinamica solo se la caratteristica gode di monotonicità.

Nei convertitori presenti in commercio è esplicitamente detto se ci sono errori di


monotonicità o meno. Nell’ipotesi in cui non ci sono, significa che la caratterizzazione
dinamica è fatta col metodo illustrato.

La norma dice un’altra cosa. Trovati i Tkr si deve trovare un altro modo per ricavare
questi Tkr in modo da avere un confronto con i Tkr precedentemente trovati. Cioè se si
riesce a dire che ad esempio la distorsione che fa il segnale sul convertitore è la stessa
che si ha con i Tkr nuovamente trovati allora il grado di fiducia (certezza) sul valore dei
Tkr è maggiore. Il parametro che bisogna valutare e che tiene conto di ciò è l’ENOB.

L’ENOB
La siglia ENOB sta per Effective Number Of Bit. Prima di dire che cosa è l’ENOB, si fa
ora un richiamo sull’incertezza. L’incertezza la si è definita di categoria A o di categoria
B, esaminiamo quella di categoria A. La valutazione di incertezza di categoria A prevede
di fare quello che si è appena fatto, ovvero la si valuta facendo misure in un certo

Capitolo 8 : caratterizzazione convertitori A/D


numero. Poi si valuta come sono distribuiti i risultati di misura rispetto alla media, cioè
si fa la stima di varianza e quindi di scarto tipo. Quando una misura è fatta più volte
possono capitare tre situazioni diverse:

1) Si ottiene lo stesso valore;


2) Si ottengono valori diversi molto diversi tra di loro;
3) I risultati differiscono solo sull’ultima cifra significativa;

Il valore dell’incertezza deve dire quante cifre significative usare ovvero il numero di
cifre significative da usare per il risultato deve essere tale che l’ultima cifra significativa
deve essere quella affetta da errore. Questo significa che se tutti i risultati della misura si
scrivono bene, ovvero si scrivono in modo che l’ultima cifra significativa è quella affetta
da incertezza, allora si ha il caso 3, ovvero i risultati della misura si differenziano solo per
il valore delle ultima cifra significativa. Se invece si scrivono più cifre significative di

149
quelle necessarie allora vuol dire che più cifre sono affette da incertezza e i veri valori si
discostano maggiormente l’uno dall’altro (caso 2). Se invece la rappresentazione dei
valori avviene con un numero inferiore di cifre significative rispetto al necessario, allora
questo numero è sempre lo stesso perché non varia con la misura (caso 1). La giusta
scala di rappresentazione è la terza, prima i costruttori facevano in modo che le cifre
rappresentate erano tutte corrette, tuttavia la nascita di nuovi strumenti (come
multimetri o strumenti a più portate) ha fatto nascere esigenze diverse. Il costruttore
oggigiorno fa la caratterizzazione dello strumento e fornisce una tabella di incertezza per
tutte le tipologie di misure fattibili con lo strumento in esame. In base alle misure che si
fanno quindi si prendono gli opportuni valori da tabella e vi si calcola l’incertezza
associata e si vede su quale cifra del valore trovato agisce l’incertezza, tutte le cifre che
vengono successivamente le si elide.

Dire che si ha incertezza di categoria A pari a zero non significa che non si ha incertezza,
ma vuol dire che si ha incertezza su una scala sbagliata.

Vediamo come tutto questo si rifà all’ENOB. Se il risultato di una conversione è


definito su 24 bit, 20 bit possono essere ad esempio bit di rumore e solo 4 i bit effettivi.
Allora ci si deve chiedere a valle di un processo di conversione quanti bit sono corretti.
Si parte allora dal caso del convertitore ideale di risoluzione Q. L’errore di
quantizzazione introduce un rumore, detto rumore di quantizzazione che risulta essere

Capitolo 8 : caratterizzazione convertitori A/D


una variabile aleatoria con valori tra [-Q/2 ; +Q/2].

Nel convertitore reale invece in cui si può avere l’errore di offset e di guadagno e di non
linearità si capisce che l’incertezza è ben altro che Q/2. Questo perché si possono avere
delle non linearità tali che T(k-1)-T(k) è molto diverso da Q, cioè si potrebbero avere
delle pedate molto diverse da Q. In questo caso dire Vi=Q*codice è sbagliato.

Vediamo cosa si può fare per trovare i bit effettivi. Si può definire un convertitore
equivalente a quello in esame che sia ideale, ovvero dato un convertitore reale, ne esiste
uno equivalente ideale al quale è associato un rumore di quantizzazione uguale al
rumore del convertitore reale. Vediamo cosa significa rumore di un convertitore.

Un convertitore ideale è affetto solo da errore di quantizzazione. Ovvero si mette un


certo segnale in ingresso, si sa quale è il quanto Q e si sa quale è l’errore di
quantizzazione. Il rumore legato all’errore di quantizzazione è quello che si chiama
‘rumore di quantizzazione’.

150
Ad esempio per un convertitore ideale a 4 bit:

Se in ingresso ho una tensione pari a quella in corrispondenza dei punti cerchiati si


ottiene un certo codice. E facendo il prodotto codice per quanto si ottiene il valore di
tensione esatto privo di errore, ad esempio Vi=0 corrisponde al codice 0 quindi
Vconvertita=0. Se però si mette una tensione in ingresso più piccola di poco da Vk si
ottiene una corrispondenza di una tensione più grande, questo a causa dell’errore di
quantizzazione. Il valore misurato Vk meno il valore vero di ingresso permette di
ottenere l’errore di quantizzazione. L’errore varia da –Q/2 a +Q/2. In particolare si può
rappresentare l’errore (valore misurato meno valore vero) in funzione del valore vero. La
figura è riportata nella pagina seguente.

Capitolo 8 : caratterizzazione convertitori A/D

151
Capitolo 8 : caratterizzazione convertitori A/D
La caratteristica dell’errore è a dente di sega la cui pendenza è -1 in quanto la distanza
sull’ascissa tra una soglia e l’altra è Q. Questo è l’errore di quantizzazione, il rumore di
quantizzazione è il valore efficace del segnale errore di quantizzazione. Il segnale è la
tensione di errore in funzione della tensione in ingresso, esso è periodico di periodo Q.
Il rumore efficace dell’errore di quantizzazione è:

Il valore efficace del segnale di errore è stato calcolato. Si definisce il rumore di


quantizzazione di un convertitore ideale di quanto pari a Q, la quantità:

152
Si è definito il rumore di quantizzazione. Esaminiamo ora il convertitore reale. Anche
per il convertitore reale si ha sempre la relazione Vi=CODICE*Q dove Q è il quanto
ideale. Tuttavia tale tensione risulta affetta non solo da errore di quantizzazione ma
anche da errore di offset di guadagno e di non linearità. Quindi la relazione sopra non è
applicabile! Si deve trovare un appropriato. La caratteristica a cui si fa
riferimento non è a dente di sega, non la si conosce. Ma in effetti esiste un invertitore
ideale che ha lo stesso di quello reale, in questa situazione il numero di bit di
questo convertitore ideale è uguale al numero di bit effettivi del convertitore reale. Ora,
l’RMSnoise del convertitore ideale è

Dove

Se si fissa il FS del convertitore ideale uguale al FS del convertitore reale, allora ci si può
chiedere quale è il numero di bit del convertitore ideale tale che è pari all’

Capitolo 8 : caratterizzazione convertitori A/D


del convertitore reale. Ovviamente se i due convertitori hanno lo stesso FS,
dire che il rumore del convertitore reale è maggiore dell’ideale, vuol dire che si avrà un
Q più grande ovvero un N più piccolo. In altre parole:

Ma

Poiché FS è lo stesso allora il numero di bit del convertitore reale è minore di quello
ideale. Vediamo più in dettaglio.

153
Invertendo quest’ultima formula è possibile calcolare N, il numero di bit del
convertitore, in funzione di rms noise:

 FS 
N = log 2  

 RMS noise ⋅ 12 

Se tale formula la applico ad un convertitore ideale allora

E sostituendo nella formula si ottiene N=N, cioè un’identità come ci si aspetta per un
convertitore ideale. Per un convertitore reale all’interno della formula si sostituisce
l’ , ricavando N.

Questo N è il numero di bit che deve avere un convertitore ideale equivalente all’ideale,
ovvero che abbia un RMSnoise uguale. Ovviamente di questo convertitore reale
equivalente il rumore è di sola quantizzazione. Il problema per trovare l’ENOB è andare
a trovare quanto vale RMSnoise,reale.

Per trovare ciò, è necessario conoscere il segnale di ingresso perché si esamina la

Capitolo 8 : caratterizzazione convertitori A/D


quantità non desiderata. Per trovare l’ RMSnoise,reale noto il segnale di ingresso, lo si
converte, confrontando il segnale convertito con il segnale in ingresso. Ovvero si fa una
differenza, di questo segnale se ne fa il valore efficace ricavando l’RMS noice. Questo
valore viene posto nella formula che dà N. Questa è l’idea di base. La scelta del segnale
da mettere in ingresso è uguale a quella fatta per trovare le soglie e si arriva alle
conclusioni che è opportuno mettere in ingresso una sinusoide perché ne si conosce
bene la frequenza, oltre a saperla generare molto bene.

Trovare l’RMSnoise reale serve anche per fare un controllo di congruenza tra l’RMS
trovato e quello che ci si aspetta, una volta trovata la caratteristica di trasferimento.
Questo perché se si mette il segnale in ingresso, visto che si conosce la caratteristica di
trasferimento poiché si conoscono le soglie, si può andare a calcolare il segnale di uscita.
Quando il segnale di uscita rispetto a quello che si avrebbe utilizzando un convertitore
ideale di uguale FS, sarà diverso,facendo la differenza tra i due segnali si trova il valore
efficace e quindi l’RMSnoise. E poi si trova il numero di bit effettivi N dalla formula.
Quindi si trovano questi bit effettivi ipotizzando che sono giuste quelle soglie che si
erano trovate e che hanno fatto tracciare la caratteristica usata. Se questi bit coincidono

154
con quelli che si avevano come risultato quando si utilizzavano le occorrenze allora si ha
la conferma sui bit di uscita! Questa è la conferma che si cercava anche prima, ovvero il
ricalcolo dell’uscita per altra strada. Infatti usando la caratteristica per calcolare
RMSnoise si sta calcolando l’uscita con altro metodo partendo dalle soglie di prima.

Si potrebbe avere una non congruenza tra le due uscite trovate con i due metodi, per
ovviare metto la stessa sinusoide come segnale di ingresso per i due metodi, anche la
frequenza di campionamento viene lasciata uguale a quella usata per il calcolo delle
soglie Tkr.

Nel calcolare l’RMSnoise si deve sapere a che punto della sinusoide inizia l’acquisizione,
in quanto bisogna calcolare:

Dove M è il numero di campioni di acquisizioni, Vk è il vettore di campioni in uscita


dal convertitore, Vik è quello in ingresso.

Calcolando l’ RMSnoise di deve essere certi che la differenza è riferita a campioni


analoghi.

Capitolo 8 : caratterizzazione convertitori A/D


Per calcolare l’ENOB si procede in questo modo. Se si ipotizza di conoscere il segnale di
ingresso, lo si pone in ingresso al convertitore reale e si vedono i codici che restituisce.
Poi si opera il prodotto codice*quanto_nominale del convertitore (si trova sul
datasheet), in questo modo si trovano i campioni di tensione. Si ricostruisce il segnale di
ingresso a partire dai campioni. Si calcola a questo punto l’RMSnoice del convertitore
reale facendo la differenza tra il segnale in uscita ricostruito meno il segnale in ingresso
trovandone il valore efficace. Quindi sperimentalmente si calcola l’RMSnoice. A questo
punto si vuole sapere quale deve essere il Qeq, ovvero il quanto riferito al convertitore
ideale corrispondente. Per farlo si scrive l’RMSnoice come:

Da questa espressione si ricava Qeq, e lo si scrive come:

155
Si ricava quindi il FS e quindi l’ENOB.

 FS 
ENOB = log 2  

 RMS noise ⋅ 12 

Per fare questo si è detto che si deve conoscere il segnale in ingresso, dire questo,
significa che si ha il segnale in ingresso deve essere noto come espressione analitica,
altrimenti non si può fare la differenza con il segnale in uscita (in quale non è continuo,
ma è un segnale campionato):

Capitolo 8 : caratterizzazione convertitori A/D


Per fare questa differenza, essa deve essere fatta negli istanti di campionamento, poiché
in tali istanti si conosce il segnale di uscita, quindi ciò vuol dire che il segnale in ingresso
deve essere noto punto per punto, istante per istante. Bisogna conoscere l’espressione
analitica del segnale. Quindi se si applica in ingresso una sinusoide, e questo lo si fa
molto bene, si ha una segnale del tipo:

Dove Co è una costante ovvero la componente continua, serve se si vuole stimolare il


convertitore unipolare. Di tale segnale il valore massimo lo si può conoscere abbastanza
precisamente poiché con un voltmetro si misura il vero valore efficace, anche con 7 8
cifre significative, moltiplicando poi per radice di 2 si ottiene il valore massimo. Quindi
A la si conosce con poca incertezza, lo stesso dicasi per f che la si conosce molto bene
156
grazie ai frequenzimetri. La fase iniziale è invece un problema. Del segnale campionato si
sa che il primo campione è il I campione dopo che il segnale di ingresso passa per lo
zero. Questo è ottenuto se si mette un circuito elettronico che quando Vi passa per lo
zero fa partire il convertitore nella conversione. Ovviamente il clock non sarà
esattamente sincronizzato con il segnale, ovvero non è detto che Vi parta da zero.
Questo perché il clock ha un fronte di salita leggermente largo e quindi campiona dopo.

Al limite di Nyquist si sceglie fc=2fs, cioè in un periodo del segnale di ingresso si hanno
solo 2 fronti del clock allora questo problema è maggiormente sentito poiché il primo
campione può essere preso molto più dopo dello zero. Tale problema è tanto più poco
sentito quanto più fc>fs, ed è tanto più sentito quanto più fc si avvicina a 2fs.

Ovviamente nel fare questo errore nello stabilire bene la sincronizzazione, quando si va
a fare la differenza, non la si fa per valori riferiti allo stesso istante, ma prendo i
campioni corrispondenti non rispetto all’istante di tempo, ma corrispondenti a quel
punto del segnale. Quello che si fa è calcolare il segnale in ingresso a partire dall’uscita,
come quel segnale che meglio approssima il segnale di uscita. Ovviamente il segnale di
uscita potrebbe essere affetto da errore di guadagno e offset e non linearità. Allora visto
che si conosce Vmax e la frequenza allora si può ricavare questa sinusoide. La costante C
la si può misurare con un semplice voltmetro che misura il valor medio. In questo modo
resta solo il rumore di non linearità.

Allora ci si chiede quali sono i valori di A , e tali che tale sinusoide approssimi
meglio il segnale di ingresso, ovvero minimizza lo scarto quadratico medio tra le Vk

Capitolo 8 : caratterizzazione convertitori A/D


acquisite e le Vik ottenute sostituendo fc. Ora l’ingresso è

La differenza va fatta con il segnale campionato:

Essendo:

Questa quantità può essere scritta come:

Poiché

157
Dove k è l’indice dei campioni. Per la formula di addizione del coseno si può riscrivere
come:

Definisco:

Quindi i tre parametri di ampiezza fase e frequenza sono diventati : , e


Attraverso questi parametri si individua univocamenteil campione in ingresso.

Capitolo 8 : caratterizzazione convertitori A/D


Bisogna minimizzare lo scarto quadratico medio tra i campioni Vk e Vik. Quindi
bisogna minimizzare lo scarto così definito:

sono i campioni trovati facendo codice per quanto in uscita. Ponendo per comodità:

Si riscrive Vik:

158
Da cui:

Minimizzare questa quantità significa porre nulla la derivata rispetto ad , e .

M
∂ε
0= = −2 ⋅ ∑ V ik − A0 ⋅ α k − B0 ⋅ β k − C0 ⋅ α k
[ ]
∂A0 i =1
M
∂ε
0= = −2 ⋅ ∑ V ik − A0 ⋅ α k − B0 ⋅ β k − C0 ⋅ β k
[ ]
∂B0 i =1
M
∂ε
0= = −2 ⋅ ∑ V ik − A0 ⋅ α k − B0 ⋅ β k − C0
[ ]
∂C0 i =1

Riordinando il sistema:
M M M M

∑V
k =1
ik
⋅ α k = A0 ⋅ ∑ α + B0 ⋅ ∑ α k β k + C0 ⋅ ∑ α k
k =1
2
k
k =1 k =1

Capitolo 8 : caratterizzazione convertitori A/D


M M M M

∑V ik ⋅β k = A0 ⋅ ∑ α k β k +B0 ⋅ ∑ β k2 + C0 ⋅ ∑ β k
k =1 k =1 k =1 k =1
M M M

∑V
k =1
ik
= A0 ⋅ ∑ α k + B0 ⋅ ∑ β k + C0 ⋅ M
k =1 k =1

Da questo sistema lineare in 3 incognite, si possono ricavare i tre parametri cercati.

Una volta trovati i:

Si useranno per fare la differenza con il segnale di uscita, trovando il segnale di rumore
di errore. Infatti si trova

159
Da cui si può ricavare l’ENOB.

 FS 
ENOB = log 2  

 RMS noise ⋅ 12 

Quindi a causa del rumore si sanno quanti bit sono significativi e quanti no. L’ENOB
dipende dalla frequenza del segnale di ingresso, quanto più è grande la frequenza tanto
più è piccolo l’ENOB, ovvero si riducono i bit effettivi. Per questo motivo l’ENOB è
calcolato nel caso peggiore, ovvero si fissa il range di frequenze in cui lavora il
convertitore e si ragiona con la frequenza più alta. In questo modo si è sicuri che il
convertitore negli altri casi lavora meglio. L’ENOB è calcolato a partire dall’uscita
sperimentale.

Bisogna inoltre notare che il calcolo dell’ENOB è utile anche come verifica della
caratteristica di trasferimento. Poiché si era ipotizzata la monotonia. Quindi si calcola
l’ENOB a partire dall’RMSnoise del convertitore reale, mettendo l’ingresso e valutando
sperimentalmente l’uscita. Poi si ricalcola l’uscita a partire dall’ingresso utilizzando la
caratteristica di trasferimento, questo si fa poiché si hanno le soglie e l’ingresso. Con
questa nuova uscita non sperimentale ma teorica si calcola l’ENOB. Se i 2 ENOB trovati

Capitolo 8 : caratterizzazione convertitori A/D


coincidono allora non si hanno errori di monotonicità. Questo è il motivo per cui il
segnale di ingresso per calcolare le soglie è lo stesso del segnale utilizzato nell’ENOB.

ESERCIZIO:
Qui di seguito sono mostrati i programmi che calcolano i parametri che caratterizzano il
convertitore utilizzato per le acquisizioni. Non sono altro che le equazioni e gli algoritmi
presentati nella relazione e descritti dalla norma 1241-2000.

Dati:
Ci sono 10 file di testo "Acquisizione_x.txt" che costituiscono dieci acquisizioni ripetute
dello stesso segnale eseguite con l'oscilloscopio. Ognuno dei file contiene 2048
campioni acquisiti, forniti come codici di uscita

160
del convertitore analogico/digitale.

L'oscilloscopio è stato configurato nel seguente modo:


Asse verticale (di 10 divisioni) è stato impostato a "1 V/div"
Asse orizzontale (profondità di memoria di 2500 campioni) è stato impostato a 50
us/div

Il segnale in ingresso all'oscilloscopio ha le seguenti caratteristiche:


Ampiezza: 10 V picco-picco
Frequenza: 1252441.4 Hz

Determinare:
1) Le soglie di transizione
2) Errore di guadagno e di offset
3) Non linearità differenziale ed integrale
4) Numero di bit effettivi (ENOB)

I dati forniti sono stati indicati come di seguito:

Nc = 2048; %numero di codici di rilevati e memorizzati nel file di acquisizione


N = 8; %numero di bit del convertitore, quindi 256 possibili codici
Vfs = 5; %ampiezza della sinusoide di prova

dati = fopen ( 'Acquisizione_0x.txt' , 'r');


array_codici = fscanf ( dati , '%g', inf); %in array_codici sono immagazzinati i codici del file

Capitolo 8 : caratterizzazione convertitori A/D


.txt

fs = 1252441.4; %frequenza della sinusoide


fc = 5000000; %frequenza di campionamento =( 10*50us/div )/2500

Codice:
function [H]=occorrenze(array_codici,N)
% Trova le occorrenze di ogni codice k
% N è il numero di bit, array_codici contiene i codici rilevati
% H è un array di 2^N locazioni, ogni locazione di indice k, contiene
%il numero di occorenze del codice k-1 che si ha nell'array_codici

H = zeros(2^N,1);
iter = size(array_codici);
for i=1:iter(1)
H(array_codici(i) + 1 ) = H(array_codici(i) + 1 ) + 1;
end
161
return

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%
function [Tr,Hc,iter]=soglie_reali(H,Vfs,Nc)
% Trova le soglie reali
% Nc è il numero di campioni acquisiti è la dimensione di array_codici, H è l'uscita
della
%funzione "occorrenze", Vfs è l'ampiezza della sinusoide di prova.
% Tr è un array di dimensione pari a H, ogni locazione di indice k,
%contiene la tensione di soglia al di sopra della quale si ha il
%codice k-1 (k è un indice che va da 1 a 2^N, i codici da 0 a 2^N-1, nella
%teoria si è visto che la Tk è quella tensione al di sopra della quale
%si ha il codice k, a causa dei valori degli indici, la definizione, cambia
%leggermente)

iter = size(H);
Tr = zeros(iter(1),1);

for i=1:iter(1)
Hc = 0;
for j=1:i-1
Hc = Hc + H(j);
end
Tr(i) = -Vfs*cos(pi*Hc/Nc);

Capitolo 8 : caratterizzazione convertitori A/D


end
return

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%
function [G,O,Trc,Ti]=err_guad_offset(Tr,N,Vfs)
% Trova l'errore di guadagno e di offset
% Tr uscita della funzione "soglie_reali", N è il numero di bit,
% Vfs è l'ampiezza della sinusoide di prova.
% G: errore di guadagno, O: errore di offset
% Ti: sogli ideali, Trc: soglie reali e compensate

q = (2*Vfs)/(2^N);
iter = size(Tr);
Ti = zeros(iter(1),1);
for i=1:iter(1)
Ti(i) = (i-1)*q - Vfs; %Ti(i) è la soglia ideale relativa al codice
end % i-1

162
interp = polyfit(Ti,Tr,1);
%interp(1) contiene il coeff angolare e interp(2) l'ordinata all'origine
%della retta interpolante i campioni Tr, restituita dalla funzione
%polyfit; cioè si ottiene proprio l'errore di guadagno e di offset.

G = interp(1);
O = interp(2);

Trc = (Tr - O)/G ; %il generico elemento del vettore Trc: Trc(i) è
% uguale a (Tr(i) - O)/G
return

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%
function [dnl,inl]=INL_DNL(Trc,N,Vfs)
% Trova il DNL e INL
% Trc è l'uscita della funzione "err_guad_offset", N il numero di bit,
% Vfs è l'ampiezza della sinusoide di prova

q = (2*Vfs)/(2^N);
iter = size(Trc);
Ti = zeros(iter(1),1);
for i=1:iter(1)
Ti(i) = (i-1)*q - Vfs;

Capitolo 8 : caratterizzazione convertitori A/D


end

%Calcolo di inl
inlk = zeros(iter(1),1);
for i=1:iter(1)
inlk(i) = abs(Trc(i)-Ti(i));
end

inl = max( inlk )*100 / (2*Vfs);

%Calcolo di dnl
dnlk = zeros(iter(1)-1,1);
dnl = 0;

for i=1:iter(1)-1
dnlk(i) = (Trc(i+1)-Trc(i) - q )/q ;
end

163
for i=1:iter(1)-1
dnl = dnl + dnlk(i)^2;
end

dnl = sqrt( dnl/(iter(1)-1) );

return

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%
function [ENOB,rms_noise,vi,yo]=trova_ENOB_DEF(array_codici,fs,fc,N,Vfs)
% Trova ENOB e rms_noise
% array_codici contiene i codici rilevati, N è il numero di bit,
% fs è la freq del segnale di prova, fc quella di campionamento, vi è
% il segnale stimato secondo la norma 1241-2000, yo è il segnale analogico
% rilevato dopo la conversione dei codici di uscita del convertitore

q = (2*Vfs)/(2^N);

iter = size(array_codici);

yo = zeros(iter(1),1); %campioni analogici in uscita al convertitore


for i=1:iter(1)
yo(i) = array_codici(i)*q - Vfs;
end

Capitolo 8 : caratterizzazione convertitori A/D


%Costruzione di alfa k e beta k
ak = zeros(iter(1),1); bk = ak;
for i=1:iter(1)
ak(i) = cos(2*pi*i*fs/fc);
bk(i) = sin(2*pi*i*fs/fc);
end

%Costruzione dei coefficienti e dei termini noti del sistema lineare di tre equazioni
nelle incognite Ao, Bo, %Co
ya=0; a2=0; ab=0; a=0; yb=0; b2=0; b=0; y=0;
for i=1:iter(1)
ya = ya + yo(i)*ak(i);
a2 = a2 + ak(i)*ak(i);
ab = ab + bk(i)*ak(i);
a = a + ak(i);
yb = yb + yo(i)*bk(i);

164
b2 = b2 + bk(i)*bk(i);
b = b + bk(i);
y = y + yo(i);
end

%Definizione e risoluzione del sistema lineare di incognite


A = [a2 ab a; ab b2 b; a b iter(1)];
B = [ya yb y]';
x = A\B;

Ao=x(1); Bo=x(2); Co=x(3);

%campioni analogici stimati in ingresso al convertitore


vi = zeros(iter(1),1);
for i=1:iter(1)
vi(i) = Ao*ak(i) + Bo*bk(i) + Co;
end

%inizio calcolo del rumore


rmsk = zeros(iter(1),1);
for i=1:iter(1)
rmsk(i) = (yo(i) - vi(i));
end

rms = 0;
for i=1:iter(1)

Capitolo 8 : caratterizzazione convertitori A/D


rms = rms + rmsk(i)^2;
end

%calcolo del valore efficace del rumore


rms_noise =sqrt( rms/iter(1) );

%calcolo, secondo definizione, di ENOB


ENOB = log2(2*Vfs /(rms_noise*3.464) );

return

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%

Si riportano ora i risultati ottenuti per ogni acquisizione.

Acquisizione Rms_noise ENOB


n° [V]

165
1 0.1682 4.1017
2 0.1494 4.2726
3 0.1657 4.1226
4 0.1423 4.3421
5 0.0869 5.0540
6 0.1486 4.2800
7 0.2019 3.8375
8 0.1767 4.0302
9 0.1481 4.2848
10 0.2175 3.7306

Il valore medio di ENOB è:

ENOB_m = 4.20, con scarto quadratico medio pari a 0.34

Il calcolo di guadagno e offset, nonché di INL e DNL è stato fatto tenendo conto di tutti
i campioni acquisiti.

Errore di guadagno = 0.998

Errore di offset = 0.010

INL = 0.584

DNL = 0.158

Infine si riportano alcuni grafici esemplificativi. Capitolo 8 : caratterizzazione convertitori A/D

Diagramma delle occorrenze (prima acquisizione)

166
Diagramma delle occorrenze (di tutte le acquisizioni)

Capitolo 8 : caratterizzazione convertitori A/D

167
Grafico delle soglie compensate Trc [V] in funzione delle soglie ideali Ti [V] (prima
acquisizione)

Grafico delle soglie compensate Trc [V] in funzione delle soglie ideali Ti [V] (tutte le
acquisizioni)

Capitolo 8 : caratterizzazione convertitori A/D

168
Andamento del rumore, inteso come differenza tra il segnale analogico convertito e
quello di ingresso (prima acquisizione)

Capitolo 8 : caratterizzazione convertitori A/D

169
Capitolo 8 : caratterizzazione convertitori A/D

170