# Convertitore analogico-digitale

Un convertitore analogico-digitale (in inglese Analog to Digital Converter, ADC) è un circuito elettronico che converte un segnale analogico con andamento continuo (ad es. una tensione) in una serie di valori discreti e quindi digitale (vedi teoria sulla conversione analogico-digitale). Il convertitore digitale-analogico o DAC compie l'operazione inversa.

## Risoluzione

La risoluzione di un ADC indica il numero di valori discreti che può produrre. È usualmente espressa in bit. Per esempio, un ADC che codifica un ingresso analogico in 256 livelli discreti ha una risoluzione di 8 bit, essendo 2$^8$ = 256. La risoluzione può anche essere definita elettricamente, ed espressa in volt. La risoluzione in volt di un ADC è uguale alla minima differenza di potenziale tra due segnali che vengono codificati con due livelli distinti adiacenti.
Alcuni esempi possono aiutare:
* Esempio 1:
** Range compreso tra 0 e 10 volt
** Risoluzione dell'ADC di 12 bit: 2$^{12}$ = 4096 livelli di quantizzazione
** La differenza di potenziale tra due livelli adiacenti è 10 V / 4096 = 0,00244 V = 2,44 mV
* Esempio 2:
** Range compreso tra -10 e 10 volt
** Risoluzione dell'ADC di 14 bit: 2$^{14}$ = 16384 livelli di quantizzazione
** La differenza di potenziale tra due livelli adiacenti è 20 V / 16384 = 0,00122 V = 1,22 mV
Nella pratica, la risoluzione di un convertitore è limitata dal rapporto segnale/rumore (S/N ratio) del segnale in questione. Se è presente troppo rumore all'ingresso analogico, sarà impossibile convertire con accuratezza oltre un certo numero di bit di risoluzione. Anche se l'ADC produrrà un valore, questo non sarà accurato essendo i bit meno significativi funzione del rumore e non del segnale. Il rapporto S/N dovrebbe essere di circa 6 dB per bit.

## Tipi di risposta

La maggior parte degli ADC sono lineari, il che significa che sono progettati per produrre in uscita un valore che è funzione lineare del segnale di ingresso. Un altro tipo comune di ADC è quello logaritmico, che è usato in sistemi di comunicazioni vocali per aumentare l'entropia del segnale digitalizzato.
L'istogramma di un segnale vocale ha la forma di due curve esponenziali inverse, l'ADC non lineare cerca, quindi, di approssimare questo con una funzione di densità di probabilità quadrata come a-law o μ-law, funzioni logaritmiche. Il segnale distorto ha un range dinamico inferiore, e la sua quantizzazione aggiunge meno rumore al segnale originale rispetto a quanto farebbe un quantizzatore lineare con la stessa risoluzione in bit.
L'accuratezza dipende dall'errore della conversione. Questo errore è formato da due componenti: un errore di quantizzazione e un errore di non-linearità (o infedeltà alla curva desiderata nel caso di ADC volutamente non-lineari). Questi errori sono misurati con un'unità chiamata LSB (least significant bit = bit meno significativo) ed indica fino a che punto i bit rappresentano segnale e quanti siano solo rumore. In un ADC a 8 bit, un errore di 1 LSB è pari ad un errore di 1/256 ossia circa del 0,4%; è un modo per dire che l'ultimo bit è casuale. In un ADC a 16 bit con un errore di 4 LSB significa che l'errore risulterà pari a 4/(2$^{16}$) ossia 0,006%.
L'errore di quantizzazione è dovuto alla risoluzione finita dell'ADC ed è una imperfezione intrinseca di tutti i tipi di ADC. La grandezza dell'errore di quantizzazione su un campione è compresa tra zero e un LSB.
Tutti gli ADC soffrono di errori di non-linearità causati da imperfezioni fisiche, facendo deviare la loro uscita da una funzione lineare (o da un'altra funzione, in caso di ADC volutamente non-lineari). Questi errori possono a volte essere attenuati con una calibrazione.
Parametri importanti per la linearità sono non-linearità integrale (INL) e non linearità differenziale (DNL).

## Frequenza di campionamento

Il segnale analogico è tempo-continuo ed è necessario convertirlo in un flusso di valori discreti. È quindi necessario definire una frequenza alla quale campionare i valori discreti del segnale analogico. Questa frequenza è la frequenza di campionamento (sampling rate in inglese) del convertitore.
L'idea chiave è che un segnale di banda limitata che varia con continuità può essere campionato e poi riprodotto esattamente dai valori tempo discreti con un algoritmo di interpolazione se la frequenza di campionamento è almeno pari al doppio della frequenza massima del segnale (teorema di Nyquist-Shannon). La precisione tuttavia è limitata dall'errore di quantizzazione.
Poiché nella pratica un ADC non può effettuare una conversione istantanea, il valore d'ingresso deve necessariamente rimanere costante durante il tempo in cui il convertitore esegue la conversione (chiamato tempo di conversione o conversion time). Un circuito d'ingresso chiamato sample/hold svolge questo compito - spesso si usa un condensatore per immagazzinare la tensione del segnale in input e un interruttore elettronico per disconnettere il condensatore dall'ingresso. Molti ADC realizzati su circuiti integrati realizzano il sottosistema di sample/hold internamente.

## Aliasing

Tutti gli ADC lavorano campionando il proprio input ad intervalli discreti di tempo. L'output di conseguenza è un'immagine incompleta dell'input e non c'è modo di sapere, guardando soltanto l'output, che valori abbia assunto l'input tra due istanti di campionamento adiacenti. Se è noto che l'ingresso varia lentamente confrontato con la frequenza di campionamento, allora si può presumere che esso sia sempre contenuto tra i due estremi in quell'intervallo.
Il risultato diretto che si osserva riproducendo un segnale campionato ad una frequenza inferiore della sua banda è che le componenti del segnale a frequenze superiori verranno riprodotti a frequenza diverse, inferiori alla frequenza di campionamento. Ad esempio, campionando a 1.5 kHz un'onda sinusoidale a 2 kHz verrà trasformata in una onda a 500 Hz (ed in opposizione di fase). Il problema dell'aliasing può essere osservato anche visivamente, basta far caso che in televisione o al cinema (dove l'immagine è campionata a 25 Hz), oggetti in rotazione a frequenza superiori, come pale di elicottero o ruote di automobili, spesso ci appaiano girare lentamente, o addirittura al contrario, rispetto a quanto ci si aspetterebbe.
Per eliminare l'aliasing, l'ingresso di un ADC deve essere filtrato (low-pass) per rimuovere le frequenze superiori a quelle di campionamento. Questo filtro è chiamato anti-aliasing ed è essenziale in un sistema ADC.

## Dither

Il dithering consiste nell'introdurre artificialmente del rumore nel segnale di ingresso al fine di migliorare la qualità di conversione superando la limitazione di una risoluzione finita. Anche se può sembrare assurdo che del rumore possa migliorare la qualità si può mostrare come questo sia vero con un semplice esempio numerico.
Supponiamo che il segnale di ingresso sia sempre pari e costante al valore di 0,34 volt e che il nostro convertitore abbia una risoluzione di 0,1 volt. In assenza di rumore il segnale sarà campionato e approssimato come una sequenza di valori pari a 0,3 V, il livello più vicino del quantizzatore. Se invece sommiamo del rumore bianco, cioè un segnale con valore medio nullo, con una varianza pari a 0,1 V (pari alla risoluzione del convertitore, 1LSB) avremo che il segnale oscillerà ora tra 0,24 V e 0,44 V con il risultato che i campioni avranno i valori di 0,2, 0,3 o 0,4 volt. Per le proprietà statistiche del rumore, il valore medio dei campioni, invece di 0,3 volt, sarà di 0,34 V: in pratica il rumore ha annullato l'errore medio.
Osservando la figura, è chiaro come l'errore in assenza di dither si sommi nel tempo essendo le due linee spesse parallele mentre la linea sottile, oscillando attorno al valore esatto, lo approssima in valor medio sempre di più al passare del tempo.

## Strutture ADC

In elettronica ci sono cinque modi comuni di implementare un ADC:
* Un ADC a conversione diretta (Flash ADC) ha un comparatore per ognuno dei livelli di voltaggio riconosciuti dal quantizzatore. Un ADC flash ad 8-bit avrà 2$^8$-1 = 256-1 = 255 comparatori. Il segnale di ingresso arriva a tutti i comparatori. Porteranno in uscita un valore di saturazione positivo tutti quelli in cui la tensione del segnale di ingresso è maggiore di quella di soglia per quel determinato bit. Attraverso un priority encoder solo il maggiore di essi attiverà la propria uscita, quello del livello corrispondente. I convertitori flash sono i più veloci in assoluto e sono usati per campionare segnali in alta frequenza, fino a diversi GHz. Poiché il numero di comparatori necessari cresce esponenzialmente con il numero dei bit richiesti, i convertitori flash raramente hanno più di 8 bit di risoluzione.
* Un ADC ad approssimazioni successive (SAR - Successive Approximation Register) usa un comparatore e un convertitore digitale-analogico, ad ogni passaggio l'ADC prova a impostare un bit, partendo dal MSB (Most Significant Bit, bit con peso maggiore) e usando il DAC confronta il segnale campionato con il segnale di ingresso in feedback. Questo convertitore individua un bit ad ogni iterazione in una sorta di ricerca binaria e la risoluzione è limitata solo dalle esigenze di sample-rate e dal rumore in ingresso.
* Un ADC ad inseguimento (a codifica-delta) ha un contatore up-down collegato ad un DAC. Un comparatore confronta il segnale di uscita del DAC con il segnale di ingresso e interrompe il conteggio quando i valori sono abbastanza vicini tra loro. Quando questo succede il contatore contiene il livello quantizzato del segnale. Questi convertitori sono usati spesso per leggere grandezze fisiche che non variano con elevata velocità ma che devono essere lette con molta precisione.
* Un ADC a doppia rampa (Dual Slope, o ad integrazione) produce un segnale a dente di sega che sale, per poi cadere velocemente a zero. Il segnale di ingresso viene integrato facendo salire la rampa mentre un contatore segna il tempo. Quando la rampa raggiunge un livello noto il conteggio termina e indica il valore quantizzato del segnale. Questo tipo di ADC è sensibile alla temperatura poiché può alterare il clock usato per segnare il tempo o alterare il voltaggio di riferimento per la rampa e deve essere ricalibrato spesso.
* Un ADC a pipeline (noto anche come subranging quantizer) è simile al ADC ad approssimazioni successive ma invece di individuare un bit alla volta individua un blocco di bit; in un primo passo avviene una conversione grezza del segnale che viene poi riconvertito da un DAC; quindi si quantizza la differenza tra il segnale originario e quello campionato, eventualmente si può procedere a quantizzazioni sempre più fini con passi successivi. Se ad esempio supponiamo di avere un quantizzatore a 4-bit che operi con un range di [0÷2,56 V] (quindi con una risoluzione di 0,16 V) e un altro quantizzatore a 4-bit che operi però tra [0 V ÷ 0,16 V] con una risoluzione di 0,01 V. Dopo aver quantizzato il segnale di ingresso con il primo quantizzatore la differenza tra il segnale quantizzato e quello di ingresso sarà al massimo quello della risoluzione, e può essere letto dal secondo quantizzatore. Se il segnale di ingresso era pari a 2.50 V, il primo campionatore identificherà il livello 15 (1111 in binario), che corrisponde ad un valore di 2,40 V, la differenza di 0,1 V viene quantizzata dal secondo con il livello 10 (1010 in binario); unendo i codici si ottiene 1111 1010 ossia un valore a 8 bit.

## Difetti del convertitore analogico-digitale

I convertitori AD presentano alcuni errori, il primo fra tutti è legato al processo di campionamento e di quantizzazione. Esso infatti prevede la discretizzazione ad un valore ben noto, di tutti i campioni che ricadono in un intervallo di tensione, detto quanto. Supponendo una dinamica di ingresso di valore S su un convertitore ad n bit, il quanto ha valore:
    $\Delta s={\frac {s}{2^{n}}}$
Per ridurre gli errori, la discretizzazione viene effettuata considerando ogni campione come valore centrale avendo così un errore massimo del valore del quanto. Si definisce quindi l'errore di quantizzazione pari alla metà del quanto:
    $\Delta s={\frac {1}{2}}\cdot {\frac {s}{2^{n}}}={\frac {s}{2^{n+1}}}$
Altri errori classici nei convertitori AD sono:
* Errore di non linearità assoluta
* Errore di guadagno
* Errore differenziale
* Errore di offset
Sul datasheet di un convertitore viene generalmente indicato il cumulo di tutti gli errori in un "Errore totale" rappresentato in frazione di LSB.

## Tipi di convertitori analogico-digitali

I convertitori analogico-digitali si dividono in:
* veloci
* lenti (ma più precisi)
Esistono, tra l'altro, vari tipi di convertitori analogico-digitali adatti ciascuno per uno scopo:
* a 11 kHz per la registrazione della voce umana;
* a 22 kHz per la registrazione su nastro;
* a 44 kHz per la registrazione su CD
Fino alla frequenza di campionamento di 200 kHz è possibile utilizzare i convertitori Sigma-Delta che garantiscono la massima precisione e filtri anti-aliasing integrati, per frequenze tra 200 kHz e 10 MHz, invece, si utilizzano normalmente i convertitori SAR in grado di ricostruire con fedeltà i segnali non naturali (come onde quadre - PWM) ma che richiedono particolare attenzione per la riduzione del fenomeno dell'aliasing.