Corso di microprogrammazione: i convertitori ADC e DAC

Codice

In una delle ultime puntate di questo corso abbiamo accennato ai convertitori Flash come elementi che contengono al loro interno dispositivi già visti. Viste le richieste, e per avere un quadro più completo ed esauriente, oggi apriamo una breve parentesi interna al corso per parlare meglio di che cosa sono i convertitori analogico digitale (ADC) ed il loro contrario, i DAC, e come funzionano. Vedremo in breve alcuni dettagli sulle lorro architetture e sul loro funzionamento. E dalla prossima puntata riprenderemo da dove abbiamo lasciato con i circuiti sequenziali.

ADC

Questo acronimo si riferisce a dispositivi il cui scopo sia quello di convertire un dato analogico (ovvero un livello di tensione piuttosto che una corrente) in uno digitale, ovvero una sequenza ordinata di bit che rappresentino la stessa cifra a valle del processo di quantizzazione. L’ADC è, pertanto, un circuito elettronico in grado di trasformare un segnale analogico, ovvero una funzione reale di variabile reale, in una funzione definita su un insieme discreto a valori in un insieme discreto. Come vedremo fra breve il DAC esegue l’operazione duale in maniera tale da poter considerare che la cascata dei due sistemi sia trasparente. Evidentemente ciò non sarà mai e poi vedremo perché.

Se di un ADC diciamo che converte un dato in una serie di bit, è necessario introdurre il concetto di risoluzione. Si tratta della cosiddetta “profondità” del dato ovvero della capacità di descrivere un numero con un certo numero di bit.

Considerato che, come abbiamo già detto, la notazione binaria è posizionale, l’ordine con il quale vengono disposti i bit per descrivere un numero è fondamentale. Il numero di numeri che possono essere espressi da un ADC è pari a 2^N, dove (perdonate l’ovvietà) N è il numero di bit di cui il nostro convertitore è dotato.

Da qui, seguono i soliti scolastici esempi: 8 bit implica 256 livelli differenti allo stesso modo in cui 10 ne implica 1024.

Non è raro che la risoluzione venga anche indicata direttamente in Volt. In questo caso, la risoluzione del convertitore sarà pari alla più piccola delle differenze di potenziale distinguibili tra i due segnali che vengono codificati da livelli distanti adiacenti. In altre parole, la risoluzione sarà pari alla capacità di distinguere la più piccola differenza presente. Ecco per quale motivo, talvolta, questo concetto viene erroneamente confuso con la precisione. Per un dispositivo elettronico in generale la precisione è la capacità di restituire, a parità di condizioni, la stessa misura.

Tanto vale, a questo punto, completare il quadro delle definizioni introducendo il concetto di accuratezza: un dispositivo elettronico (di misura) si definisce accurato se ripetuta N volte la misura, il valore è vicino a quello vero. Di fatto si tratta di una misura della deviazione standard, o, se volete, della varianza.

Ma torniamo a noi facendo alcuni esempi che possono certamente aiutare a chiarire il concetto.

Nel caso di tensioni di ingresso comprese tra 0 e 10 Volt e risoluzione di 12 bit, avremmo 2^12 = 4096 livelli di quantizzazione. La differenza di potenziale tra due livelli di tensione adiacenti sarà pari a 10 V / 4096 = 0,00244 V = 2,44 mV.

Se l’intervallo di valori in ingresso dovesse essere duale, per esempio compreso tra -10 e 10 V, e la risoluzione pari a 14 bit, invece, avremo: 2^14 = 16384 livelli di quantizzazione distinti con una risoluzione di 1,22 mV (20 V / 16384 = 0,00122 V).

Nella pratica, cioè nell’utilizzo corrente, la risoluzione di un convertitore viene limitata dal rapporto segnale rumore, o SNR (trattato di recente su queste pagine). Il segnale in questione proviene da apparati che non sono esenti da disturbi ed ha “attraversato” un certo percorso all’interno del quale almeno il rumore termico ha avuto la sua influenza. Operativamente questo significa che quei 12 o 14 bit in realtà non potranno essere considerati attendibili tutti ma soltanto alcuni di essi lo saranno.

Ecco per quale motivo è stato molto utile, fino a questo momento, richiamare più volte il concetto che questa metodologia di rappresentazione dei numeri segue una logica posizionale: i bit meno significativi sono quelli sui quali il rumore farà sentire maggiormente il suo contributo e, pertanto, dovranno essere considerati non attendibili.

Questo si può facilmente verificare rendendosi conto che la loro fluttuazione di valore è molto rapida anche nel momento in cui stiamo misurando sempre la stessa variabile.

Quando la componente di rumore all’ingresso del sistema dovesse essere troppo elevata, risulterà assolutamente impossibile convertire con accuratezza un certo numero di bit compresi nella risoluzione del convertitore. Viene definito un rapporto segnale rumore “utile” qualitativamente pari a circa 6 dB per bit.

La risposta di un convertitore

Abbiamo avuto modo, qualche tempo fa, di spiegare che talune caratteristiche di questi dispositivi tendono ad essere lineari, ovvero ad essere descritti da una caratteristica ingresso-uscita che assomiglia molto ad una retta. La linearità del sistema è certamente desiderabile ma non può in alcun modo essere ottenuta realmente.

Per poter essere lineare, infatti, il sistema dovrebbe essere in grado di convertire un numero reale qualunque, scritto con un numero di cifre significative grande a piacere in un numero binario altrettanto grande. Tuttavia questo non è possibile perché, essendo fissato, come abbiamo detto, il numero massimo di bit, evidentemente sarà altrettanto fisso il valore più grande rappresentabile (ed altrettanto va detto per il più piccolo!).

Al di là di queste problematiche, esistono convertitori che sono esplicitamente non lineari, come quello logaritmico, utilizzato in sistemi di comunicazione vocale con lo scopo di aumentare l’entropia del segnale digitalizzato. Vale la pena di soffermarsi un attimo su questo concetto per dire che l’istogramma di un segnale vocale ha la forma di due curve esponenziali inverse ed il convertitore non lineare cerca di approssimare questi comportamenti ad una funzione di densità di probabilità più o meno quadrata. Il segnale distorto risulta, così, avere un range dinamico inferiore.

La quantizzazione del segnale aggiunge meno rumore rispetto a quanto non lo farebbe un quantizzatore lineare che abbia la stessa risoluzione espressa in bit.

L’accuratezza del dispositivo dipende dall’errore di conversione che, a sua volta, è formato da due componenti ovvero l’errore di quantizzazione e quello di non linearità. Questi due contributi esprimono, in maniera chiara, quanto la curva caratteristica reale del convertitore sia distante da quella ideale. Anche questi errori vengono misurati in funzione dell’LSB poiché soltanto l’utilizzo dei bit rappresenta una metodologia operativa valida per disegnare e caratterizzare il distacco e la disparità nel funzionamento.

Se proviamo ad esprimerlo in cifre, quando parliamo di convertitori ad 8 bit, un errore pari ad 1 LSB corrisponde allo 0,4%.

Ovviamente risulta intuitivo che maggiore è il numero di bit, minore sarà questo contributo d’errore.

Per quanto concerne quello di quantizzazione, invece, esso è dovuto alla risoluzione finita dell’ADC, ed è quello di cui parlavamo in precedenza. La grandezza di questo errore potenziale su un campione è compresa fra 0 ed 1 LSB ed ha valor medio pari a LSB/2. Questo è intuitivo perché nel momento in cui noi cerchiamo di leggere un valore esiste solo una coppia di casi possibili: o si avvicina di più al valore più alto nell’intervallo oppure si avvicina di più a quello inferiore.

In entrambi i casi, l’errore più grande che si può commettere è 1 LSB.

Non è il caso, sempre vista la matrice pratica di questo corso, di addentrarsi nello studio di parametri come la non-linearità integrale (INL) e la non linearità differenziale (DNL). Tuttavia, dovesse interessare, potremmo certamente approfondire il tema anche perché non sono gli unici contributi che non sono stati citati; mancano all’appello anche l’errore di guadagno è quello di offset.

Il segnale

Il segnale analogico, come abbiamo detto in apertura, spesso rappresenta un livello di tensione; si tratta, quindi, dell’evoluzione temporale di un parametro fisico quindi di una funzione reale di variabile reale, definita su un intervallo continuo ed a valori in un intervallo continuo. Di segnali, però, ne esistono infiniti e sono divisibili in quattro tipi diversi: possono essere analogici e digitali ovvero possono essere continui (o discreti) sia nei tempi sia nelle ampiezze. Potremmo anche dire che possono avere continuità di dominio e di codominio, se li guardiamo come funzioni analitiche.

Evidentemente questi due casi risultano essere molto distinti tra loro proprio perché l’approssimazione che introduciamo sui valori, nel momento in cui li rendiamo digitali, corrisponde ai valori delle cifre che sono state scartate. Quest’operazione si rende comunque indispensabile perché il convertitore non sarebbe in grado di elaborare segnali che non siano discreti. Pertanto è necessario definire la frequenza alla quale questi valori vanno campionati. Come ben sappiamo, è il teorema di Nyquist-Shannon a dare una chiara indicazione su come bisogna effettuare questa operazione.

L’accuratezza, tuttavia, risulterà comunque limitata dall’errore di quantizzazione.

Nella pratica tutto questo ha un impatto reale sulle prestazioni, ovvero non è possibile ottenere la conversione istantanea. Questo significa che bisognerà tener conto dei ritardi introdotti che sono relativi ai tempi in cui il convertitore eseguirà le conversioni.

Anche qui, voglio tutelare la matrice pratica del corso senza addentrarmi nei dettagli che risulterebbero troppo scolastici e poco orientati alla implementazione ed analisi dei sistemi.

Il dithering

Ciò nondimeno, lasciatemi parlare brevemente del dithering. Talvolta, in casi che certamente potranno venirvi in mente nel momento in cui leggete, conviene introdurre artificialmente del rumore sovrapponendolo al segnale in ingresso per migliorare la qualità di conversione. Sembra un paradosso ma questo artifizio permette di superare la limitazione indotta dalla risoluzione finita del dispositivo.

Se supponiamo che un segnale, posto in ingresso ad un sistema, sia costantemente pari ad un unico valore, per comodità supponiamo 0,576 V, e che il nostro convertitore abbia una risoluzione pari a 0,1V, in assenza totale di rumore il segnale sarà campionato ed approssimato al valore 0,6.

È ovvio che questa conversione non è corretta a rigore ma è la migliore che si potesse fare perché si tratta del livello più vicino al valore che abbiamo. Se, invece, sommiamo del rumore (che supponiamo essere rumore a densità di probabilità gaussiana, bianco a media nulla e stazionario), con una varianza pari a 0,03, avremo che il segnale oscillerà tra 0,546 e 0,606. In questi due casi sarà sempre possibile individuare un valore di conversione compreso nello stesso intervallo ma che possa essere associato ad uno piuttosto che all’altro valore con meno approssimazione.

Sembra che questa tecnica tenda a farci confondere il valore più spesso. In realtà il risultato che otteniamo è che, mediamente, il valore viene confuso di meno. Questo vale solo e soltanto perché la media dell’errore è nulla!

I modi di convertire

Chiusa questa sorprendentemente lunga parentesi, veniamo a noi. Esistono cinque modi di realizzare un convertitore analogico-digitale:

  • A conversione diretta (o Flash ADC).
    Si tratta di un dispositivo dotato di un comparatore per ognuno dei livelli di voltaggio riconosciuti dal quantizzatore. Un ADC Flash con risoluzione a 8 bit avrà 2^8-1 (=256-1) comparatori. Il segnale di ingresso arriva a ciascuno di essi e ciò che avremo in uscita sarà un valore di saturazione positivo per tutti quelli in cui la tensione del segnale di ingresso è risultata effettivamente essere maggiore di quella di soglia. Attraverso un priority encoder (ovvero un encoder a priorità), soltanto il più grande di questi potrà attivare la propria uscita.
    I convertitori flash sono i più veloci in assoluto e vengono utilizzati per lavorare su segnali ad alta frequenza (ovvero anche a frequenze dell’ordine dei GHz).
    Poiché il numero di comparatori necessari per il funzionamento dimostra di crescere con legge esponenziale in relazione al numero di bit richiesto i convertitori flash raramente hanno più di 8 bit.
  • Ad approssimazioni successive (SAR – Successive Approximation Register).
    Questo tipo di comparatore utilizza un convertitore digitale-analogico; ad ogni “passaggio” l’ADC effettua l’inizializzazione di un bit, partendo dall’MSB e, utilizzando il DAC, confronta il segnale campionato con quello di ingresso in feedback. Con questo meccanismo viene individuato un bit per ciascuna iterazione. Si tratta, nei fatti, di una ricerca binaria; la risoluzione, in questo caso, è limitata solo dalle esigenze di sample-rate e dal rumore in ingresso.
  • Ad inseguimento (a codifica-delta).
    Esso è dotato di 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.
  • A doppia rampa (Dual Slope).
    Questo convertitore, ad integrazione, produce un segnale a dente di sega che sale, per poi ridiscendere molto velocemente (a valore nullo). Il segnale di ingresso viene integrato facendo salire la rampa mentre un contatore funge da segna-tempo. Quando la rampa raggiunge un determinato livello logico (fisso a priori),  il conteggio termina e si indica il valore quantizzato del segnale. Questo tipo di ADC è molto sensibile alla temperatura (e quindi alle sue veriazioni!) perchè questa può alterare il funzionamento del clock od anche  il voltaggio di riferimento per la rampa. Per questo motivo ne viene richiesta spesso la calibrazione.
  • A pipeline (subranging)
    Questo convertitore è piuttosto simile al SAR ma non individua un bit alla volta bensì un “blocco” di bit; in un primo passo, avviene una conversione “grezza” del segnale (poi riconvertito da un DAC). Viene dunque quantizzata la differenza tra il segnale originario e quello campionato (eventualmente affinando la conversione in passi successivi!). Così, se avessimo un quantizzatore a 4-bit che operi in un range di tensioni tipo 0÷2,56 V (risoluzione 0,16 V) ed un altro quantizzatore a 4-bit che operi tra 0÷0,16 V (risoluzione 0,01 V), dopo aver quantizzato il segnale di ingresso col primo, la differenza tra segnale quantizzato e quello d’ingresso sarà (al più) pari a quello della risoluzione, e può essere letto dal secondo quantizzatore.

Un modo piuttosto comodo per dividere i convertitori A-D in categorie è sulla base della loro velocità; esistono, in definitiva, quelli lenti (che risultano essere più precisi) e quelli veloci.
Altre due categorie in cui è possibile dividerli sono: “spot” e “ad integrazione“. Nella prima delle due categorie si inseriscono i Flash, i SAR ed i Subranging mentre nella seconda ci sono quelli a rampa (semplice o doppia) ed i Sigma-Delta.
A seconda dello scopo di impiego, inoltre, i convertitori vengono definiti sulla base della loro frequenza di campionamento; per questo avremo valori di:

  • 11 kHz par la registrazione della voce;
  • 22 kHz per la registrazione su nastro;
  • 44 kHz per la registrazione su cd (qualità più alta anche in funzione del bit-rate).

Si sarà certamente intuito, da tutto quello che è stato detto fino a questo momento, che i principi di funzionamento di questi dispositivi sono i più svariati e che questi vengono influenzati da diversi fattori. Poiché lo scopo di questo articolo è presentare i convertitori Flash, vale la pena di specificare che l’evoluzione tecnologica dei componenti incide in maniera importante sulla loro affidabilità e sulle loro prestazioni.
Di conseguenza, avremo effetti importanti anche sul tempo di misurazione e sull’accuratezza della misura.

DAC

Prima di proseguire ed andare avanti con l’analisi della configurazione, è necessario completare il quadro generale parlando dei DAC. Essi, come accennato, effettuano l’operazione duale rispetto alla precedente e pertanto sono in grado di produrre sul terminale d’uscita un livello di tensione oppure una corrente che sia funzione di un valore numerico rappresentato al suo ingresso come sequenza ordinata di bit. Tale numero avrà, come nel caso precedente, una sua profondità di rappresentazione, ovvero una risoluzione.
A differenza del caso precedente, questa operazione può essere considerata lineare perché stiamo trasformando un valore discreto in un numero reale.
Unica remora a considerare questa frase assolutamente vera è l’incidenza del rumore che potrebbe alterare il valore vero prima che avvenga la conversione. In questo caso, l’operazione sarà sempre lineare ma il risultato potrebbe essere errato (sempre e soltanto nel caso in cui si sia sbagliata la conversione almeno di un bit).
Tanto per essere chiari, un valore pari a 2 può corrispondere ad una tensione d’uscita pari a 0,2 V e grazie alla tabella di conversione possiamo conoscere ogni genere di corrispondenza. Questo tipo di tabelle, del tutto analoghe alle tabelle della verità che abbiamo visto fino a questo momento, sono soprannominate LUT, che come al solito è un acronimo che sta per Look-Up Table.
Supponendo che questa operazione sia caratterizzabile da una funzione (una retta oppure una funzione trascendentale) questa tabella restituirà esattamente l’insieme dei valori risultati dall’applicazione della funzione alle variabili di ingresso.

L’utilizzo di questi dispositivi è diventato ormai all’ordine del giorno anche in sistemi che sono largamente presenti all’interno delle nostre case: macchine fotografiche, controlli digitali di volume oppure intensità luminosa. Per non parlare di quanti ne sono presenti all’interno delle consolle, dei computer ma anche dei televisori.

Le caratteristiche di questi dispositivi sono più o meno “rilevanti” a seconda dell’impiego e della criticità e della precisione richiesta dalla singola applicazione. Analoghi discorsi rispetto a quanto fatto in precedenza vanno riferiti a questo per parlare della risoluzione; pertanto andremo da una profondità di 8 bit fino a 24, come nel caso dei DVD. Concordemente, la dinamica del dispositivo potrà variare anche fino a 150 dB. Uno svantaggio è rappresentato dal fatto che maggiore è il numero di bit di cui è composto, più lento sarà il processo di conversione.

La struttura di un convertitore

Vediamo brevemente i convertitori per poi parlare più specificatamente dei Flash.
Prima di tutto, esistono quelli “a resistenze di emettitore potenza del 2″, ovvero convertitori a commutazione di corrente che sono dotati di una coppia differenziale in grado di pilotare le linee di uscita. Essi ricevono corrente dal collettore di un transistor (BJT) il cui emettitore ha una resistenza rivolta verso l’alimentazione negativa (degenerazione di emettitore). L’uscita tipica è in corrente; se il riferimento per i transistor dovesse essere un segnale esterno, il convertitore diventerebbe “moltiplicatore”.
Altra possibilità sono i convertitori “a rete R-2R”. Qui, la singola resistenza di emettitore crea grossi problemi dal punto di vista costruttivo perché il rapporto MSB/LSB è molto grande. Per costruire queste reti si utilizza una struttura R-2R, ovvero con soli due valori di resistenze. Se ne utilizziamo 2N+1, invece, avremo una rete ad N bit. Questa struttura risulta molto resistente alle variazioni parametriche come la temperatura. Anche in questo caso l’uscita è prevalentemente in corrente.
Una variante è rappresentata dal convertitore “CMOS moltiplicante”. Le linee della rete R-2R vengono commutate direttamente senza che il segnale attraverso il transistor. Il circuito moltiplica il dato in ingresso per la tensione d’ingresso ottenendo un valore d’uscita pari a

Vo=d/(2^N)

che, evidentemente, sarà un valore di tensione (a differenza degli altri).
Uno dei convertitori più interessanti in assoluto, ed anche più preciso, è il convertitore “ad 1 bit” ovvero il “Sigma-Delta”. Si tratta di un convertitore basato sulla tecnica del sovra-campionamento (il che di per sé implica altri concetti come il noise shaping). Grazie a questa tecnica è possibile commutare la tensione di pilotaggio di un integratore che verrà filtrata dopo aver subito un processo di sagomatura.
Anche in questo caso l’uscita è una tensione.
I convertitori “Switched Capacitor”, ovvero a capacità commutate, vengono impiegati nei microcontrollori, prevalentemente, perché si tratta di circuiti molto veloci e che, pertanto, possono trasferire rapidamente i livelli di tensione di riferimento destinati a caricare un condensatore MOS. Si tratta, sostanzialmente, di far comportare un cMOS da interruttore e pertanto la discriminante sarà la posizione dei commutatori quando andremo a leggere la tensione d’uscita.

Il convertitore flash

Veniamo, infine, finalmente, al convertitore Flash. Per fare questo, per prima cosa, ne presentiamo lo schema

E qui, invece, i livelli di conversione.

Questo convertitore è costituito da una struttura a resistenza d’emettitore singola oppure da una rete R-2R come quelle di cui abbiamo parlato in precedenza. Il dato di ingresso deve attraversare un Flip-Flop di tipo D, il quale viene aggiunto come metodo per evitare problematiche di jiter e migliorare i percorsi dei segnali all’interno del componente stesso.
In questo tipo di dispositivo, fonti di errore tipico sono le soglie di riferimento dei comparatori; c’è la necessità che queste siano perfettamente commisurate con i livelli di tensione di riferimento che devono corrispondere al dato. Ecco per quale motivo è preferibile realizzare le resistenze di questa struttura utilizzando non dispositivi discreti ma la tecnologia planare.
Le variazioni dei valori delle soglie sono dovute alle variazioni della tensione di riferimento e questo dà luogo, tipicamente, ad un errore di guadagno.
Le resistenze sono anche sensibili alla temperatura questo determina una non linearità della caratteristica (con la classica struttura a gradinata) con “gradini” non equispaziati e non di pari ampiezza.
Gli errori che vengono introdotti dei compratori sono dovuti alla polarizzazione cui sono soggetti gli ingressi; essi caricano il partitore di tensione e determinano errori di non linearità. L’effetto non si esaurisce qui perché la tensione di offset di ingresso determina uno spostamento della soglia che si diversifica per ciascun livello di conversione.
Ciò nonostante, i convertitori risultano piuttosto veloci e possono raggiungere anche una risoluzione di 10 bit.

Conclusioni

Bene, siamo arrivati alla fine di questa breve parentesi del corso dedicata ai comparatori ed ai convertitori. Dalla prossima volta riprenderemo da dove abbiamo lasciato. Nel frattempo, come di consueto, la parola ora è a voi: avete domande, dubbi, perplessità, questioni? Se si, come sempre, resto a vostra disposizione nei commenti.

 

Quello che hai appena letto è un Articolo Premium reso disponibile affinché potessi valutare la qualità dei nostri contenuti!

 

Gli Articoli Tecnici Premium sono infatti riservati agli abbonati e vengono raccolti mensilmente nella nostra rivista digitale EOS-Book in PDF, ePub e mobi.
volantino eos-book1
Vorresti accedere a tutti gli altri Articoli Premium e fare il download degli EOS-Book? Allora valuta la possibilità di sottoscrivere un abbonamento a partire da € 2,95!
Scopri di più

13 Comments

  1. Petit_Fleur 27 marzo 2013
  2. Emanuele Emanuele 27 marzo 2013
  3. Petit_Fleur 27 marzo 2013
  4. Antonello Antonello 8 marzo 2013
  5. Emanuele Emanuele 27 marzo 2013
  6. Piero Boccadoro Piero Boccadoro 8 marzo 2013
  7. Boris L. 8 marzo 2013
  8. Antonello Antonello 28 febbraio 2013
  9. Emanuele Emanuele 28 febbraio 2013
  10. Piero Boccadoro Piero Boccadoro 28 febbraio 2013
  11. Emanuele Emanuele 28 febbraio 2013
  12. Emanuele Emanuele 1 marzo 2013

Leave a Reply