I convertitori analogico/digitali (ADC) fanno l'operazione inversa dei DAC, cioè convertono un segnale analogico (in genere una tensione) in un numero intero codificato in binario. Nella conversione gli infiniti valori che può assumere il segnale analogico sono tradotti un numero limitato di combinazioni di bit 1); questo comporta inevitabilmente un errore di quantizzazione, definito come differenza tra il valore analogico in ingresso e quello corrispondente alla sua rappresentazione in digitale. Ogni combinazione di bit rappresenta un intero intervallo di valori analogici e l'ampiezza di questo intervallo, dipendente dal numero di bit dell'ADC, è il quanto di conversione Q del convertitore A/D. La figura 1 aiuta a chiarire questi concetti: se Vi è la tensione in ingresso all'ADC e Do il dato digitale in uscita, vale:
`V_i = Q cdot D_o +- epsilon`
dove Q è il quanto di conversione e ε l'errore di quantizzazione.
Se in un DAC la tensione in uscita rappresenta esattamente il dato digitale, negli ADC non c'è più una corrispondenza esatta: dal dato digitale in uscita non è possibile risalire al valore analogico in ingresso ma solo all'intervallo in cui è compreso. Negli ADC gli intervalli di quantizzazione sono centrati in corrispondenza dei multipli del quanto Q; questo permette di minimizzare l'errore di quantizzazione, che al massimo sarà Q/2 (la figura 2 mostra come questa scelta sia da preferire rispetto a quella di delimitare gli intervalli in corrispondenza dei multipli di Q)2).
Anche nei convertitori A/D, come nei DAC, la risoluzione è indicata da un numero di bit n in cui è suddivisa una tensione di fondo scala VFS, per cui vale:
`Q=V_(FS)/2^n`
e la tensione in ingresso Vi sarà convertita in una delle 2n possibili combinazioni di bit. La figura 3 mostra la caratteristica di trasferimento di un ADC a 3 bit3); osserviamo che:
Interpretando l'errore di quantizzazione come rumore è possibile caratterizzare le prestazioni di un convertitore A/D con un rapporto segnale/rumore definito così:
`(S/N)_(dB)=20 log (V_(ieff)/V_(reff))`
dove Vieff e Vreff sono i valori efficaci del segnale in ingresso e dell'errore di quantizzazione inteso come rumore. Il valore effettivo di questo parametro dipenderà dalla risoluzione dell'ADC - quindi dal numero di bit - e dall'ampiezza del segnale in ingresso.
L'interpretazione dell'errore di quantizzazione come rumore sovrapposto al segnale in ingresso non è intuitiva ma può essere spiegata così:
Con queste premesse è possibile esprimere il valore efficace del rumore in funzione del numero di bit e della tensione di fondo scala dell'ADC e calcolare il rapporto segnale/rumore.
Il funzionamento di tutti i convertitori A/D è basato sull'uso dei comparatori. Il comparatore infatti ha un'uscita a due livelli e può essere pensato come un convertitore analogico/digitale a 1 bit: se l'ingresso supera la tensione di soglia l'uscita è alta, altrimenti è bassa. Scegliendo opportunamente la tensione di soglia (metà della tensione massima in ingresso) in uscita abbiamo una rappresentazione digitale del segnale in ingresso, anche se con una risoluzione di un solo bit.
I convertitori A/D commerciali hanno una risoluzione di almeno 8 bit ed esistono in due diverse tipologie:
Le due soluzioni presentano vantaggi e svantaggi:
La figura 9 mostra lo schema di principio di un ADC flash a 3 bit. Osserviamo che:
Gli ADC flash sono intrinsecamente veloci: il tempo di conversione, somma del tempo di commutazione dei comparatori e di quello di propagazione della rete logica, può scendere fino a poche decine di nanosecondi. Questa caratteristica li rende adatti per tutte quelle applicazioni dove la conversione deve avvenire in tempo reale (ad esempio la codifica audio/video). Il difetto principale è che con risoluzioni elevate la complessità circuitale dell'integrato diventa proibitiva e il costo elevato (per un ADC a 12 bit servono 212 - 1 = 4095 comparatori!).
Questa tipologia di convertitore A/D è la più usata in assoluto perché:
I convertitori ad approssimazioni successive sono ADC a retroazione che usano una rete sequenziale detta SAR (Successive Approximations Register) per generare una tensione di riferimento del comparatore via via più vicina alla tensione in ingresso. Per individuare la giusta combinazione di bit non si provano tutti i possibili valori digitali7) ma si usa un metodo molto più efficiente: l'algoritmo di ricerca dicotomica. Questo algoritmo è usato per per trovare un elemento in una sequenza ordinata e funziona così:
Il SAR implementa questo algoritmo in questo modo:
Questo metodo è particolarmente efficiente perché la conversione avviene nel tempo necessario a confrontare n bit (quindi nell'ordine di n·T con T periodo di clock del SAR); se avessimo esaminato uno a uno tutti i possibili valori fino a trovare quello giusto avremmo avuto un tempo di conversione non costante che nel peggiore dei casi - a fondo scala - è nell'ordine di 2n·T (con 8 bit 256·T invece che 9·T !).
Per capire come funziona l'algoritmo esaminiamo la figura 11, riferita ad un ADC a 8 bit con tensione di fondo scala 10 Volt e tensione di ingresso pari a 6 Volt. Per ognuno degli 8 bit viene fatto un confronto tra la tensione di ingresso e una tensione di riferimento ottenuta impostando il bit a 1; ad ogni passaggio si dimezza l'intervallo di ricerca, passando da 256 valori a 128, 64, 32 … e così via fino ad individuare, dopo 8 tentativi, il quanto che contiene la tensione in ingresso.
I convertitori ad integrazione vengono usati solo negli strumenti digitali perché sono molto lenti e hanno un tempo di conversione non costante. A parte questo sono semplici, economici e precisi; possono raggiungere risoluzioni elevate e hanno una buona immunità ai disturbi8).
Il convertitore a integrazione più diffuso è quello a doppia rampa, rappresentato in figura 12. Nello schema riconosciamo:
Considerando Vi costante nel breve periodo, il principio di funzionamento è il seguente:
L'andamento della carica e scarica è rappresentato in figura 12. Qualche osservazione:
Il dato digitale che rappresenta la tensione analogica incognita Vi non dipende né dal tempo di clock né da RC e si calcola con:
`N = V_i/V_R 2^n`
Per un buon funzionamento è necessario che R e C siano costanti nel breve periodo e che la tensione di riferimento VR sia stabilizzata.
Gli argomenti di questo paragrafo competono alla materia di sistemi. Di seguito solo qualche cenno sui pin presenti negli ADC commerciali9).
Per potersi interfacciare a un bus un ADC deve avere un'uscita 3-state, dove oltre ai due stati logici 0, 1 ce n'è un terzo ad alta impedenza che scollega il dispositivo. Il pin OE (Output Enable) presente negli ADC serve ad abilitare l'uscita e ad uscire dallo stato di alta impedenza. Nei dispositivi sequenziali, come i convertitori ad approssimazioni successive, sono presenti anche il pin di ingresso SC (Start Conversion) e quello di uscita EOC (End Of Conversion) che servono rispettivamente ad avviare la conversione e a segnalarne la fine.
Nel paragrafo 2 abbiamo visto come è possibile caratterizzare l'errore di quantizzazione di un ADC con un rapporto segnale/rumore. Questo parametro, che dipende dal numero di bit e dall'ampiezza del segnale in ingresso, può essere confrontato con un rapporto segnale/rumore vero e proprio dovuto a disturbi. Da questo confronto è possibile stabilire se l'impiego di un ADC con una determinata risoluzione è effettivamente vantaggioso o se i disturbi non permettono di sfruttarne appieno la risoluzione. Questa valutazione si fa calcolando il numero di bit effettivi - detto ENOB (Effective Number Of Bits) - che si ottiene sostituendo il rapporto segnale/rumore dovuto ai disturbi nella relazione che esprime il rapporto segnale/rumore dovuto all'errore di quantizzazione. Se l'ENOB è minore del numero di bit dell'ADC il convertitore non è sfruttato appieno ed è inutile scegliere un ADC con risoluzione maggiore.
Fino a qui abbiamo considerato il problema della conversione A/D di segnali costanti nel tempo, almeno nel breve periodo. In questo paragrafo vedremo quali problemi si pongono se il segnale da convertire cambia nel tempo e quali sono le soluzioni adottate negli ADC.
Nella conversione analogico/digitale il segnale in ingresso viene reso:
La quantizzazione infatti approssima l'ampiezza del segnale analogico rappresentando infiniti valori con un numero finito di combinazioni di bit10). Questa conversione però non avviene istantaneamente e il dato digitale viene aggiornato solo al termine della conversione; allora in uscita è presente un segnale che è discreto anche nel tempo. In pratica negli ADC il segnale analogico viene campionato, cioè prelevato ad intervalli regolari di tempo, e convertito in digitale. Si pongono allora due problemi:
La risposta al primo problema è data dal teorema del campionamento di Shannon, che dice che è possibile ricostruire un segnale a partire dai suoi campioni se la frequenza di campionamento fc è almeno doppia rispetto alla frequenza massima fMAX del segnale, intesa come il limite superiore dello spettro del segnale rappresentato nel domino della frequenza secondo il teorema di Fourier11). Questa condizione è espressa analiticamente con:
`f_c >= 2 f_(MAX)`
La dimostrazione del teorema di Shannon è molto complicata ma intuitivamente può essere giustificata così:
Il teorema di Shannon ci dice qual è la frequenza minima con cui campionare un segnale per ricostruirlo completamente, cioè la frequenza di campionamento minima per non perdere informazione. A frequenze inferiori si verifica il fenomeno detto aliasing illustrato in figura 16: campionando con una frequenza troppo bassa si ottengono dei campioni che non corrispondono solo al segnale campionato - la sinusoide con frequenza maggiore - ma anche ad una sinusoide a bassa frequenza che non era presente in ingresso; queste componenti estranee non permette di ricostruire univocamente il segnale dai suoi campioni.
La figura 17 illustra cosa succede se si campiona il segnale a frequenze maggiori di fMAX, dove (a) rappresenta il segnale da campionare, (b) il suo spettro nel dominio della frequenza, (c) è il segnale campionato e (d) il suo spettro. Osserviamo che lo spettro del segnale campionato contiene, oltre allo spettro originale, anche una serie di spettri immagine di ampiezza decrescente che replicano lo spettro originale e il suo simmetrico a frequenze multiple della frequenza di campionamento. Allora per ricostruire il segnale originale non è sufficiente campionare ad una frequenza adeguata ma bisogna anche eliminare gli spettri immagine indesiderati con un filtro passa-basso13). Il progetto del filtro risulterà più facile se fc >> fMAX, perché lo spettro immagine risulterà più distanziato.
Per non essere costretti a campionare a frequenze troppo elevate si può utilizzare un filtro anti-aliasing da applicare al segnale in ingresso prima del campionamento. Questo è utile per eliminare l'aliasing dovuto ad eventuali disturbi in alta frequenza ma anche quando la parte più significativa del segnale è concentrata in un range di frequenze limitato. Questa tecnica è impiegata ad esempio nella telefonia dove, non essendo richiesta una buona qualità del segnale audio, la banda è ridotta da 20 KHz a circa 3 kHz con un filtro anti-aliasing; questo permette di campionare il segnale a 8 kHz invece che a 40 kHz.
Applicando il teorema di Shannon e considerando che la frequenza di campionamento fc è legata al tempo di conversione tconv dell'ADC14), si può ricavare la frequenza di Nyquist15):
`f_B = 1/(2 t_(conv))`
Questa frequenza esprime la banda passante (teorica) di un ADC, cioè la frequenza massima del segnale in ingresso che permette di campionare e quantizzare il segnale senza perdita di informazione.
All'inizio del paragrafo ci siamo chiesti cosa succede se il segnale analogico cambia mentre avviene la conversione. Nel caso degli ADC ad approssimazioni successive la situazione è illustrata dalla figura 18: il dato digitale non corrisponde al valore del segnale a inizio conversione ma al suo valore finale. Conoscendo il tempo di conversione è possibile calcolare la frequenza massima che deve avere il segnale per limitare l'errore a un quanto, ma se non si vuole limitare pesantemente la banda dell'ADC conviene aggirare il problema “bloccando” il valore del segnale durante la conversione con un circuito detto sample and hold.
La figura 19 mostra lo schema di un circuito sample and hold (S&H). Sono presenti due operazionali utilizzati come buffer e un condensatore collegato alla tensione di ingresso da un interruttore analogico. Il principio di funzionamento è il seguente:
Per un buon funzionamento del circuito sono necessari alcuni accorgimenti:
La modulazione è una soluzione tecnica che permette di veicolare l'informazione di un segnale modulante attraverso un altro segnale modulato più adatto alla trasmissione. Esistono varie tipologie di modulazione, sia analogiche che digitali, utilizzate nella trasmissione dei segnali e nelle telecomunicazioni.
La modulazione Sigma-Delta è usata nei convertitori A/C per ottenere buone prestazioni, sia come risoluzione che come immunità al rumore, a basso costo. La maggiore immunità al rumore è ottenuta grazie al sovracampionamento, cioè campionando il segnale a una frequenza multipla rispetto a quella richiesta dal teorema di Shannon. La figura 20 illustra gli effetti positivi del sovracampionamento: la potenza associata al rumore è distribuita uniformemente fino alla frequenza di campionamento (area chiara); sovracampionando si distribuisce la stessa potenza in una banda maggiore (area scura) che può essere filtrata alla frequenza massima del segnale originale per eliminare gran parte del rumore. Questi ADC sono a basso costo perché realizzati in forma integrata perlopiù con componenti digitali.
Un modulatore sigma-delta si comporta come un convertitore A/D a 1 bit. Il valore analogico in ingresso, sovracampionato, diventa un treno di impulsi di valore 0 o 1 il cui valore medio è proporzionale al segnale analogico in ingresso. Questa modulazione è chiamata anche PDM (pulse density modulation) perché la densità degli 1 nel segnale digitale rappresenta il valore analogico.
La figura 21 mostra lo schema di principio di un modulatore e demodulatore sigma-delta; il modulatore effettua la conversione A/D (trasforma la tensione Vi in un flusso di bit) mentre il demodulatore quella D/A (converte i dati digitali nella tensione Vo).
Il modulatore è un sistema a retroazione con un nodo sommatore (delta sta per differenza), un integratore (sigma sta per somma), un comparatore a soglia zero, un flip-flop e un DAC a 1 bit. Il principio di funzionamento è il seguente:
Il demodulatore è più semplice e contiene un convertitore D/A a 1 bit che trasforma il dato digitale in un segnale analogico a due livelli e un filtro passa basso che estrae il valore medio di questo segnale.
La figura 22 mostra l'uscita dell'integratore e il dato digitale corrispondente con tensione di ingresso zero e con tensione maggiore di zero:
Il paragrafo accenna soltanto ad argomenti molto complessi. Ci limitiamo a qualche osservazione sulla figura 23, che mostra lo schema di un sistema di elaborazione e/o trasmissione digitale:
Questa tecnica di trasmissione è detta PCM (vedi sezione 26A) e viene usata anche in telefonia.
L'ADC0801 (e i modelli simili, come l'ADC0804 disponibile in laboratorio) è un convertitore ad approssimazioni successive semplice ed economico con le seguenti caratteristiche:
La tensione di fondo scala è 5 Volt ma può essere regolata col pin VREF/2. L'uscita digitale è del tipo 3-state. I pin di controllo hanno il seguente significato:
Il convertitore può funzionare anche in una modalità di acquisizione continua, detta free-running o stand-alone, senza essere collegato ad un bus. Questa modalità si ottiene collegando il pin `bar(INT)` al pin `bar(WR)`, in modo che la fine di una conversione faccia partire immediatamente quella successiva. In questo caso occorre comunque abilitare l'integrato (`bar(CS)` a massa) e collegare un gruppo RC per il clock interno (per un'esperienza completa si veda lo schema proposto nella sezione non solo teoria 2 o nel datasheet).
Torna all'indice.