Architetture di ADC e DAC
In questa pagina 3
Questa nota descrive come sono fatti dentro i convertitori di cui si usano i parametri in ADC e DAC - risoluzione, SNR, ENOB ed erroriUn convertitore a $n$ bit con fondo scala $FSR$ ha risoluzione $LSB=FSR/2^n$; il codice vale $C=\mathrm{round}(V/LSB)$ e la tensione corrispondente è $V=C\cdot LSB$ con incertezza $\pm\frac12LSB$ (errore di quantizzazione). Con un modello a rumore uniforme di potenza $LSB^2/12$ il SNR di una sinusoide a fondo scala è $6{,}02,n+1{,}76$ dB; dal SNR misurato si ricava il numero di bit efficaci $ENOB=\frac{SNR-1{,}76}{6{,}02}$. Gli errori reali (offset, guadagno, INL, DNL, missing code) abbassano l'accuratezza. Accuratezza ≠ precisione: alta accuratezza implica alta precisione, non viceversa.ADC e DAC - risoluzione, SNR, ENOB ed errori →. Quello che interessa all'esame sono i tempi di conversione e le frequenze di Nyquist consentite.
Convertitori A/D
Flash
Un partitore resistivo di resistenze uguali fornisce soglie; una schiera di comparatori confronta in parallelo l'ingresso con tutte le soglie producendo una codifica "termometrica"; un encodercircuito che traduce il codice termometrico (tanti 1 consecutivi) in un numero binario la traduce in binario. I bit si formano in parallelo: è lo schema più veloce possibile (centinaia di ps, 10 GS/s). Ma servono molti componenti (255 comparatoricircuiti che confrontano due tensioni e dicono quale è maggiore per soli 8 bit; 4095 per 12), con elevata area, potenza dissipata e sensibilità a bias e offset dei comparatori (principale limite alla linearità, fino al missing code). Si usa per poche cifre () e frequenze molto alte ( MHz).
A gradinata e a rampa
Nell'ADC a gradinata un contatore binariocircuito che incrementa un numero binario a ogni impulso di clock pilota un DAC; l'uscita del DAC (una "scala") è confrontata dal comparatore con . Quando il conteggio si ferma e il codice del contatore è il risultato. Il tempo di conversione dipende da e vale al massimo periodi di clock (per ). La precisione è limitata da quella del DAC, il comparatore deve avere offset . È lento.
Esempio: ADC a gradinata a 10 bit con MHz: µs, kHz, kHz. (Attenzione: in soli 100 ns DAC, contatore e comparatore devono assestarsi.)
L'ADC a rampa sostituisce il DAC con un generatore di rampa analogico (condensatore e generatore di corrente) e conta i periodi di clock mentre la rampa è tra 0 e : il codice è proporzionale a . Meno complesso ma sensibile alle non idealità del generatore di rampa; cicli; esistono versioni a doppia rampa.
Ad approssimazioni successive (SAR)
Un registro ad approssimazioni successive pilota un DAC con la logica della ricerca binariametodo che dimezza a ogni passo l'intervallo in cui cercare il valore: all'inizio si pone il bit più significativo a 1 (); se il comparatore dice il bit è confermato, altrimenti si azzera; si prova il bit successivo e così via per bit. Il numero di cicli è al più : Esempio: SARregistro ad approssimazioni successive: logica di ricerca binaria del codice a 10 bit a 10 MHz: µs, kHz, kHz, cioè 100 volte la frequenza di Nyquist dell'ADC a gradinata dello stesso esempio. Altro esempio: SAR a 12 bit a 100 MHz: ns, MHz, MHz; con 20 MHz di clock e 8 bit: ns, ns, MHz. Gli ADC SAR sono i più usati, anche integrati nei µC (STM32F334: 12 bit, 5 MS/s; LPC2129: 10 bit, 400 kS/s; dsPIC30F: 10 bit, 500 kS/s). È un buon compromesso tra velocità e complessità, con frequenze di conversione di qualche MHz. Alcuni ADC SAR richiedono un ciclo di clock "a vuoto" per azzerare la macchina a stati; il tempo di conversione non dipende dal fondo scala ma dal numero di bit (nel caso peggiore, un bit in più raddoppia il tempo di conversione per i convertitori a gradinata, ma aggiunge soltanto un ciclo per un SAR).
Sigma-delta
Un comparatore (ADC a 1 bit) e un DAC a 1 bit in retroazione, con un sommatore e un integratorecircuito la cui uscita è l'integrale dell'ingresso. L'anello è in equilibrio solo quando l'ingresso dell'integratore è nullo in media: quando la sequenza di bit prodotta ha media uguale alla tensione di ingresso (in unità di ). Un filtro passa-basso digitale in uscita estrae il valore medio e lo rende disponibile come parola a bit (fino a 20 bit). Sfrutta il sovracampionamento: il convertitore interno lavora a frequenze molto alte (centinaia di MHz, fattore di sovracampionamento da centinaia a migliaia), da cui ottimi SNR pur con campionatore a 1 bit. Si complica la parte digitale per semplificare l'analogica (fino al 90% dell'area è digitale): costo contenuto. Frequenze di conversione fino a centinaia di kHz (per esempio 10 bit con sovracampionamento di circa mille).
Multistadio e pipeline
Si costruisce un convertitore a molti bit collegando in serie ADC a pochi bit. Esempio: un ADC SAR a 12 bit ottenuto con 3 stadi SAR da 4 bit: il primo stadio produce i 4 MSB, un DAC a 4 bit ricostruisce, il residuodifferenza tra l'ingresso e il valore già convertito dallo stadio precedente passa al secondo stadio (via S/H) che produce i 4 bit centrali, e così via. Con una pipeline i tre stadi lavorano su campioni diversi: mentre il primo converte i 4 MSB del nuovo dato, il secondo converte i bit intermedi del precedente e il terzo gli LSB di quello ancora prima. Uno stadio SAR a 4 bit impiega cicli, quindi una conversione completa ogni 5 cicli: Con MHz: stadio da ns, MHz, MHz, tempo minimo di conversione di un dato ns; il SAR a 12 bit non a pipelineorganizzazione in cui più stadi lavorano insieme su campioni diversi farebbe ns, cioè MHz, MHz. In prima approssimazione la pipeline riduce di circa 1/3 il tempo medio per dato rispetto a un SAR a 12 bit (a costo di 2 S/H in più e un po' di logica); funziona bene solo se alimentata con continuità.
Flash multistadio (non è una pipeline: le 3 unità lavorano insieme sullo stesso dato): 3 flash da 4 bit richiedono comparatori invece di 4095, con tempi più lunghi di uno stadio singolo ma ancora bassissimi; con la pipeline si hanno frequenze di decine di MHz.
Convertitori D/A
- A resistenze pesate: un amplificatore operazionale sommatore con resistenze pilotate dai bit: . Semplice, ma le resistenze sono tutte diverse (l'ultima molto grande, rapporti difficili da garantire), le degli interruttori pesano in modo diverso, la corrente assorbita dipende dai bit e lo schema è invertente: poco usato.
- A traliccio R-2R: solo resistenze di due valori ( e ). I deviatori commutano le resistenze da tra massa e massa virtualepunto a tensione nulla imposto dalla retroazione di un amplificatore operazionale (entrambe a 0 V): la resistenza vista da è sempre , quindi la corrente assorbita non dipende dai bit (dai deviatori). Le correnti nei rami sono e con il codice (con ). Molto usato.
- Con voltage scaling: una catena di resistenze uguali e interruttori che selezionano una tensione intermedia; usato fino a circa 8 bit (servono molte resistenze); è intrinsecamente monotono, tutte le resistenze uguali, corrente negli interruttori bassissima.
- Seriale: i bit arrivano uno alla volta dal meno significativo; con ogni bit a 1 carica a e a ogni "condivisione di carica" prende metà della carica. Per la parola : finisce a . Semplicissimo ed economico, ma lento.
Errori comuni
- Dire che nel SAR il tempo di conversione dipende dal valore convertito: è sempre cicli (non così nella gradinata o nella rampa).
- Contare cicli anziché .
- Dire che la pipeline riduce la latenza: aumenta la frequenza di conversione (), non accorcia la conversione di un singolo dato.
- Credere che il DAC R-2R assorba una corrente che dipende dal codice.
Versione ripasso
- Flash: comparatori + encoder, GS/s, . Gradinata/rampa: clock ( bit, 10 MHz: 102,4 µs, kHz). SAR: ( bit, 10 MHz: 1,1 µs, 455 kHz; 12 bit, 100 MHz: 130 ns).
- Sigma-delta: comparatore 1 bit + DAC 1 bit + integratore, media dei bit, filtro digitale, sovracampionamento.
- Pipeline 3×4 bit: (80 MHz: 16 MHz, MHz, latenza 187,5 ns); flash multistadio: 45 comparatori contro 4095.
- DAC: pesate (resistenze diverse), R-2R (, corrente costante), voltage scaling (monotono), seriale (lento); glitch.
- Errori: SAR dipendente dal valore; al posto di ; pipeline = meno latenza; corrente R-2R variabile (ADC e DAC - risoluzione, SNR, ENOB ed erroriUn convertitore a $n$ bit con fondo scala $FSR$ ha risoluzione $LSB=FSR/2^n$; il codice vale $C=\mathrm{round}(V/LSB)$ e la tensione corrispondente è $V=C\cdot LSB$ con incertezza $\pm\frac12LSB$ (errore di quantizzazione). Con un modello a rumore uniforme di potenza $LSB^2/12$ il SNR di una sinusoide a fondo scala è $6{,}02,n+1{,}76$ dB; dal SNR misurato si ricava il numero di bit efficaci $ENOB=\frac{SNR-1{,}76}{6{,}02}$. Gli errori reali (offset, guadagno, INL, DNL, missing code) abbassano l'accuratezza. Accuratezza ≠ precisione: alta accuratezza implica alta precisione, non viceversa.ADC e DAC - risoluzione, SNR, ENOB ed errori →).
Esercizi su questo argomento
- Esercizio 13 · convertitore A-D di tipo SAR, frequenza di Nyquist, ENOB e pipeline (temi d'esame gennaio 2026, luglio 2026 e gennaio 2023)
- Esercizio 14 · sensore e convertitore A-D, allineamento a 16 bit, offset e tempo di calcolo (temi d'esame gennaio 2022, gennaio 2025, febbraio 2025 e settembre 2026)
- Esercizio 15 · convertitore D-A, sinusoide numerica e DAC a traliccio R-2R (temi d'esame febbraio 2026 e esempio d'appello 2020-21)
- Esercizio 31 · sistema di controllo di un ascensore con microcontrollore a 8 bit (tema d'esame 18 luglio 2006)