Salta al contenuto
Note per Studenti ADC e DAC - risoluzione, SNR, ENOB ed errori

ADC e DAC - risoluzione, SNR, ENOB ed errori

In questa pagina 5

Un convertitore A/Ddispositivo che trasforma una tensione analogica in un codice binario (ADC) trasforma una tensione analogica in un codice binario; un convertitore D/A (DAC) fa l'operazione inversa. Nei µC e DSP per il controllo real-time l'ADC è sempre presente (Microcontrollori e DSP - definizioni e scelta del dispositivoUn microcontrollore (µC) è un microprocessore con memoria e periferiche (ADC, timer, PWM, porte seriali) sullo stesso chip, pensato per il controllo; un DSP è un processore ottimizzato per l'elaborazione numerica del segnale in tempo reale (moltiplicatore e istruzione MAC, accessi multipli alla memoria, indirizzamento circolare, DMA). Oggi le due famiglie si sovrappongono (DSC). La scelta del dispositivo si fa su costo, prestazioni, periferiche e tempo di sviluppo (time to market), non sulla sola frequenza di clock.Microcontrollori e DSP - definizioni e scelta del dispositivo →) e a valle di un S/H (Campionamento, aliasing e sample and holdCampionare vuol dire prendere i valori di $s(t)$ a istanti $kT_c$ ($T_c$ periodo, $f_c=1/T_c$). Teorema di Shannon: se lo spettro è nullo sopra $BW$, $s(t)$ si ricostruisce esattamente da campioni con $f_c\ge2BW$. Lo spettro campionato è la replica periodica (ogni $f_c$) dello spettro originale; se $f_c<2BW$ le repliche si sovrappongono: aliasing (una sinusoide a $f$ campionata a $1{,}25f$ appare a $0{,}25f$). Si previene con un filtro anti-aliasing sotto $f_c/2$ e col sovracampionamento. Il sample and holdcircuito che campiona il segnale e lo mantiene costante durante la conversione tiene il segnale costante durante la conversione.Campionamento, aliasing e sample and hold →). I parametri fondamentali sono: risoluzione (legata al numero di bit), velocità di conversione, accuratezza e consumo.

Risoluzione e quantizzazione

La limitata disponibilità di bit introduce un errore caratteristico, l'errore di quantizzazione. Con nn bit e fondo scalail massimo valore di ingresso convertibile, indicato con FSR (Full Scale Range) FSRFSR (Full Scale Range) il passo minimo ("1 LSBil passo minimo del convertitore: il valore di fondo scala diviso per 2 elevato a n") è LSB=FSR2n.\boxed{LSB=\frac{FSR}{2^n}} . Ogni configurazione di bit corrisponde a un intervallo di tensioni di ingresso largo 1 LSB; il massimo errore di quantizzazione è ±12LSB\pm\frac12LSB (per un ADC ideale con soli effetti di quantizzazionesostituzione di un valore continuo con uno dei livelli discreti disponibili). Nel profilo uniforme senza offseterrore costante per cui a ingresso nullo l'uscita non è zero usato negli esami le soglie sono a 12LSB, 32LSB, 52LSB,…\frac12LSB,\ \frac32LSB,\ \frac52LSB,\dots: il primo intervallo è largo 12LSB\frac12LSB, tutti gli altri 1 LSB. Quindi C=round(VLSB)=round(VFSR2n),V≈C⋅LSB (±12LSB).C=\mathrm{round}\Big(\frac{V}{LSB}\Big)=\mathrm{round}\Big(\frac{V}{FSR}2^n\Big),\qquad V\approx C\cdot LSB\ (\pm\tfrac12LSB).

Grafico interattivo: ADC ideale a 3 bit: tensione rappresentata (a gradini di 1/8 del fondo scala) contro tensione di ingresso (retta tratteggiata); il gradino si trova a metà del passo

Grafico interattivo: Errore di quantizzazione di un ADC a 3 bit: dente di sega tra -1/16 e +1/16 del fondo scala, cioè tra -1/2 LSB e +1/2 LSB

Esempio. n=12n=12, FSR=3,3FSR=3{,}3 V: LSB=3,3/4096=0,806LSB=3{,}3/4096=0{,}806 mV. Il codice 0x12C=300\texttt{0x12C}=300 corrisponde a V=300⋅0,806=0,242V=300\cdot0{,}806=0{,}242 V (a meno di ±0,4\pm0{,}4 mV). Un segnale v(t)=1,65+sin⁡(2π 103t)v(t)=1{,}65+\sin(2\pi\,10^3t) V oscilla tra 0,650{,}65 e 2,652{,}65 V: i codici estremi sono round(0,65/0,806)=807=0x327\mathrm{round}(0{,}65/0{,}806)=807=\texttt{0x327} e round(2,65/0,806)=3289=0xCD9\mathrm{round}(2{,}65/0{,}806)=3289=\texttt{0xCD9}.

Sensore e fondo scala della grandezza. Se il sensore ha un coefficiente di trasduzionerapporto tra tensione di uscita del sensore e grandezza misurata kSk_S [V/unità] e l'ADC ha FSRFSR, il fondo scala della grandezza fisica è FSR/kSFSR/k_S (più eventuali offset): per kS=0,66k_S=0{,}66 V/bar e FSR=3,3FSR=3{,}3 V, 5 bar.

SNR, bit efficaci

Si assimila l'errore di quantizzazione a un rumore incorrelato con il segnale e distribuito uniformemente in [−12LSB,+12LSB][-\frac12LSB,+\frac12LSB]: la sua potenza (varianza) è σq2=1LSB∫−LSB/2LSB/2e2 de=LSB212.\sigma_q^2=\frac1{LSB}\int_{-LSB/2}^{LSB/2}e^2\,de=\frac{LSB^2}{12}. Il rapporto segnale-rumore (SNRSignal to Noise Ratio: rapporto tra potenza del segnale e potenza del rumore) è il rapporto tra la massima potenza di un segnale sinusoidale (ampiezza FSR/2FSR/2, potenza FSR2/8FSR^2/8) e la potenza del rumore di quantizzazione: SNR=FSR2/8LSB2/12=32 22n ⇒ SNRdB=6,02 n+1,76 dB.SNR=\frac{FSR^2/8}{LSB^2/12}=\frac32\,2^{2n}\ \Rightarrow\ \boxed{SNR_{dB}=6{,}02\,n+1{,}76}\ \text{dB}. Un bit in più aggiunge 6 dB: conviene usare tutti i bit a disposizione (adattare il segnale a FSRFSR). Tabella (LSBLSB in % di FSRFSR):

nn 8 10 12 14 16
LSBLSB [% FSR] 0,39 0,098 0,024 0,006 0,0015
SNRSNR teorico [dB] 49,9 62,0 74,0 86,0 98,1

Nella realtà il SNR misurato (SNRoutSNR_{out}) è inferiore: si qualifica il convertitore col numero di bit efficaci (ENOBEffective Number Of Bits: numero di bit efficaci, ricavato dal SNR misurato): ENOB=SNRout−1,766,02.\boxed{ENOB=\frac{SNR_{out}-1{,}76}{6{,}02}} . Esempi: SNR=64SNR=64 dB → ENOB=64−1,766,02=10,34ENOB=\frac{64-1{,}76}{6{,}02}=10{,}34; SNR=68SNR=68 dB → 11,011{,}0 bit (un ADC a 12 bit che si comporta come uno a 11).

Errori di un convertitore reale

Oltre alla quantizzazione, l'accuratezza assolutamassima differenza tra valore convertito e valore teoricamente atteso (massima differenza tra valore convertito e valore teorico) è limitata da:

  • errore di offset: il codice a ingresso nullo non è 0 (per esempio 0x032=50\texttt{0x032}=50 codici a Vin=0V_{in}=0): si corregge sottraendo l'offset da ogni lettura;
  • errore di guadagno: la pendenza media della caratteristica non è quella ideale;
  • non linearità: i centri degli intervalli non stanno su una retta. INL (integrale): distanza tra i centri del gradino reale e di quello teorico; DNL (differenziale): differenza tra la larghezza dell'nn-esimo gradino e 1 LSB. Si valutano rispetto alla retta tra (0,0)(0,0) e (FSR−LSB,111…1)(FSR-LSB,111\dots1) oppure rispetto alla migliore retta interpolante. Se i DNLDifferential NonLinearity: differenza tra la larghezza di un gradino e 1 LSB sommati superano 1 LSB si può avere un missing codecodice che il convertitore non produce mai, a causa di una non linearità differenziale troppo grande (un codice che non esce mai); nel DAC lo stesso difetto si chiama non monotonicità (pericoloso nei controlli).
  • distorsione armonica: qualunque convertitore genera armoniche in risposta a una sinusoide, per le sue non linearità; tutti gli errori variano con la temperatura.

Accuratezza e precisione. La precisione (ripetibilità del risultato) non implica una buona accuratezza; un'alta accuratezza implica una alta precisione. I due termini si confondono spesso.

Esempio di correzione dell'offset. ADC a 12 bit, FSR=3,3FSR=3{,}3 V. Letture 0xA00\texttt{0xA00}, 0x3F0\texttt{0x3F0}, 0x725\texttt{0x725} → 2,06252{,}0625 V, 0,81210{,}8121 V, 1,47361{,}4736 V. Con un ingresso nullo si legge 0x032=50\texttt{0x032}=50 (40,340{,}3 mV): letture corrette 2560−50=2510=0x9CE2560-50=2510=\texttt{0x9CE}, 958=0x3BE958=\texttt{0x3BE}, 1779=0x6F31779=\texttt{0x6F3}, cioè 2,02222{,}0222 V, 0,77180{,}7718 V, 1,43331{,}4333 V.

DAC

Il DAC converte un codice di nn bit in una tensione V=C2n FSRV=\frac{C}{2^n}\,FSR (ancora LSB=FSR/2nLSB=FSR/2^n), con gli stessi errori (offset, guadagno, INLIntegral NonLinearity: scostamento dei livelli reali dalla retta ideale, DNL). Per un'onda ricostruita da campioni la frequenza massima dipende dal numero di campioni per periodo: con fcf_c di aggiornamento e NN punti per periodo, fmax=fc/Nf_{max}=f_c/N. Le architetture sono nella nota Architetture di ADC e DACADC flash: $2^n-1$ comparatori in parallelo, il più veloce (GS/s) ma costoso, $n<10$. A gradinata/a rampa: contatore + DAC (o rampa) + comparatore, $T_{conv}\le2^n$ cicli di clock (lentissimo). SAR: ricerca binaria con DAC e comparatore, $T_{conv}=(n+1)$ cicli: il più usato nei µC. Sigma-delta: ADC a 1 bit + DAC a 1 bit in retroazione e filtro digitale, sovracampionamento (molti bit, banda ridotta). Multistadio/pipeline: più ADC a pochi bit in serie; la pipeline triplica (con 3 stadi) la frequenza di conversione. DAC: a resistenze pesate, a traliccio R-2R ($V_o=-V_{ref},C/2^n$, corrente costante), a voltage scaling (monotono), seriale.Architetture di ADC e DAC →. Un fenomeno tipico dei DAC è il glitchimpulso indesiderato che compare in uscita al DAC durante le commutazioni: le commutazioni degli interruttori non sono perfettamente sincrone e generano transitori; si risolve con un S/H in uscita.

Errori comuni

  • Usare FSR/(2n−1)FSR/(2^n-1) al posto di FSR/2nFSR/2^n per il LSBLSB.
  • Dimenticare che l'errore massimo è mezzo LSB (non uno).
  • Applicare 6,02n+1,766{,}02n+1{,}76 a segnali non a fondo scala (il SNR scende: con ampiezza metà, −6-6 dB).
  • Confondere numero di bit nominali e efficaci.
  • Non sottrarre l'offset prima di convertire in volt.

Versione ripasso

Esercizi su questo argomento

Teoria collegata