# ADC ad approssimazioni successive

Un ADC ad approssimazioni successive è un circuito elettronico per la conversione analogico-digitale. Questo tipo di circuito esegue la conversione basandosi su un meccanismo di ricerca dicotomica attraverso tutti i possibili livelli di quantizzazione fino alla determinazione del valore di conversione finale.

## Diagramma a blocchi

Sigle
* DAC = convertitore digitale-analogico
* EOC = fine della conversione (End Of Conversion)
* SAR = registro ad approssimazioni successive
* S/H = circuito di sample and hold
* V$_{in}$ = tensione d'ingresso
* V$_{ref}$ = tensione di riferimento

## Algoritmo

Il convertitore analogico-digitale ad approssimazioni successive è composto tipicamente da quattro sottocircuiti principali:
* Un circuito sample and hold per l'acquisizione della tensione d'ingresso (V$_{in}$).
* Un comparatore di tensione che confronta la tensione V$_{in}$ con l'uscita del DAC e trasmette il risultato al registro ad approssimazioni successive (SAR).
* Un registro ad approssimazioni successive progettato per emettere un codice digitale approssimato della V$_{in}$ al DAC interno.
* Un DAC interno la cui uscita torna al comparatore con un segnale analogico equivalente al codice digitale d'uscita del SAR da comparare con la V$_{in}$.
Il registro ad approssimazioni successive viene inizializzato in modo che il bit più significativo sia uguale al valore digitale 1. Questo codice viene mandato al DAC, il quale quindi manda un segnale analogico equivalente al valore digitale (V$_{ref}$/2) all'interno del comparatore per confrontarlo con il campione di tensione all'ingresso. Se questo segnale analogico è maggiore della V$_{in}$ allora al bit verrà assegnato il valore 0, altrimenti il bit verrà lasciato ad 1. Il procedimento viene quindi ripetuto periodicamente per tutti i bit successivi usati per la conversione, con una frequenza pilotata da un clock esterno e usando come tensione in ingresso la differenza di tensione misurata dal comparatore nel passo precedente, memorizzando ogni volta il risultato nella posizione corrispondente del SAR. Il codice risultante è un'approssimazione digitale del campione analogico d'ingresso e viene infine emesso dal DAC alla fine della conversione (EOC).
Matematicamente, la tensione di ingresso normalizzata si può esprimere come V$_{in}$ = xV$_{ref}$, con x appartenente all'intervallo [-1, 1]. L'obiettivo è quello di determinare il valore di x e convertirlo in un formato digitale con una precisione di 1/2$^n$.
L'algoritmo lavora come segue:
* Approssimazione iniziale: x$_0$ = 0.
* Approssimazioni i-esime x$_i$ = x$_{i-1}$ - s(x$_{i-1}$ - x)/2$^i$. dove, s(x) è la funzione segno (sgn(x)) (+1 for x ≥ 0, -1 for x < 0). Nel seguito si farà uso dell'induzione matematica che |x$_n$ - x| ≤ 1/2$^n$.
In base a questo algoritmo, un ADC ad approssimazioni successive richiede:
* Una tensione d'ingresso V$_{in}$.
* Una tensione di riferimento V$_{ref}$ per normalizzare l'ingresso.
* Un DAC che consenta di convertire in una tensione analogica le i-esime approssimazioni x$_i$.
* Un comparatore che implementi la funzione s(x$_i$ - x) confrontando la tensione proveniente dal DAC con la tensione d'ingresso.
* Un registro in cui memorizzare l'uscita del comparatore e applicare x$_{i-1}$ - s(x$_{i-1}$ - x)/2$^i$.

## SAR a redistribuzione di carica

Una delle più comuni implementazioni del SAR, cioè il SAR a redistribuzione di carica, fa uso di un DAC scalatore di carica. Questo DAC è composto semplicemente da una matrice pesata di condensatori connessi in parallelo. Il tasso di carica su ognuno dei condensatori viene usato per la ricerca binaria suddetta con l'ausilio di un comparatore interno al DAC e al SAR.
La conversione del DAC viene fatta secondo questi quattro passi di base:
* La matrice di condensatori viene completamente scaricata alla tensione di offset del comparatore, V$_{OS}$. In questo passo si fornisce una cancellazione automatica dell'offset.
* Tutti i condensatori all'interno della matrice fanno capo al segnale d'ingresso v$_{IN}$. La carica che si stabilisce in questo modo è uguale alle singole capacità moltiplicate per la tensione d'ingresso, a meno della tensione di offset.
* I condensatori sono quindi collegati in modo che questa carica venga applicata sull'ingresso del comparatore, dando una tensione all'ingresso pari a -v$_{IN}$.
* Il condensatore associato al bit più significativo viene collegato con un interruttore alla V$_{REF}$, che corrisponde al fondo scala dell'ADC. Essendo la matrice pesata, in questo modo si forma un partitore capacitivo 1:1 con il resto della matrice e la tensione all'ingresso del comparatore risulterà pari a -v$_{IN}$ più V$_{REF}$/2. In seguito a seconda che v$_{IN}$ sia maggiore o minore di V$_{REF}$/2 il comparatore ritornerà il valore 1 o 0, rispettivamente. Lo stesso processo viene ripetuto ad ogni ciclo di clock per ogni condensatore associato a un bit, fino a quando la tensione d'ingresso del comparatore coincide con la tensione di offset, nei limiti della risoluzione del convertitore.

### Uso con circuiti analogici non ideali

Quando implementato come circuito analogico, dove il valore di ogni bit non è perfettamente 2^N (ad esempio 1.1, 2.12, 4.05, ecc.), un SAR potrebbe non ritornare un valore ideale, dato che a causa di questo errore l'algoritmo di ricerca binaria potrebbe rimuovere un intervallo di valori che l'ingresso non noto può assumere. A seconda della differenza fra il funzionamento reale ed ideale, l'errore massimo può risultare pari ad alcuni bit meno significativi, specialmente se lo scostamento fra il valore reale di 2^N e quello ideale è grande per uno o più bit. Poiché il valore reale dell'uscita non è noto a priori, per garantire un funzionamento corretto è molto importante che la precisione del circuito analogico usato per implementare un ADC SAR sia molto vicina al valori ideali di 2^N.

### Vantaggi

In questo tipo di convertitori, il tempo di conversione è uguale al periodo di "n" cicli di clock per un ADC a n-bit, così il tempo di conversione è molto breve. Per esempio per un ADC a 10 bit con una frequenza di clock di 1 MHz, il tempo di conversione sarà 10*10^-6 cioè soltanto 10 microsecondi.
Il tempo di conversione è costante e indipendente dall'ampiezza del segnale analogico V alla base A.

## Considerazioni

Questo tipo di convertitore consente di ricostruire segnali con veloci variazioni (come onde quadre) senza fenomeni di ringing, tipici degli ADC delta-sigma e rappresenta l'unica alternativa per realizzare schede di acquisizione ad alta velocità (>200kS/s).
È importante comunque considerare che la massima risoluzione ottenibile con questi convertitori, tipicamente 16 bit (al massimo 18), contro i 24 bit dei convertitori delta-sigma, che rappresentano spesso una scelta obbligata quando è importante raggiungere alti livelli di rapporto segnale-rumore.
L'elevata velocità dei convertitori SAR si adatta bene all'implementazione di tecniche avanzate di sovracampionamento e filtraggio allo scopo di ottenere frequenze di campionamento molto elevate e contemporaneamente ridurre l'errore di quantizzazione e massimizzare il rapporto segnale-rumore. Questo tipo di architettura viene chiamata Hybrid ADC in quanto permette di acquisire a frequenze tipiche di un ADC SAR e contemporaneamente mantenere la dinamica del segnale ai livelli degli ADC delta-sigma; un'implementazione commerciale di questa famiglia di convertitori è disponibile nei dispositivi SIRIUS XHS.