====== 21B - Conversione D/A ====== ===== 1 La distinzione tra analogico e digitale ===== I segnali analogici possono assumere un numero infinito e continuo di valori, quelli digitali un numero finito e prefissato di valori. Le grandezze fisiche del mondo che ci circonda sono tipicamente analogiche, così come lo sono i segnali che le rappresentano (ad esempio la tensione generata da un microfono) ma la loro trasmissione, elaborazione e memorizzazione oggi è affidata quasi esclusivamente a dispositivi digitali, dove le informazioni sono codificate con una sequenza di bit. Questa soluzione, apparentemente più complicata, permette di realizzare sistemi efficienti, flessibili ed immuni a disturbi, ma richiede una conversione analogico/digitale e digitale/analogica per collegare tra loro sistemi digitali e sistemi analogici. ===== 2 L'errore di quantizzazione ===== Nella conversione in digitale si ha sempre una perdita di informazione: gli infiniti valori che può assumere una grandezza analogica devono essere rappresentati con un numero finito di bit. Questo vuol dire che ad ogni sequenza di bit corrisponderà un intervallo di valori e si determinerà un'incertezza rispetto al valore analogico - l'errore di quantizzazione - che dipende dal numero di bit utilizzati nella codifica. ===== 3 La conversione da digitale ad analogico ===== Supponiamo che una sequenza di //n// bit codifichi il numero intero naturale D. Il codice binario((i termini indicati con //b// sono cifre binarie che posso assumere solo i valori 0 o 1; bn-1 è la cifra più significativa (MSB) e b0 quella meno significativa (LSB) )): `b_(n-1)b_(n-2) ... b_1 b_0` corrisponde al numero intero: `D=b_0 2^0+b_1 2^1+b_2 2^2+ ... + b_(n-1) 2^(n-1)= sum_(i=0)^(n-1) b_i 2^i` Il convertitore digitale/analogico (DAC) traduce il codice binario in una tensione analogica proporzionale al numero D che può essere espressa così: `V_o = Q cdot D = Q sum_(i=0)^(n-1) b_i 2^i` La costante Q che compare nell'espressione precedente è detta **quanto** della conversione e il suo valore è legato alla risoluzione del convertitore perché coincide con la minima variazione dell'uscita o col valore corrispondente al bit meno significativo (LSB). ===== 4 I principi fisici della conversione D/A ===== Esistono varie soluzioni circuitali per realizzare un convertitore D/A. In genere si sfrutta una rete resistiva per generare tante correnti quanti sono i bit di valore proporzionale alle potenze del due; sommando le correnti il cui bit vale 1 e usando un convertitore I/V si ottiene la tensione analogica desiderata. La //figura 2// mostra lo schema di principio di un convertitore di questo tipo. ===== 5 I parametri della conversione D/A ===== Spesso nei datasheet dei convertitori D/A la risoluzione non è indicata con il quanto di conversione ma con il numero di bit //n// del DAC e dalla tensione tensione di fondo scala VFS((esistono tre modi per indicare la risoluzione: il valore del quanto, il numero di bit e la risoluzione relativa Q/VFS=2-n)). Il quanto è comunque calcolabile come: `Q=V_(FS)/2^n` La tensione di fondo scala VFS è suddivisa in 2n intervalli larghi Q e la tensione Vo in uscita può assumere 2n valori compresi tra 0 e VFS - Q. Per chiarire questi concetti esaminiamo la //figura 3// che mostra la caratteristica di trasferimento di un DAC a 3 bit: nelle ascisse è presente il dato digitale - un codice di tre bit associato ad un numero intero D - e in quella delle ordinate la tensione in unscita Vo, che può assumer 23 valori multipli del quanto Q compresi tra 0 e VFS - Q((a rigore la caratteristica è definita solo in corrispondenza dei numeri interi D e i segmenti orizzontali non dovrebbero essere presenti)). In alcuni DAC la tensione di fondo scala può essere variata attraverso un pin indicato come VREF. Questi DAC vengono chiamati moltiplicatori perché, fattore 2-n a parte, forniscono in uscita una tensione pari al prodotto tra la tensione VREF e il dato numerico digitale D: `V_o=V_(REF)/2^n D` Se la tensione VREF può assumere anche valori negativi si parla di DAC a due quadranti((esistono soluzioni ancora più complesse che prevedono codici binari negativi e permettono di realizzare DAC a quattro quadranti)). Questi ultimi possono essere usati anche come **attenuatori digitali**: se consideriamo la tensione VREF come il segnale da attenuare e il valore digitale come fattore di attenuazione, la tensione in uscita potrà variare tra zero e VREF - Q (con un guadagno compreso tra 0 e 1 - 2-n ). Questa applicazione da "potenziometro digitale" è piuttosto diffusa, ad esempio per controllare il volume negli hi-fi. ===== 6 L'interfacciamento di un DAC a un sistema a bus ===== Per interfacciarsi al bus di un sistema a microprocessore un DAC è necessario un registro parallelo che mantenga costante l'uscita fino al ciclo macchina successivo. Il registro a latch può essere direttamente integrato nel convertitore. ===== 7 Le possibili architetture dei convertitori D/A ===== Esamineremo due soluzioni: * i DAC a resistenze pesate sono i più semplici ma i meno utilizzati, perché presentano una serie problemi tecnologici che ne sconsigliano l'uso * i DAC a scala R-2R (o //ladder//) che, specie nella configurazione a scala invertita, costituiscono la quasi totalità dei convertitori commerciali ==== DAC a resistori pesati ==== Il circuito di //figura 7// mostra lo schema di principio di un DAC a resistori pesati a 4 bit. Si tratta di un semplice circuito sommatore invertente dove: * le quattro tensioni in ingresso corrispondono ai quattro bit con cui è codificata l'informazione e possono assumere solo due livelli (ad esempio 0 e 5 Volt che corrispondono ai livelli logici 0 e 1)((in figura V3 corrisponde al bit più significativo (MSB) e V0 a quello meno significativo (LSB) )) * le quattro resistenze di ingresso sono in rapporto 1:2:4:8 rispetto a quella corrispondente al bit più significativo (il nome del DAC deriva proprio dal fatto che le resistenze sono pesate con le potenze del due) Con questa configurazione la tensione V0 in uscita vale: `V_0 = -R_(f) (V_0/R_0 + V_1/R_1 + V_2/R_2 + V_3/R_3)=-R_(f)/R (V_0/8 + V_1/4 + V_2/2 + V_3/1)` Se esprimiamo le tensioni in ingresso come prodotto tra il valore logico Qi((NB si rischia di fare confusione perché il testo usa il simbolo Q sia per il quanto che per il valore logico dei bit)) associato al bit e la tensione VH corrispondente al livello alto: `V_i=Q_i cdot V_H` la tensione in uscita si può esprimere come: `V_0 = -(R_(f)V_H)/R(Q_0/8 + Q_1/4 + Q_2/2 + Q_3/1)=-(R_(f)V_H)/(8R) (8Q_3 + 4Q_2 + 2Q_1 + Q_0)` Allora, a meno di una costante, la V0 coincide col numero codificato in binario come Q3Q2Q1Q0. Il circuito converte una sequenza di 4 bit in un segnale analogico e si comporta come un convertitore con: * quanto `Q=-(R_(f)V_H)/(8R)` * tensione di fondo scala((si ricorda dal paragrafo 5 che il valore massimo di V0 è VFS - Q)) `V_(FS)= 2^4 cdot Q` Il circuito di //figura 5// è un esempio applicativo di un DAC a 4 bit dove il valore digitale da convertire è fornito da un contatore binario che, con un opportuno clock, genera ciclicamente valori da 0000 a 1111. I convertitori D/A a resistenze pesate sono molto semplici ma presentano degli inconvenienti tecnologici che ne rendono poco pratico l'utilizzo: * i livelli delle tensioni in ingresso devo essere stabili e precisi (in //figura 8// una possibile soluzione del problema che sfrutta delle porte logiche per collegare un'unica tensione di riferimento stabilizzata) * i valori delle resistenze devono essere molto precisi e avere tutte la stessa tolleranza in valore assoluto (ad esempio 1 Ohm di tolleranza sia sul resistore da 10 Ω che su quello da 1 kΩ) * al crescere della risoluzione, cioè del numero di bit con cui è codificata l'informazione, aumenta il numero e il range di valori di resistenza necessari; questo comporta una serie di problemi difficili da evitare: difficoltà di integrazione, tolleranze diverse tra i vari resistori, valori molto piccoli comparabili con quelli dei contatti, valori molto grandi comparabili con le resistenze di perdita e controindicati per gli operazionali ==== Convertitori con rete a scala R-2R ==== Lo schema di principio di un convertitore a scala R-2R è mostrato in //figura 9a//. Come si vede si tratta di una rete che impiega due soli valori di resistenza, disposti secondo uno schema simmetrico. Questa soluzione non pone particolari problemi di ordine tecnologico perché permette di realizzare ed integrare un gran numero di resistenze mantenendo una buona precisione. Il circuito è meno problematico del precedente e permette facilmente di ottenere elevate risoluzioni. Il principio di funzionamento è quello già esposto nel paragrafo 4: la combinazione di valori logici in ingresso, pilotando gli interruttori che collegano la tensione di riferimento VR, determina una corrente sul carico che è la somma di tante correnti proporzionali alle potenze del due, convertita successivamente in tensione. Semplificando la rete con Thevenin((vedi scheda integrativa 21B.2)) si ottiene il circuito di //figura 9b//. La tensione del generatore di Thevenin vale: `V_T= V_R/2^n sum_(i=0)^(n-1)b_i 2^i` ed è proporzionale al dato digitale D. In genere la rete R-2R è collegata ad un amplificatore invertente. In questo caso conviene usare una tensione di riferimento negativa -VR in modo che la tensione in uscita valga: `V_o= R_f/R V_R/2^n sum_(i=0)^(n-1)b_i 2^i` Questa espressione corrisponde a quella teorica vista nel paragrafo 3, ma con quanto di conversione che vale: `Q= R_f/R V_R/2^n ` ==== Extra ==== * scheda di laboratorio 21B.1 (analisi sperimentale di un DAC a resistori pesati) * scheda di laboratorio 21B.2 (analisi sperimentale di un DAC con rete a scala R-2R) * problemi svolti: 2 (progetto di un DAC R-2R a 4 bit) ===== 8 Convertitore D/A National DAC0808 ===== Il testo propone l'esame di due DAC integrati con caratteristiche diverse. L'integrato 0808 è un DAC parallelo a 8 bit con rete R-2R invertita e uscita in corrente. E' un integrato semplice perché: * la risoluzione non è elevata * non è presente stadio amplificatore in uscita * non è presente un latch in ingresso tuttavia ha una banda passante elevata (può essere utilizzato in campo audio) e funziona a due o quattro quadranti. ===== 9 Convertitore D/A Analog Devices AD7845 ===== L'integrato AD7845 è un DAC parallelo a 12 bit a rete R-2R invertita e uscita in tensione. E' un DAC più sofisticato del precedente perché: * ha una risoluzione maggiore * integra uno stadio amplificatore in uscita usato come convertitore I/V * integra un latch a 12 bit per l'interfacciamento con sistemi a microprocessore * la banda passante è elevata (può essere utilizzato in campo audio) * funziona a due o quattro quadranti Nel funzionamento a due quadranti (vedi //figura 15//) il DAC si comporta come il circuito equivalente di //figura 14// e la tensione in uscita vale: `V_(OUT)=-V_(REF) N/4096` Il funzionamento a quattro quadranti prevede l'impiego di una tensione di riferimento negativa (vedi //figura 17//); il DAC su comporta come il circuito equivalente di //figura 16// e la tensione in uscita vale: `V_(OUT)=V_(REF) (N/4096 - 1)` Nel funzionamento a due quadranti i 12 bit codificano un numero positivo da 0 a 4096 che corrisponde a una tensione compresa tra 0 e VREF, in quello a quattro quadranti un numero tra -2048 e 2047 che corrisponde a una tensione compresa tra -VREF e VREF((in realtà in entrambi i casi il valore maggiore andrebbe diminuito di un quanto)). ===== Navigazione ===== Torna all'[[start#indice|indice]].