Analogico Digitale: andata e ritorno - 4
Teoria e pratica dei convertitori AD e DA - parte 4
di Mario Di Cola e Marta Furlan
Eccoci di nuovo, e sperando che non vi siate gia rotti i “cabbasisi”, come direbbe sempre Montalbano, cerchiamo di fare qualche passo in avanti in più. Il nostro obiettivo ora, è quello di focalizzarci sugli aspetti pratici della conversione Analogico-Digitale, cercando, per quanto possibile, di capire quali sono i parametri il cui controllo ne determina o meno la “buona riuscita”. In particolare, cercheremo di analizzare le tipologie d’errore introdotte dall’operazione di conversione di un segnale, e lo faremo tenendo ben distinte le due fasi di campionamento e quantizzazione, poiché ciascuna di loro introduce sul segnale analogico tipi d’errore differenti tra loro.
Prendi e Mantieni…
Il circuito di campionamento (Sample & Hold o “Campiona e Mantieni” per noi…) è, di fatto, un circuito analogico a cui è applicato il segnale da campionare ed un segnale di comando.
In corrispondenza di ciascun impulso di comando, il circuito “cattura” il valore di tensione in ingresso in quell’istante, lo memorizza e lo propone sulla sua uscita sino al successivo comando. Di solito è un circuito come questo ad essere utilizzato per fornire il segnale campionato a un convertitore A/D (il quale ne dovrà poi tradurre l'ampiezza nel relativo codice binario.
Un esempio (molto schematizzato) di circuito S&H che realizza il campionamento è quello indicato in figura 1. In tale circuito, tramite un interruttore che viene chiuso per brevissimi istanti ad intervalli regolari, viene caricato un condensatore sino al valore di tensione applicato all’ingresso. Ovviamente il segnale è applicato in ingresso tramite un opportuno disaccoppiamento. Il tempo di chiusura deve essere il più breve possibile per far sì che nella sua durata la variazione del segnale da campionare sia del tutto trascurabile, ma allo stesso tempo deve essere sufficientemente lungo in modo che il condensatore abbia tempo sufficiente per caricarsi. Terminata ciascuna carica, l’apertura dell’interruttore fa sì che il valore accumulato sulla capacità sia mantenuto poiché questa è isolata dall’ingresso. L’interruttore è di solito realizzato tramite un transistor di tipo MOSFET comandato da una tensione al Gate che ne determina la chiusura o apertura. La presenza di un OpAmp come buffer d’uscita infine, consente di “leggere” il valore di carica contenuto nel condensatore senza che essa possa variare, senza cioè intaccarne il contenuto informativo memorizzato. Nello specifico, l’OpAmp si presta esso stesso a fornire in uscita la corrente necessaria ad un qualsiasi ingresso di lettura invece di prelevarla dalla carica del condensatore.
Figura 1. Schema di un circuito Sample & Hold: il cuore del circuito è costituito in sostanza da un condensatore ed un interruttore. Infine, Il circuito di interruzione e il suo driver costituiscono il meccanismo attraverso cui il condensatore di hold è alternativamente posto dalla fase di sample alla fase di hold. L'interruttore (switch) viene attivato dal clock, e pone il circuito in “Hold” per tutto l'intervallo tra un istante di campionamento ed un altro, mentre scatta su “Sample” solo nell'istante di campionamento. Data la brevissima durata di questo intervallo, si capisce che è il sistema di clock ad essere di fondamentale importanza per il corretto funzionamento del circuito S/H. Eventuali errori dovuti alla temporizzazione del Clock sono detti jitter e introducono rumore nel segnale. Per evitare jitter udibili, è necessario che eventuali errori siano inferiori al nanosecondo. L’amplificatore d’ingresso disaccoppia il segnale analogico: esso presenta un’elevata impedenza alla sorgente del segnale, e fornisce un guadagno di corrente per caricare il condensatore di hold. Il buffer d’uscita infine, offre un’elevata impedenza al condensatore di hold in modo da evitare che esso si scarichi prematuramente.
La fase di S&H realizzata tramite un circuito siffatto (concettualmente non molto lontano dalla realtà pratica) è per sua natura soggetta ad una serie di “errori” e, se non se ne tiene conto, essi possono portarci lontano dalla condizioni di idealità di cui parlavamo nelle puntate precedenti (vi ricordate che vi mostravamo il segnale campionato come un serie di valori puntuali del segnale analogico presi ad intervalli regolari…).
…quanti errori!
A generare errori durante il campionamento intervengono diversi fattori. Gli accoppiamenti capacitivi indesiderati che per esempio ci sono tra la capacità CH che memorizza il valore del campione, e le capacità parassite presenti tra i terminali del MOSFET, possono essere una delle cause. All’apertura dell’interruttore (fase di Hold) si determinano pertanto delle transizioni di carica tra le varie capacità. Tutto ciò può determinare una perturbazione della tensione memorizzata sul condensatore.
Altro problema che può contribuire a generare errori è rappresentato dal processo di scarica che subisce la capacità a causa della corrente di Bias (polarizzazione) dell'OpAmp e delle correnti di Leakage (perdita) del MOS.
Accorgimenti pratici possono essere messi in pratica agendo sul valore della capacità di Hold in modo da ridurre gli errori. In altre parole, volendo minimizzare gli accoppiamenti capacitivi con le capacità parassite del MOS è chiaro che il condensatore di Hold deve essere aumentato nella capacità ma… il processo di carica, il quale ha una costante di tempo ben precisa proporzionale alla resistenza di conduzione del MOS ed al valore della capacità, potrebbe essere con quest’accorgimento rallentato ancor di più. E questo non è bello, poiché bisognerebbe lasciare chiuso il MOS per un tempo maggiore nella fase di carica e durante tale tempo potrebbe non essere più vero che il segnale in ingresso sia variato in maniera trascurabile!
Dove invece le cose possono farsi ancora più gravi, ovvero dove può cadere il palco di tutte le nostre belle parole delle puntate precedenti, è all'interno delle inaccuratezze che possono nascere dalla temporizzazione in certi casi non ideale del segnale di comando di apertura/chiusura dell'interruttore realizzato tramite MOS.
Vi ricordate cosa si disse? Sotto l’aspetto della garanzia della perfetta ricostruibilità del segnale non sono né il numero di bit, né la frequenza di campionamento a rendere i convertitori migliori. La cosa veramente fondamentale è che la temporizzazione sia corretta, vale a dire che tutti i campioni siano presi dal segnale ad intervalli perfettamente equispaziati nel tempo. Questo ci garantisce davvero che il segnale sia ricostruibile.
Come si può notare siamo nel campo dell’elettronica pura: la riduzione di questi errori è possibile solo lavorando a livello delle caratteristiche statiche e dinamiche dei singoli componenti, ed è pane per i denti dei progettisti elettronici.
Si potrebbe continuare per pagine e pagine a parlare di tali questioni ma ciò di cui è davvero essenziale rendersi conto è come non siano pochi i problemi da risolvere per ottimizzare un convertitore, e che la risoluzione di ciascuno di questi problemi porta di solito in direzioni molto differenti e talvolta opposte. E, infine, è oltremodo inevitabile accettare che tali migliorie possano spesso portare ad aumentarne i costi.
Pertanto, se pensiamo che cercando di lavorare a frequenze di campionamento sempre più alte tali problemi tendono ad aumentare esponenzialmente, troveremmo decisamente logico riflettere e chiederci se apparecchiature “giocattolo” che offrono conversioni a 96 kHz o addirittura 192 kHz a prezzi irrisori possano contenere stadi di conversione realmente accurati. Forse sarebbe meglio a volte accontentarsi di un buon 48 kHz, o no?
Quantizzando…
Continuiamo ancora per un po’ a parlare d’errori e per far questo dobbiamo ora citare l’altro grande “filone di indagini” sul tema, che è quello degli errori di quantizzazione. Tale errore è purtroppo ineliminabile. Tra l’altro, non è il caso di soffermarsi troppo sull’argomento in quanto già l’ing. Michele Viola vi ha dedicato su queste stesse pagine un’approfondita e bellissima analisi qualche numero fa. Come credo sia ben risaputo, il livello del segnale da applicare all’ingresso di un convertitore deve essere tenuto sotto attento controllo per non saturarlo. È noto, infatti, che l’effetto dello “sforamento” dalla gamma dinamica prevista per un convertitore è all’ascolto davvero “disgustoso”. L’intero processo di conversione AD consiste nel tradurre il segnale analogico fornito in ingresso nella corrispondente sequenza di bit, o parola binaria, e rendendolo a tutti gli effetti digitale. Il risultato del solo processo di Sample & Hold è invece solo quello di fornire un segnale fatto a “scalini”, in cui tra campione e campione il livello di tensione del segnale è mantenuto costante.
Il valore di tensione che il segnale può avere però può essere uno qualsiasi degli infiniti valori possibili che si possono individuare nell’intervallo di tensione all’interno del quale conteniamo il nostro segnale, sia pur esso come abbiamo detto ben limitato. E questo non è ancora compatibile con il mondo numerico poiché tutti i dati devono sempre avere dimensione finita. In questa seconda fase della conversione AD quindi, ciascun campione deve essere convertito in uno dei codici binari disponibili. Il numero di codici disponibili è finito ed è legato al numero di bit che costituiscono la parola binaria: in particolare, con N bit in uscita al convertitore, si hanno a disposizione 2n codici binari o livelli.
Se in ingresso al convertitore poniamo un segnale che può oscillare ad esempio tra un valore minimo di 0 Volt ed un valore massimo pari a Vref ed il nostro convertitore può riconoscere solo 2n possibili livelli, ed ipotizzando i livelli equidistanziati, avremo che la distanza tra due livelli adiacenti è Vref /2n: tale quantità prende il nome di LSB o Least Significant Bit (Bit meno significativo) e vuol dire cioè che in un numero espresso in forma binaria, tipo “100101110001”, quella quantità corrisponde esattamente al valore elettrico che ha un “1” se posto nell’ultima posizione a destra. Tornando a noi: all’arrivo di ogni campione il convertitore dovrà decidere (secondo un certo criterio) a quale livello associarlo. Se in un certo istante il segnale vale 18 mV ed ipotizzando che i valori resi possibili dalla quantizzazione della scala siano codici binari corrispondenti a 16 mV oppure 20 mV (LSB =4 mV), il convertitore dovrà decidere quale dei due valori assegnargli. Siamo consci che in ognuno dei casi il risultato è “falso” e contiene un piccolo errore, che detto appunto errore di quantizzazione che prende in definitiva la forma di un rumore aggiunto al segnale detto “rumore di quantizzazione”.
Per tale motivo, questa fase della conversione AD sarà sempre affetta da un errore non eliminabile a meno di particolari artifizi, il quale potrà avere ampiezza massima pari a ±1/2 LSB, imputabile alla discretizzazione del segnale tramite la scalinata dell'ADC.
Inoltre, il rumore di quantizzazione è solitamente trattato come rumore casuale uniformemente distribuito tra +1/2 LSB e ‑1/2 LSB, quindi ha valore medio nullo. La sua deviazione standard è invece pari a 1/√12 * LSB (≈ 0,29 LSB). Per questo, un convertitore a 8 bit aggiunge al segnale in uscita un rumore avente valore quadratico medio (RMS) pari a 0,29/256 cioè 1/900 dell’intera gamma dinamica, mentre un convertitore a 12 bit ne aggiunge uno avente livello RMS pari a 0,29/4096 e cioè 1/14.000 del totale, più basso del precedente; nel caso dei 16 bit si ha che 0,29/65536 equivale a circa 1/227.000 della gamma dinamica. Si tratta di un’approssimazione abbastanza realistica che viene utilizzata per poter individuare un modello matematico piuttosto semplice che ci permette anche di affrontare e ridurre gli effetti della quantizzazione.
Il numero di bit utilizzati determina pertanto la precisione del dato digitale: citiamo solo il fatto che, a parità di numero di bit, tale precisione può essere ulteriormente migliorata con particolari tecniche come il “Dithering” di cui però qui non tratteremo.
Figura 2 (Tratta da libro di Stephen W. Smith “The Scientist and Engineer’s guide to DSP”):
Il segnale analogico in ingresso (grafico A) una volta sottoposto a Sample & Hold si otterrà in uscita il segnale che si osserva nel grafico B. Dopo la successiva quantizzazione (C) si ottiene un segnale in cui anche il livello assume solo valori discreti. Se raccogliamo campione dopo campione l’errore commesso in ciascuna delle approssimazioni otterremo un vero e proprio segnale (grafico D) che ha una vera e propria natura di rumore il quale è la differenza, campione per campione tra B e C.
La scelta di un appropriato numero di bit da utilizzare nella conversione porta ad ottenere un segnale digitale il più possibile fedele al segnale analogico in ingresso, in quanto non ne altera il contenuto spettrale e il livello di rumore in esso presente.
Risulta chiaro che con un sempre maggior numero di bit a disposizione la rappresentazione del segnale sarà in teoria sempre più accurata. Tuttavia non è detto che la scelta del tipo di convertitore da utilizzare debba necessariamente cadere a priori su quello avente un maggior numero di bit. I risultati che abbiamo citato si riferiscono a situazioni teoriche supponendo che tutto il resto sia perfetto. Ci sono vari fattori che possono deteriorare le performance reali di un convertitore in termini di risoluzione ed accuratezza, dipendenti dalla quantità di rumore generato da tutta la sua elettronica di contorno e dalla bontà del circuito in cui viene inserito. Ed è per questo motivo che quando ci si avvicina a delle macchine digitali, non essendo il solo numero di bit a dare un’idea precisa della sua risoluzione, si parla dunque di risoluzione effettiva, cioè si prende in considerazione la reale gamma dinamica esibita e si va a calcolare il numero dei bit (non necessariamente intero) teoricamente equivalenti a tale valore: e questa analisi riserva spesso delle inaspettate sorprese! A presto.
CLICCA QUI PER ACCEDERE ALLA QUINTA PARTE