I.T.I.S. "Antonio Meucci" di Roma
Conversione dati (A/D) e (D/A)
a cura del Prof. Mauro Perotti
Anno Scolastico 2009-2010
Conversione dati (A/D) e (D/A)
Sommario
Introduzione ..................................................................................................3
1. Conversione D/A ........................................................................................3
1.1 Il DAC a resistori pesati..................................................................... 5
1.2 Il DAC con rete a scala R-2R (ladder)................................................. 6
1.3 Parametri di un DAC ......................................................................... 8
1.3.1 Offset............................................................................................................. 9
1.3.2 Guadagno...................................................................................................... 9
1.3.3 Linearità ....................................................................................................... 9
1.3.4 Tempo di assestamento.............................................................................. 10
2. La conversione A/D .................................................................................10
2.1 Minimizzazione dell'errore di quantizzazione ..................................... 11
2.2 Osservazioni conclusive ................................................................... 12
3. Architettura degli ADC ............................................................................ 13
3.1 ADC flash (o parallelo) .................................................................... 13
3.2 Gli ADC a retroazione ...................................................................... 13
3.2.1 ADC a gradinata ..........................................................................................13
3.2.2 ADC ad inseguimento ................................................................................ 14
3.2.3 ADC ad approssimazioni successive...........................................................15
4. Parametri e caratteristiche dei convertitori A/D .................................... 17
4.1
4.2
4.3
4.4
4.5
4.6
4.7
4.8
Errori di offset, guadagno e linearità ................................................ 17
Errore di quantizzazione .................................................................. 17
Tempo di conversione ..................................................................... 17
Velocità di conversione.................................................................... 17
Dinamica di ingresso ....................................................................... 17
Impedenza di ingresso .................................................................... 18
Slew rate........................................................................................ 18
Codici mancanti .............................................................................. 18
pag. 2
Conversione dati (A/D) e (D/A)
Introduzione
Le tecniche di conversione di un segnale analogico in digitale (A/D) e di un segnale digitale in analogico
(D/A) sono fondamentali per consentire ad un sistema di elaborazione dati digitale (come un calcolatore,
ma non solo) di interagire con il mondo ad esso esterno.
1. Conversione D/A
Il DAC (Digital Analog Converter) è un sistema che
converte un dato digitale in una grandezza analogica,
generalmente una tensione o una corrente (figura 1). Il
dato digitale, costituito da un certo numero di bit, è
presentato all'ingresso del convertitore in forma seriale o
parallela. L'uscita del sistema è un livello di tensione o di
corrente proporzionale al valore rappresentato dal dato
digitale applicato all'ingresso.
La figura 2 mostra un possibile andamento
dell'uscita di un DAC a 3 bit (il dato digitale
applicato in ingresso è costituito da parole di 3
bit ciascuna). Osservando la figura si possono
fare le seguenti considerazioni:
1.
2.
è richiesto che il dato digitale applicato
all'ingresso sia mantenuto per un certo
intervallo di tempo;
eguali parole binarie producono eguali
livelli della grandezza analogica.
Supponiamo ora, per fissare le idee, che la
grandezza in uscita sia una tensione (Vo) e che
la parola in ingresso (N) sia codificata in
codice binario naturale e sia costituita dagli n bit:
bn-1 bn-2. b1 b0
dove b0 rappresenta il bit meno significativo (LSB) e
scrivere:
(1)
Essendo
quello più significativo (MSB). Potremo allora
Vo = Q · N
Vo ed N
indichiamo con Q.
Ovvero, tra
bn-1
esiste un legame di proporzionalità diretta e la costante di proporzionalità la
N espresso in codice binario naturale, possiamo scrivere:
(2)
N = bn-1 · 2n-1 + bn-2 · 2n-2 + ... + b1 · 21 + b0 · 20
sostituendo quest'ultima espressione nella (1):
(3)
pag. 3
Conversione dati (A/D) e (D/A)
Essendo N un numero puro avremo che Vo e Q dovranno avere le stesse dimensioni. Quindi Q è una
tensione e viene indicata come il quanto della conversione. Moltiplicando e dividendo il secondo membro
n
della (3) per 2 :
(4)
dove
VFS
è la tensione di fondo scala. Nella ricostruzione di una tensione analogica la più piccola
variazione della tensione d'uscita si ha quando cambia solo il bit meno significativo (LSB). Se nella (4)
facciamo cambiare, nella parola
N, solo il bit b0, la variazione di V0 sarà pari a:
(5)
Vo corrispondente al caso in cui tutti i
bit siano pari a zero ed il valore di Vo corrispondente al caso in cui solo il bit LSB sia pari a 1. Nel primo
caso avremo, dalla (3), V0=0. Nel secondo caso, sempre dalla (3), avremo:
Per convincersi di ciò è sufficiente fare la differenza tra il valore di
V0=Q
Se invece cambia solo l'MSB si ha, in uscita, una variazione pari alla metà della tensione di fondo scala.
Anche qui, come per il caso precedente, faremo la differenza tra il valore di Vo corrispondente al caso in
cui tutti i bit sono pari a zero ed il valore di Vo corrispondente al caso in cui solo il bit MSB è pari a 1. Nel
primo caso abbiamo V0=0. Nel secondo caso, dalla (3), avremo:
(6)
dove si è sostituita la (5) in luogo di
Q.
Occorre ora prestare attenzione al fatto che la tensione di fondo scala non corrisponde al valore massimo
assumibile dall'uscita. Questo, infatti, lo si ottiene dalla (3) o dalla (4) ponendo ad 1 tutti i bit:
(7)
Prima di esaminare gli schemi che la letteratura del settore propone per la conversione D/A sono utili
alcune considerazioni.
Come si è visto, la tensione di fondo scala viene divisa in un numero di intervalli che cresce al crescere di
n (il numero dei bit). Contemporaneamente accade che al crescere di n diminuisce anche l'ampiezza
dell'intervallo di quantizzazione Q. Ciò comporta la concreta possibilità di generare segnali di uscita con
andamenti sempre più prossimi a quelli analogici. Per descrivere tale capacità si introduce il parametro
della risoluzione, definito come:
(8)
E' comunque invalso l'uso di indicare la risoluzione di un
DAC con il numero n dei bit di ingresso.
pag. 4
Conversione dati (A/D) e (D/A)
1.1 Il DAC a resistori pesati
La figura 3 mostra un DAC a
resistori pesati ad n bit. Si tratta
di uno schema di importanza
soprattutto
didattica.
I
costruttori,
generalmente,
preferiscono implementare la
soluzione descritta nel paragrafo
successivo per ragioni che si
renderanno evidenti a breve.
Analizzando la figura possiamo
osservare che si tratta di un
sommatore invertente. Si noti,
altresì, la presenza di n deviatori
comandati
dagli
n
bit
di
ingresso. Quando il bit i-esimo
(anche indicato con bi) vale 1 il
relativo deviatore collega il
potenziale -VREF al resistore di
ingresso. Se, invece, bi vale 0, il
relativo deviatore collega al
medesimo resistore il potenziale
di massa.
Il bit più significativo,
R.
bn-1 (MSB),
è collegato, attraverso il proprio deviatore, ad un resistore di valore
bn-2, è collegato, attraverso il proprio deviatore, ad un resistore di
2·R, e così tutti gli altri: al diminuire del peso del bit raddoppia il valore di resistenza del resistore
n-1
associato a tale bit. Il bit meno significativo, b0, è collegato ad un resistore di valore R·2 . Le resistenze
sono quindi pesate secondo opportune potenze di 2 (da cui il nome allo schema).
Il bit immediatamente successivo,
valore
Per l'analisi di tale schema determiniamo le correnti circolanti in ciascuno dei resistori di ingresso. Il
valore della corrente nel ramo associato al bit MSB può essere nullo, se il relativo bit vale 0, oppure
essere pari a -VREF/R, se il relativo bit è pari ad
scrittura possiamo scrivere:
1.
Per rappresentare entrambi i casi con un'unica
(9)
In questo modo se
-VREF/R.
bn-1
è
0 il secondo membro si annulla; se bn-1 è 1 il secondo membro è pari a
In modo del tutto analogo possiamo scrivere il valore delle altre correnti:
...
pag. 5
Conversione dati (A/D) e (D/A)
La somma di tutte queste correnti, che pervengono al nodo (-) dell'A.O., fornisce la corrente
circolando in
I
che,
R, produce la tensione d'uscita:
(10)
I = In-1 +In-2 +...+I0
(11)
v0 = - Rf · I
sostituendo il valore di ciascuna corrente nella (10) e questa nella (11) si ottiene:
(12)
che può essere riscritta nella forma:
Se confrontiamo questa espressione con la (4) possiamo concludere che la tensione di fondo scala è pari
a:
e, applicando la (5), ricaviamo l'espressione per il quanto:
e, dalla (7), l'espressione per il valore massimo assumibile dall'uscita:
Queste tre relazioni definiscono le caratteristiche operative del
DAC a resistori pesati.
Questa struttura circuitale, molto utile da un punto di vista didattico per comprendere il funzionamento di
un DAC, presenta però un fondamentale inconveniente che ne impedisce di fatto la realizzazione: il
valore delle resistenze di ciascun resistore deve essere estremamente preciso: diversamente vengono a
perdere di significato le tre relazioni distintive di questo schema. Si tratta di un vincolo così stringente
che i costruttori preferiscono adottare altre soluzioni come quella della rete ladder descritta nel paragrafo
successivo.
1.2 Il DAC con rete a scala R-2R (ladder)
La rete a scala R-2R, o rete ladder, può assumere differenti tipologie circuitali. Qui viene analizzata
quella maggiormente implementata nelle soluzioni integrate adottate dai principali costruttori (vedi figura
4).
pag. 6
Conversione dati (A/D) e (D/A)
Anche qui, come si può notare, ciascuno degli n bit di ingresso comanda un deviatore che connette il
relativo resistore (di valore 2R) al morsetto (-) dell'A.O., se il relativo bit vale 1; connette invece il
resistore al morsetto (+) se il medesimo bit vale 0. Pur essendo fisicamente diversi entrambi i morsetti,
comunque, si trovano al potenziale di massa. Quindi tutti gli estremi inferiori dei resistori 2R sono
collegati a massa (a prescindere dal valore assunto dal relativo bit).
La particolare simmetria della rete, inoltre, è tale per cui la corrente erogata dal generatore
sempre pari a:
(13)
VREF
è
I = VREF/R
Qualunque sia la disposizione dei bit applicati all'ingresso del DAC. Cerchiamo di
spiegare questa affermazione. Qualunque nodo "vede", alla sua destra, sempre lo
stesso valore di resistenza equivalente. Partiamo dal nodo N0 e poniamoci
immediatamente alla sua sinistra: il resistore equivalente che si vede verso
destra da tale posizione è pari ad R (trattandosi del parallelo di due resistori
eguali e pari a 2R ciascuno - vedi
figura 5). Chiediamoci, ora, che
cosa vede il nodo N1 alla sua
destra: la serie di due resistori
eguali e di valore pari ad R.
Quindi
2R
(vedi figura 6). E così,
anche il nodo N2 vede alla sua destra un resistore
equivalente pari a 2R. Il ragionamento può quindi essere
ripetuto per ciascun nodo fino ad arrivare al primo di
questi, Nn-1, che vede verso destra 2R e verso il basso
2R. Questa catena di ragionamenti giustifica la (13).
VREF, giunta al nodo Nn-1, si divide in due parti eguali:
prosegue verso il nodo successivo Nn-2 (anch'essa pari a I/2).
Proseguiamo nell'analisi. La corrente I erogata da
una scende verso il basso (I/2) e l'altra
Quella che scende verso il basso viene poi dirottata sul morsetto (-) o (+) dell'A.O. sulla base del valore
del bit bn-1. Quella che procede verso il nodo Nn-2 si divide ulteriormente in due parti eguali: una circolerà
verso il basso (I/4) e l'altra verso il nodo
resistore
Rf varrà:
Nn-3
(sempre
I/4).
In definitiva, la corrente che circolerà nel
che possiamo anche riscrivere:
pag. 7
Conversione dati (A/D) e (D/A)
sostituendo ad
I la (13):
da cui la tensione d'uscita:
Anche qui, come abbiamo già fatto per il
la (4) e concludiamo che:
DAC a resistori pesati, confrontiamo quest'ultima relazione con
dove il quanto è stato espresso in valore assoluto trattandosi dell'ampiezza di un intervallo.
In conclusione possiamo affermare che questa configurazione offre, rispetto al
seguenti vantaggi:
•
la rete a scala non pone i problemi del
caso, resistori di due soli valori: R e 2R;
•
la corrente I erogata da
costante;
DAC
DAC
a resistori pesati, i
a resistori pesati dovendosi utilizzare, in questo
VREF è sempre costante e ciò comporta l'impegno di una potenza sempre
i transitori che si verificano in altre soluzioni, in coincidenza
con la commutazione dei bit di ingresso da un livello all'altro,
qui sono praticamente inesistenti in quanto la circolazione
della corrente in ciascun resistore è sempre costante.
1.3 Parametri di un DAC
Vengono qui esaminati i parametri che il costruttore riporta,
per un DAC, nel relativo data sheet. La figura 7 rappresenta
la risposta ideale di un DAC a 3 bit. Questa risposta verrà
considerata quale andamento di riferimento per definire i vari
tipi di errore che affliggono un DAC e che, in definitiva,
modificano la risposta ideale in una risposta reale.
pag. 8
Conversione dati (A/D) e (D/A)
1.3.1 Offset
Consideriamo un DAC unipolare con codice di ingresso binario
naturale. Se all'ingresso applichiamo zero in decimale
(corrispondente ad una sequenza di bit tutti eguali a zero) in
uscita dovremmo rilevare una tensione pari a zero. A causa di
una serie di imprecisioni costruttive tale valore, talvolta, si può
discostare da zero. In tal caso avremmo una risposta come
quella indicata in figura 8. Tale scostamento dal comportamento
ideale viene indicato come errore di offset. Questo errore tende
a mantenersi costante anche in corrispondenza delle altre
sequenze binarie di ingresso. Ciò giustifica l'andamento
parallelo della transcaratteristica rispetto all'andamento di
riferimento riportato in figura 7.
1.3.2 Guadagno
La tolleranza sulle tensioni di riferimento provoca l'errore di
guadagno che si manifesta con una risposta del DAC avente
pendenza diversa da quella ideale (vedi figura 9). Questo tipo di
scostamento viene denominato errore di guadagno.
Sia l'errore di offset che quello di guadagno vengono eliminati
agendo su opportuni piedini di compensazione secondo le
indicazioni riportate sul data sheet del DAC che si sta
utilizzando.
1.3.3 Linearità
Se i punti che definiscono
la caratteristica di un
DAC non si trovano su
una retta, come nel caso
della figura 10, allora
siamo in presenza dell'
errore di non linearità.
Esso è definito come il
massimo scostamento –
in percentuale del fondo
scala o in frazioni di LSB
–
dei
punti
della
caratteristica
reale
rispetto a quella ideale.
Nel caso della figura 11,
ad esempio, si può notare
che tra tutti i punti che
definiscono la caratteristica reale quello che maggiormente si discosta dalla caratteristica ideale è quello
in corrispondenza dell'ingresso 011. Nell'esempio si osserva un valore dell'uscita reale pari a 4.5V
rispetto a quello ideale di
3.0V. In tal modo l'errore di linearità vale, in percentuale del fondo scala:
oppure, in frazioni di
LSB:
(si tenga presente che la tensione di fondo scala si è supposta pari ad
8V
e, di conseguenza, essendo il
DAC a 3 bit, il valore del quanto o dell'LSB è pari ad 1V).
pag. 9
Conversione dati (A/D) e (D/A)
Il costruttore riporta nel data sheet anche l' errore di non
linearità differenziale. Si tratta della massima differenza,
espressa in frazioni di LSB, tra l'incremento reale dell'uscita e
quello ideale in corrispondenza dell'ingresso di 1 LSB. La figura
12 mostra il significato di tale tipo di errore. Si può notare che,
in tale esempio, l'errore di non linearità differenziale ammonta
ad 1.5 LSB.
Nel caso di un errore di
non
linearità
differenziale superiore
ad 1 LSB si ha che
l'uscita può aumentare
o
diminuire di
un
gradino di ampiezza
superiore al quanto (o
ad 1 LSB). Si può verificare, in tale circostanza, la presenza di
un altro tipo di errore: quello di non monotonicità. Si tratta di
una diminuzione del valore dell'uscita reale rispetto al valore
assunto
in
corrispondenza
della
sequenza
binaria
immediatamente precedente (vedi figura 13). Con un errore di
non linearità inferiore a +/- ½LSB si scongiura l'errore di non
monotonicità.
1.3.4 Tempo di assestamento
Questo parametro è indicato dal costruttore con il termine settling
time. E' definito come l'intervallo di tempo necessario all'uscita di un
DAC per raggiungere il suo valore finale all'interno di +/- ½LSB.
Tipicamente il data sheet riporta questo dato rispetto a due
commutazioni tipiche: 1 LSB ed 1 MSB. La figura 14 mostra il
significato di tale errore. In essa si è supposto che in ingresso,
all'istante t1, vi sia stata la commutazione dalla sequenza binaria
011 alla sequenza 100. L'andamento della tensione d'uscita, come si
può notare, non avviene in modo istantaneo ma oscillatorio. Vi è poi
un istante, indicato in figura con t2, a partire dal quale la tensione
d'uscita risulta contenuta all'interno di +/- ½LSB. Il tempo di
assestamento corrisponde proprio all'intervallo di tempo
t2 - t1.
2. La conversione A/D
Il processo della conversione analogico-digitale ha lo scopo di trasformare un segnale analogico (in
genere una tensione) in un insieme di codici digitali. I circuiti che svolgono tale compito, realizzati in modi
differenti, formano la famiglia degli ADC (Analog to Digital Converter).
Il segnale analogico varia all'interno dell'intervallo denominato range di fondo scala. Questo può essere
unipolare, ad esempio da 0V a 5V, oppure bipolare, ad esempio da –15 V a 15 V. Se indichiamo con
VFS l'ampiezza di tale intervallo (5V nel primo esempio e 30V nel secondo) e con n il numero dei bit del
convertitore, definiamo il quanto o intervallo di quantizzazione il rapporto:
(14)
Il range di fondo scala viene quindi diviso in un numero di fasce dipendente dal numero di bit del
convertitore. Per n=3, ad esempio, si avranno 8 fasce. Facciamo un esempio per comprendere meglio. Se
VFS=8V ed n=4 avremo:
pag. 10
Conversione dati (A/D) e (D/A)
questo vuol dire che se la
vi
assume valori compresi tra
0V
e
0.5V il
dato digitale in uscita sarà:
0000;
se la vi assume valori compresi tra 0.5V e 1.0V il dato digitale in uscita sarà: 0001. E così via. In
generale, supponendo il dato digitale in uscita espresso in codice binario naturale, potremo scrivere:
(15)
Il massimo valore codificabile dell'ingresso corrisponderà ad una sequenza binaria di bit tutti eguali ad 1.
In questo caso si avrà:
In figura 15 è riportata la transcaratteristica di un
ADC a 3 bit. Sull'asse delle ascisse vi è la tensione
di ingresso e su quello delle ordinate il dato
digitale in uscita.
Un ADC, quindi, è un circuito che associa un
intervallo di valori della tensione di ingresso ad un
dato digitale in uscita. All'aumentare del numero
di bit diminuisce l'intervallo di quantizzazione e,
nel,contempo,
aumenta
la
precisione
del
convertitore. Viene qui richiamato il concetto di
precisione in quanto l'ADC, nel processo di
conversione, commetterà pur sempre un errore.
Tale errore è detto errore di quantizzazione. Nell'esempio precedente (VFS = 8 V, Q = 0.5 V ed n = 4
bit) se la tensione applicata all'ingresso è pari a 0.22 V il dato digitale prodotto in uscita sarà 0000. Tale
dato verrà interpretato come risultato dell'applicazione, all'ingresso dell'ADC, di una vi pari a 0V. Verrà
quindi commesso, in questa circostanza, un errore di 0.22V (per difetto).
2.1 Minimizzazione dell'errore di quantizzazione
Si può osservare, a questo punto, che il massimo errore di quantizzazione è pari a
figura 15, infatti, si può notare che il dato digitale
000
Q.
Osservando la
è interpretato come una tensione di ingresso pari
a 0V. Tale dato digitale, tuttavia, rappresenta un intervallo di valori pari a Q. Nel caso peggiore,
pertanto, che la reale tensione applicata all'ingresso tenda ad assumere valori verso l'estremo destro
dell'intervallo si avrà, corrispondentemente, un errore di quantizzazione che tenderà ad assumere valori
prossimi a Q.
Per minimizzare tale errore è sufficiente scegliere la
soglia tra un codice di uscita ed il successivo a metà
dell'intervallo di quantizzazione. Si tratta, in
sostanza, di spostare la transcaratteristica indicata in
figura 15 di mezzo quanto verso sinistra. In tal modo
si ottiene la transcaratteristica di figura 16. In questo
modo si avrà che il codice 000 rappresenterà tutti i
valori dell'ingresso compresi tra
001
rappresenterà
tutti
i
0
e
valori
Q/2;
il codice
dell'ingresso
compresi tra Q/2 e 1.5 Q. E così via. In tal modo si
ottiene un errore di quantizzazione, massimo, pari a:
(16)
pag. 11
Conversione dati (A/D) e (D/A)
Va osservato che questa scelta della soglia, che minimizza l'errore massimo di quantizzazione, non
modifica la relazione (15) che rimane comunque valida.
2.2 Osservazioni conclusive
Tenendo conto dell'errore di quantizzazione possiamo affermare che ad un dato codice digitale in uscita,
N0, verrà associato un intervallo di valori della tensione di ingresso:
(17)
Se tutti i bit valgono
0 il bit LSB diverrà 1 quando la vi supererà il valore:
La sequenza corrispondente a tutti i bit eguali a zero tranne l'MSB è stata generata da un intervallo dei
valori della tensione di ingresso:
il valore minimo che la
Il codice digitale
dell'ingresso:
N0
vi deve superare per consentire la commutazione dell'MSB, quindi, vale:
costituito da bit tutti eguali ad 1 è prodotto dal seguente intervallo dei valori
il valore minimo di tale intervallo è:
ciò significa che quando la tensione di ingresso supera tale soglia in uscita si avrà una configurazione di
bit tutti eguali ad 1.
Un'ultima importante considerazione. L'estremo superiore di questo intervallo corrisponde a:
se la tensione di ingresso supera tale valore non si avrà, com'è ovvio, un'ulteriore commutazione del dato
digitale in uscita. In tale circostanza, assolutamente da evitare, ci si troverebbe ad avere una crescita
indefinita dell'errore di quantizzazione.
pag. 12
Conversione dati (A/D) e (D/A)
3. Architettura degli ADC
3.1 ADC flash (o parallelo)
Un ADC parallelo è indicato in figura 17. Come si vede, è
costituito da un determinato numero di comparatori ed una rete
logica del tipo priority encoder. Il numero dei comparatori è
legato al numero n di bit del convertitore dalla relazione:
n°comp = 2n - 1
Il flash illustrato in figura si riferisce al caso di 3 bit (7
comparatori). In esso è anche presente un opportuno partitore
resistivo della tensione
VFS
che ha lo scopo di fissare la soglia
di commutazione di ciascun comparatore. La vi è applicata
simultaneamente sui morsetti + di ciascun A.O. Sappiamo, dal
paragrafo precedente, che per minimizzare l'errore di
quantizzazione la prima soglia di commutazione deve essere
pari a Q/2, la seconda distanziata di Q e le successive
distanziate tra di loro sempre da una quantità pari a Q.
3.2 Gli ADC a retroazione
L'ADC flash è un convertitore molto veloce ma altrettanto costoso. Il suo impiego, pertanto, trova spazio
in tutte quelle applicazioni che richiedono velocità di funzionamento particolarmente spinte (come quelle
in campo video).
Per applicazioni in cui non vi è tale necessità si può
ricorrere ad una categoria di convertitori, detti a
retroazione, di cui la figura 18 mostra l'idea che ne è alla
base del funzionamento.
Una rete logica sequenziale genera e presenta alla sua
uscita tutte le configurazioni binarie possibili secondo un
ordine stabilito dalla strategia implementata in tale rete.
Ognuna di queste configurazioni viene quindi applicata
all'ingresso di un DAC che le trasforma in analogico (vD).
La tensione così prodotta viene confrontata con la
tensione incognita, vi, per mezzo di un comparatore.
Quando l'uscita del comparatore cambia stato la rete logica interrompe la generazione delle sequenze
binarie e salva quella corrente che, nei limiti della risoluzione del convertitore, rappresenta la conversione
in digitale della tensione vi.
3.2.1 ADC a gradinata
Rappresenta il convertitore più semplice e più intuitivo di
questa categoria. La figura 19 ne illustra lo schema
elettrico. La rete logica sequenziale è costituita, in questo
caso, da un contatore binario che produce le configurazioni
digitali in binario naturale in ordine crescente. Queste
configurazioni sono applicate quindi all'ingresso di un DAC
la cui uscita, che indichiamo con vD, è costituita da una
pag. 13
Conversione dati (A/D) e (D/A)
tensione a gradinata crescente (vedi figura 20). La
vD viene quindi confrontata con la tensione
incognita, vi, grazie ad un comparatore ad anello
aperto. L'uscita di questo comparatore è applicata
ad uno dei due ingressi di una porta AND. L'altro
ingresso di tale porta è costituito da un segnale di
clock. Quando vD > vi l'uscita del comparatore si
porta a livello basso e con essa l'uscita della porta
AND. A questo punto si interrompe il conteggio
del contatore. Il dato è quindi pronto per essere
prelevato dal blocco successivo.
Il problema principale di tale convertitore è la sua
particolare lentezza. Non sapendo, infatti, quando
verrà interrotto il conteggio, in quanto tale evento
non è in alcun modo prevedibile, il tempo di
conversione sarà pari al tempo impiegato dal contatore per generare tutte le sequenze. Ovvero:
(18)
dove con TCK si è indicato l'intervallo di tempo tra due fronti attivi del segnale di clock e con n il numero
di bit del convertitore.
3.2.2 ADC ad inseguimento
Questo
1.
2.
ADC è ottenuto da quello appena esaminato grazie a due variazioni:
sostituzione del contatore in avanti con uno UP/DOWN;
controllo della direzione del conteggio per mezzo dell'uscita del comparatore.
La figura 21 mostra lo schema di questo ADC.
Esso può funzionare in free running: ciò significa
che, una volta attivato, aggiorna continuamente il
dato digitale in uscita senza la necessità di fornire
ulteriori comandi.
Non è possibile fornire il tempo di conversione di
questo ADC. E' invece opportuno definire il
massimo slew rate ammissibile dalla tensione vi.
Con ciò si intende la massima variazione del
segnale di ingresso che l'ADC è in grado di
seguire senza sganciarsi dal segnale vi. Dal
momento che l'uscita del convertitore può al
massimo variare di un quanto, ogni periodo del segnale di clock, si avrà che il massimo slew rate
ammissibile dalla vi dovrà rispettare la condizione:
(19)
E' utile osservare, in conclusione, che il valore
iniziale assunto dalla vD è pari alla metà della
tensione di fondo scala: ciò per ridurre i tempi
iniziali (medi) di aggancio. In figura 22 vi è una
possibile situazione di operatività del convertitore.
E' anche rappresentato il caso in cui il convertitore
si sgancia dalla tensione di ingresso in quanto
pag. 14
Conversione dati (A/D) e (D/A)
quest'ultima varia troppo rapidamente.
3.2.3 ADC ad approssimazioni successive
E' tra i convertitori più usati in quanto consente di ottenere brevi tempi di conversione a fronte di una
struttura circuitale abbastanza semplice. La
figura 23 mostra lo schema di questo
convertitore che rispetta, come per i
precedenti due, la logica di funzionamento
degli ADC a retroazione. La principale
differenza è costituita dall'architettura della
logica sequenziale di controllo formata da
un registro ad approssimazioni successive
(S.A.R.). Il funzionamento di questo
registro è basato sul noto algoritmo di
ricerca binaria (molto usato in informatica
per cercare un elemento all'interno di una
lista ordinata). Nel nostro caso si tratta di
cercare in quale quanto cade il valore della
tensione incognita di ingresso.
La conversione ha inizio quando viene
attivato il segnale SOC (Start Of Conversion). Successivamente viene caricata nel S.A.R. una parola
binaria di bit posti tutti eguali a zero tranne l'MSB. Tale parola viene convertita dal DAC in vD e
vi. Se vD < vi la logica di controllo mantiene ad 1 l'MSB e pone ad
1 il bit immediatamente successivo (bn-2). Se invece vD > vi la logica di controllo pone il bit MSB a zero
e, comunque, porta ad 1 il bit immediatamente successivo (bn-2). Tale parola viene quindi passata al DAC
che la converte in vD; successivamente avviene il confronto con la tensione incognita vi. Sulla base
confrontata con la tensione incognita
dell'esito di tale confronto avremo:
•
•
bn-2 = 1 se vD < vi
bn-2 = 0 se vD > vi
Il processo si ripete fino al bit LSB. In questo modo occorreranno n cicli di clock per l'esecuzione
dell'intera conversione più un altro ciclo per le varie operazioni di lettura del dato digitale, inizializzazione
di una nuova conversione, ecc.. Quindi:
(20)
In figura 24 è descritto un esempio di
funzionamento di questo ADC. Si fa
l'ipotesi di VFS = 10 V ed n =
Calcoliamo il valore del quanto:
8 bit.
La prima soglia di commutazione, per
le note ragioni di minimizzazione
dell'errore di quantizzazione, sarà
posta a Q/2 = 19.55 mV. La soglia
successiva sarà distante Q da questa e
così via per tutte le altre.
pag. 15
Conversione dati (A/D) e (D/A)
In figura 25 sono mostrate le prime soglie
(delle 255 complessive).
Supponiamo che la tensione incognita da
convertire sia pari a 5.75 V. Per vedere in
quale intervallo cade applichiamo la formula:
(21)
(10010011)
dove con le parentesi quadre chiuse superiormente ed aperte inferiormente si è indicata l'operazione di
approssimazione all'intero superiore (parte intera superiore).
Il 147° intervallo, di ampiezza
Q=39.1
mV, è indicato in figura 26.
Si può osservare che la vi cade proprio in
tale intervallo (più precisamente nella
prima metà di questo). Seguiamo ora il
processo di conversione così come
descritto nella figura 24.
Avviato il processo di conversione
(attivando la linea SOC) nel SAR viene posta la configurazione 1000000 che viene passata al DAC e
convertita in:
vD =128 Q = 128 · 39.1 · 10-3 = 5.0048 V
Essendo vD <
convertita in:
vi
il convertitore salva l'MSB. La configurazione successiva è:
11000000
che viene
vD =192 Q = 192 · 39.1 · 10-3 = 7.5072 V
Essendo vD >
convertita in:
vi
il convertitore non salva il bit
b6.
La configurazione successiva è:
10100000
che viene
vD =160 Q = 160 · 39.1 · 10-3 = 6.256 V
per cui anche
b5 non viene mantenuto. Si passa alla configurazione: 10010000 convertita dal DAC in:
vD =144 Q = 144 · 39.1 · 10-3 = 5.6304 V
questa volta il bit
b4 viene salvato. Si passa quindi alla configurazione: 10011000 convertita dal DAC in:
vD =152 Q = 152 · 39.1 · 10-3 = 5.9432 V
che essendo maggiore di
10010100, convertita in:
vi
non produce il salvataggio di
b3.
Si pone quindi ad 1 il bit
b2
ottenendo:
vD =148 Q = 148 · 39.1 · 10-3 = 5.7868 V
pag. 16
Conversione dati (A/D) e (D/A)
vD > vi e il
10010010 convertita dal DAC in:
Anche in questo caso
convertitore non salva il bit
b2.
Si passa quindi alla configurazione:
vD =146 Q = 146 · 39.1 · 10-3 = 5.7086 V
vi produce
10010011, convertita dal DAC in:
che essendo inferiore a
il salvataggio di
b1.
Si perviene, quindi, all'ultima configurazione:
vD =147 Q = 147 · 39.1 · 10-3 = 5.7477 V
che essendo inferiore a
vi
produce il salvataggio di
b0.
Tale configurazione è quindi disponibile in uscita
all'ADC per la lettura da parte del blocco successivo.
4. Parametri e caratteristiche dei convertitori A/D
I parametri di funzionamento di un ADC sono descritti nei data sheet dei relativi costruttori ed
informano il progettista sui limiti di funzionamento (massima potenza dissipabile, resistenza d'ingresso,
massima variazione della tensione di ingresso, ecc.) di questi dispositivi.
4.1 Errori di offset, guadagno e linearità
Ciascuno di questi errori, analogamente a quanto già visto per i DAC, descrive lo scostamento del
comportamento reale rispetto a quello ideale. I grafici che mostrano questi effetti si ottengono da quelli
visti per i DAC invertendo, tra loro, le variabili degli assi cartesiani. Anche in questo caso sono possibili
le compensazioni degli errori di offset e di guadagno. Compensazioni che, invece, non sono previste per
gli errori di linearità e di linearità differenziale.
4.2 Errore di quantizzazione
Sappiamo che l'ADC non può generare in uscita un codice in corrispondenza di ciascuno degli infiniti
valori della tensione applicata all'ingresso. Ciò significa che nella codifica del segnale di ingresso viene
introdotto un errore. Si tratta dell' errore di quantizzazione. Per minimizzare tale errore, riducendolo a ±
1/2 LSB, si fissa la soglia di commutazione da un codice al successivo a metà dell'intervallo di
quantizzazione. Il costruttore indica, nel proprio data sheet, la modalità operativa per ottenere ciò.
4.3 Tempo di conversione
Il conversion time è il tempo che l'ADC impiega per effettuare la conversione, in digitale, della tensione
analogica applicata al suo ingresso (tconv).
4.4 Velocità di conversione
Viene misurata in Hz ed indica il numero di conversioni eseguite nell'unità di tempo. Per la sua misura si
tiene conto di tutti i ritardi intrinseci dell'ADC. Il costruttore indica questo parametro con il nome di
conversion rate.
4.5 Dinamica di ingresso
Per garantire il corretto funzionamento dell'ADC (ed anche la sua non distruzione fisica) è necessario
che la tensione analogica applicata all'ingresso sia contenuta all'interno di un intervallo denominato input
voltage range.
pag. 17
Conversione dati (A/D) e (D/A)
4.6 Impedenza di ingresso
Il progettista deve prendere in considerazione tale parametro quando collega l'ingresso dell'ADC
all'uscita del blocco precedente (generalmente si tratta del circuito di condizionamento di un trasduttore).
E' un valore che negli ADC commerciali varia da qualche kΩ a qualche centinaio di MΩ.
4.7 Slew rate
Questo parametro è definito come la massima variazione della tensione analogica d'ingresso, nel tempo,
che consente la fornitura, in uscita, di codici corretti.
4.8 Codici mancanti
ADC a retroazione, nei quali è presente un DAC, si può presentare l'errore dei codici mancanti. Si
tratta dell'impossibilità, da parte dell'ADC, di generare in uscita il corretto codice in corrispondenza di
Negli
uno o più valori della tensione analogica applicata all'ingresso. La ragione di questa impossibilità è dovuta
all'errore di non monotonicità del DAC interno. Per fare un esempio di codice mancante consideriamo
l'ADC a gradinata di figura 19 (pag. 13) ipotizzando, per semplicità, che il numero di bit sia pari a 3.
4V. In tal modo avremo un quanto pari a 0.5V.
2.1V. La corretta codifica dovrebbe fornire la
sequenza 100. Infatti, dalla (17), abbiamo che in corrispondenza di tale sequenza si ha, per la vi:
Supponiamo, inoltre, che la tensione
VFS
sia pari a
Supponiamo, ancora, che la tensione incognita valga
vi = Q · N0 ± εmax = 0.5 · 4 ± 0.25 [V]
a tale sequenza, pertanto, corrisponde un intervallo di
valori per la vi compreso tra 1.75 e 2.25. Supponiamo che
il DAC interno sia caratterizzato da una transcaratteristica
ideale come quella di figura 27 (si noti la sopraelevazione
di mezzo quanto di tutta la curva, necessaria per situare le
soglie tra i codici di uscita a metà degli intervalli di
quantizzazione); quando il contatore binario raggiunge la
sequenza 100 e la passa all'ingresso del DAC questi, alla
sua uscita, fornirà una tensione pari a 2.25V. In quel
momento il comparatore passerà dal livello alto a quello
basso e si interromperà il conteggio.
Se invece la transcaratteristica del DAC è quella di figura
28 (nella quale si nota un errore di non monotonicità) si
può osservare che la tensione in uscita dal DAC in
corrispondenza della sequenza 100 applicata all'ingresso
è inferiore a quella che nominalmente si dovrebbe avere
2.25V). L'uscita del comparatore si manterrà, pertanto,
al livello alto e si dovrà attendere la sequenza
successiva, 101, per avere l'interruzione del conteggio.
La sequenza 100, quindi, non si verificherà mai: è,
appunto, una situazione di codice mancante.
pag. 18