\chapter{Convertitori Digitale-Analogico ed Analogico-Digitale}
\section{Introduzione}
L'informazione digitale che viene elaborata da un generico processore \'e in molti casi successivamente
convertita in un segnale analogico, quale la corrente che alimenta le bobine di un altoparlante,
quella che accende dei LED, la tensione che controlla un condizionatore d'aria etc. Sull'altro
versante, se abbiamo la necessit\'a di analizzare l'andamento di un fenomeno, quale ad esempio
l'andamento della corrente di collettore in un transistor al variare della corrente di base,
la corrente anodica in un fotomoltiplicatore al variare della tensione d'alimentazione, la pressione
in un certo volume di gas al variare della temperatura etc., incontriamo la necessit\'a di
convertire un segnale \emph{analogico} (in genere, una corrente o una tensione fornita da uno
strumento o da un trasduttore) in un segnale \emph{digitale}, ovvero in una stringa di bits.

I circuiti che effettuano la conversione di un segnale analogico in uno digitale sono noti
appunto come ''convertitori Analogico-Digitale'' o brevemente ''ADC''. Circuiti di questo genere
sono disponibili in commercio in un'ampia variet\'a di tipi diversi. 

Un'applicazione che si incontra spesso in fisica \'e quella di fornire una rappresentazione numerica di un segnale dipendente dal tempo. In tale applicazione, la forma d'onda che caratterizza il segnale viene
''campionata'' ad intervalli di tempo estremamente ravvicinati (fino a qualche picosecondo) e
l'ampiezza del segnale in ciascuno di tali intervalli di tempo viene convertita in un numero
binario. Si parla in tal caso di ''digitizzatori di forme d'onda'' (waveform digitizers). In tale
categoria rientrano gli oscilloscopi digitali, che stanno rapidamente sostituendo quelli analogici.

Un'altra applicazione degli ADC che ha avuto un'ampia diffusione negli ultimi anni \'e nelle fotocamere
digitali.

I circuiti che effettuano la conversione opposta, di un segnale digitale in uno analogico sono noti
come ''DAC''.

Nel seguito ci occuperemo di una rassegna dei principi che sono alla base del funzionamento di
entrambi questi tipi di convertitori. Premetteremo una breve discussione dei circuiti che
effettuano il ''campionamento'' del segnale (circuiti di \emph{sample-and-hold}).




\section{Circuiti di Sample-and-Hold}

Per convertire un segnale analogico in uno digitale occorre disporre di un circuito che ''campioni'' 
(sample) il segnale analogico all'istante voluto e ne trattenga (hold) il valore, in attesa che il 
successivo circuito abbia la possibilit\'a di ''leggere'' e convertire il segnale analogico in una 
sequenza di bit, cio\'e in un numero.
I circuiti che realizzano tale funzione vanno sotto il nome di circuiti di ''sample and hold'' ($S\&H$). 
Il pi\'u semplice circuito di $S\&H$ \'e un condensatore la cui carica \'e comandata da un interruttore, 
come mostrato in figura~\ref{sample_1}.


\begin{figure}
  \begin{center}\mbox{\epsfig{file=sample_1.eps,width=6.0 cm,
height=3 cm}}\end{center}
\caption{}
\protect\label{sample_1}
\end{figure}

La chiusura dell'interruttore ad un dato istante consente al condensatore C di caricarsi alla tensione 
del segnale da campionare $V_i$, applicato all'ingresso. La carica del condensatore non sar\'a 
ovviamente istantanea, ma dipender\'a dalla corrente I che la sorgente $V_i$ \'e in grado di erogare, 
oltre che dal valore di C. Una volta carico, il condensatore manterr\'a il potenziale $V_i$ 
anche dopo che l'interruttore sia stato aperto. 
Tuttavia, perdite attraverso il dielettrico causeranno una diminuzione 
della tensione ai capi del condensatore in tempi relativamente brevi. Se poi il condensatore \'e 
collegato, come sempre avviene, ad un carico, tale tempo sar\'a ulteriormente ridotto.
L'interruttore pu\'o esser realizzato facendo uso di un transistor ad effetto di campo (FET) o di una 
porta a diodi.
Di norma, sia la sorgente $V_i$ che l'uscita prelevata ai capi del condensatore sono accoppiate tramite 
operazionali in configurazione ''inseguitore di tensione''. Un esempio \'e quello mostrato in figura~\ref{sample_2}.

\begin{figure}
  \begin{center}\mbox{\epsfig{file=sample_2.eps,width=11.0 cm,
height=4 cm}}\end{center}
\caption{}
\protect\label{sample_2}
\end{figure}


Nell'esempio l'interruttore \'e realizzato tramite un FET. Se il segnale di gate \'e applicato ad un 
certo istante $t_0$, la conseguente chiusura dell'interruttore d\'a inizio al processo di carica del 
condensatore. All'intervallo di tempo che intercorre tra la chiusura dell'interruttore e la carica del 
condensatore alla tensione $v_i(t_0)$ si d\'a il nome di ''tempo di acquisizione''. 
Al termine del segnale di gate, l'apertura dell'interruttore non \'e istantanea, ma ha luogo con un certo ritardo, detto ''tempo di apertura''.
Il tempo di apertura \'e dell'ordine di 50-100~ns se si fa uso di un interruttore a FET, mentre pu\'o 
essere inferiore ad 1~ns se si fa uso di un interruttore realizzato con diodi veloci.
La figura~\ref{sample_3} mostra l'effetto del tempo di apertura e di quello di acquisizione sul segnale 
letto.

\begin{figure}
  \begin{center}\mbox{\epsfig{file=sample_3.eps,width=10.0 cm,
height=6 cm}}\end{center}
\caption{}
\protect\label{sample_3}
\end{figure}


Esaminiamo, con riferimento alla figura, l'effetto di questi ritardi.
Nell'intervallo di tempo A il gate era alto (interruttore chiuso). 
Il segnale campionato dovrebbe essere quello presente all'istante dell'apertura del gate, cio\'e all'inizio dell'intervallo di tempo B, che \'e $v_1$. Il ritardo nell'apertura dell'interruttore 
fa si che questo sia invece  $v_2$.
Quando noi chiudiamo l'interruttore, la tensione ai capi del condensatore sale, come mostrato in 
figura, con legge esponenziale e raggiunge il suo valore asintotico quando la tensione del segnale in 
ingresso \'e passata dal valore $v_3$  che essa aveva al momento della chiusura dell'interruttore, ad un 
nuovo valore $v_4$.

Come accennato, un interruttore veloce pu\'o esser  ottenuto da una porta a diodi. Un semplice esempio \'e 
quello di figura~\ref{porta_diodi}.

\begin{figure}
  \begin{center}\mbox{\epsfig{file=porta_diodi.eps,width=10.0 cm,
height=6 cm}}\end{center}
\caption{}
\protect\label{porta_diodi}
\end{figure}

Il segnale da campionare \'e $v_i$  , mentre i segnali $+V$ e $-V$ costituiscono il gate.
Se $V$ \'e posto ad un valore positivo di ampiezza sufficiente, entrambi i diodi $D_1$   e $D_2$ 
saranno in conduzione. In tali condizioni possiamo verificare che $v_o=v_i$. 
Infatti, essendo in tali condizioni il ramo b-c-d essenzialmente un corto circuito, il circuito equivalente \'e quello mostrato in figura~\ref{porta_diodi_equiv}:

\begin{figure}
  \begin{center}\mbox{\epsfig{file=porta_diodi_equiv.eps,width=8.0 cm,
height=4 cm}}\end{center}
\caption{}
\protect\label{porta_diodi_equiv}
\end{figure}

dove si vede che \'e:

\[
v_o\:=\:v_i \frac{R_L \parallel(R_2/2)}{R_1+R/2+R_L\parallel(R_2/2)}\:=\:v_i \frac{2 R_L R_2}{2 R_L R_2 + (R_2 + 2 R_L)(R + 2 R_1)}
\]


notiamo che per $v_i=0$ \'e $v_o=0$, cio\'e non \'e presente alcun offset.
Se invece il segnale di controllo $V$ \'e negativo, entrambi i diodi saranno interdetti. In tali 
condizioni \'e facile vedere che $v_o=0$.

Il tempo di acquisizione \'e limitato dalla massima corrente che l'operazionale \'e in grado di 
erogare. ($I \sim 25~mA$). Se C \'e la capacit\'a, tale tempo sar\'a all'incirca: $t_A \:=\:CV/I$. 
Questa, con una capacit\'a di 100~nF ed una tensione di 1~V, d\'a $t_A\approx 4~\mu s$. Il tempo di acquisizione pu\'o esser ridotto diminuendo C o aumentando I. 
Ora, una diminuzione di C provocherebbe una diminuzione del tempo di scarica del 
condensatore, legato alle perdite dielettriche dello stesso. 
Rimane quindi solo l'alternativa di aumentare la corrente I. Ci\'o pu\'o esser ottenuto inserendo all'uscita dell'operazionale un emitter-follower complementare, come mostrato in figura~\ref{sample_op_amp}.

%\begin{figure}
%  \begin{center}\mbox{\epsfig{file=sample_emitt_foll.eps,width=10.0 cm,
%height=6 cm}}\end{center}
%\caption{}
%\protect\label{sample_emitt_foll}
%\end{figure}

Apriamo a questo punto una breve parentesi per comprendere il funzionamento dell'emitter-follower complementare indicato in figura.


Gli amplificatori a transistor possono essere classificati come amplificatori di classe A, di classe B, 
di classe AB e di classe C. Un amplificatore \'e di classe A se esso lavora attorno ad un punto posto 
all'incirca al centro delle curve caratteristiche del transistor, e quindi questo opera all'incirca in 
modo lineare. In tali condizioni un segnale sinusoidale applicato in ingresso dar\'a ancora un 
segnale sinusoidale in uscita, con buona linearit\'a. Un amplificatore lavora in classe B se il 
transistor opera attorno ad un punto che \'e molto vicino ad un estremo delle curve caratteristiche. 
In queste condizioni, un segnale sinusoidale applicato in ingresso sar\'a amplificato e presente in 
uscita solo durante un semiciclo.
Per un amplificatore che funzione in classe A, la corrente fluisce nel circuito in ogni istante, anche 
in assenza di segnale applicato in ingresso, mentre per uno che funzioni in classe B la corrente 
fluisce solo durante una semionda. Un amplificatore \'e di classe AB se lavora in una zona intermedia tra 
la classe A e quella B. \'E infine di classe C se il punto di lavoro \'e scelto in modo tale che la 
corrente (o tensione) in uscita sia nulla per pi\'u di una semionda.
Il vantaggio di un amplificatore che lavori in classe B, rispetto ad uno che operi in classe A, \'e che 
in assenza di segnale non c'\'e dissipazione di potenza. Per questo motivo gli amplificatori di classe 
B sono adoperati in tutte quelle circostanze in cui si deve fare attenzione a dissipare poca potenza 
(impianti posti su satelliti, radioline a batteria etc.). Lo svantaggio \'e una maggiore distorsione 
armonica.
Un tipico amplificatore (di corrente) che opera in classe B \'e un emitter follower:

\begin{figure}
  \begin{center}\mbox{\epsfig{file=emitt_foll_schemat,width=8.0 cm,
height=5 cm}}\end{center}
\caption{}
\protect\label{emitt_foll_schemat}
\end{figure}



Per avere amplificazione durante entrambe le semionde, si ricorre ad un dispositivo costituito da 
due emitter-follower in serie, uno dei quali utilizza un transistor NPN e l'altro PNP. Questo prende 
il nome di amplificatore di classe B push-pull (o emitter follower complementare) come schematicamente
indicato in figura~\ref{emitt_foll_compl}.

\begin{figure}
  \begin{center}\mbox{\epsfig{file=emitt_foll_compl,width=10.0 cm,
height=6 cm}}\end{center}
\caption{}
\protect\label{emitt_foll_compl}
\end{figure}

Si vede facilmente che quando $v_i$  \'e positivo, $Q_1$ conduce e $Q_2$  \'e interdetto. 
La corrente \'e $i_1$   e viene da $Q_1$. Durante l'altro semiciclo, $Q_1$  \'e interdetto e $Q_2$ 
in conduzione. La corrente in $R_L$ sar\'a ora $-i_2$, dove $i_2$ \'e la corrente in $Q_2$.

Vediamo ora come un amplificatore di questo tipo possa essere utilizzato come generatore di 
corrente in un sistema di sample-and-hold ad operazionali (vedi figura~\ref{sample_op_amp}):


\begin{figure}
  \begin{center}\mbox{\epsfig{file=sample_op_amp,width=10.0 cm,
height=6 cm}}\end{center}
\caption{}
\protect\label{sample_op_amp}
\end{figure}

Quando un segnale positivo \'e presente sul gate, il FET conduce tutte le volte che $v_i > 0$, 
a condizione che sia $v_i > v_o$. 
Notiamo che il secondo A.O. \'e connesso come inseguitore di tensione, con $v_o$ unito 
all'ingresso invertente del primo A.O.
Quindi $v_o$  \'e forzato a seguire $v_i$ durante il ''sampling time''. 
Notiamo che la corrente che carica il condensatore \'e erogata dal push-pull e non dall'A.O..

Quando il gate \'e basso (intervallo di hold) $v_o$ rimane uguale al valore che esso aveva raggiunto 
durante l'intervallo di sample, a parte un piccolo drift dovuto alla corrente di bias dell'A.O. di 
uscita ed alle correnti di leakage dell'emitter follower e del FET. Maggiore il valore della capacit\'a 
C, minore sar\'a il drift della tensione durante la fase di hold.
Tuttavia, all'aumentare di C, come si \'e visto, aumenta il tempo di acquisizione. La soluzione 
sar\'a quindi un compromesso tra le due diverse esigenze.


\section{Convertitori Digitale-Analogico}

I convertitori Digitale-Analogico (DAC) son dispositivi attraverso i quali un sistema digitale
pu\'o comunicare con il mondo analogico. Anche se l'uso pi\'u diffuso di tali convertitori
consiste, come vedremo, nella realizzazione di convertitori Analogico-Digitale, essi hanno
un'ampia gamma di applicazioni, che va dalla realizzazione di sistemi di display per tubi a
raggi catodici a sintetizzatori musicali, generatori di forme d'onda, attenuatori, e trasmettitori
digitali quali quelli adoperati nei pi\'u recenti sistemi di comunicazione.

Immaginiamo di voler convertire in un segnale analogico, ad esempio in una tensione, 
un'informazione binaria, e che questa sia disponibile all'uscita di un circuito digitale. Possiamo ad 
esempio pensare che l'informazione digitale consista nei livelli d'uscita di un registro costituito da 
N Flip-Flops. Se indichiamo in generale con $a_0$ l'uscita del FF0 (corrispondente al bit meno
significativo), con $a_1$ quella di FF1, e via di seguito fino al FF(N-1) cui associamo il bit $a_{N-1}$, vogliamo realizzare un circuito che fornisca in uscita un 
livello di tensione $V_0$ dato da:
\[
V_0\:=\:V\left(a_0 + 2^1 a_1 + 2^2 a_2 + \cdots +2^{N-1}a_{N-1}\right)
\]

dove V \'e un coefficiente di proporzionalit\'a, legato al range di valori analogici che si
desidera avere in uscita, ed i coefficienti $a_0, a_1, \cdots ,a_{N-1}$
valgono 0 o 1 a seconda che l'uscita del corrispondente FF sia bassa o alta.
Un metodo per realizzare tale funzione \'e suggerito dal sommatore per segnali analogici, 
ottenuto con un'operazionale (in configurazione invertente) come nell'esempio di figura~\ref{convert_dac_simple}, 
relativo al caso di due soli bit:

\begin{figure}
  \begin{center}\mbox{\epsfig{file=convert_dac_simple,width=6.0 cm,
height=3 cm}}\end{center}
\caption{}
\protect\label{convert_dac_simple}
\end{figure}

Se in tale circuito scegliamo $R_0=R$ e $R_1=R/2$ avremo:
\[
V_{out}\:=\:-(V_0 + 2 V_1)
\]
e se ora immaginiamo che $V_0$  e $V_1$  siano le uscite di un registro a 2 bit:
\[
V_i\:=\:0 \Rightarrow livello\;basso	\Rightarrow	numero\;binario\;0
\]
\[
V_i\:=\:1 \Rightarrow livello\;alto\;	\Rightarrow	numero\;binario\;1
\]

vediamo che abbiamo realizzato un convertitore digitale-analogico a due bit. 
Infatti, se \'e:
\[
V_0=1,\:\:V_1=0
\]
avremo
\[
V_{out}=-1
\]
Se \'e:
\[
V_0=0,\:\:V_1=1
\]
avremo:
\[
V_{out}=-2
\]
e cos\'i via.
 
L'estensione ad un numero maggiore di bit \'e immediata. Uno schema di massima per il caso di N 
bit \'e mostrato in figura~\ref{convert_dac_general}, dove potrebbe ad esempio essere: $V_R=-10\;V$, $R=1k$, $R'=5k$.

\begin{figure}
  \begin{center}\mbox{\epsfig{file=convert_dac_general,width=11.0 cm,
height=8 cm}}\end{center}
\caption{}
\protect\label{convert_dac_general}
\end{figure}

Il circuito \'e un sommatore dove:

\[
V_o\:=\:-\left(\frac{R'}{R}a_{N-1}+\frac{R'}{2R}a_{N-2}+\cdots +\frac{R'}{2^{N-1}R}a_{0}\right)V_R\:=\:
\]
\[
=\:5\left(a_{N-1}+\frac{1}{2}a_{N-2}+\cdots+\frac{1}{2^{N-1}}a_0\right)
\]

Se il coefficiente $a_i$ \'e zero, il corrispondente interruttore  $S_i$ \'e collegato a massa ed il termine 
corrispondente nell'espressione ora scritta sar\'a 0.
Gli interruttori $S_0,S_1,\cdots, S_{N-1}$ hanno il ruolo di collegare l'uscita a massa o a $V_R$, 
a seconda che sul gate di ingresso sia presente uno 0 oppure un 1.
Tali interruttori possono essere realizzati in molti modi diversi. Una possibilit\'a \'e quella mostrata
in figura~\ref{totem_pole_m_drive}, che rappresenta un ''totem pole MOSFET drive''


\begin{figure}
  \begin{center}\mbox{\epsfig{file=totem_pole_m_drive,width=10.0 cm,
height=6 cm}}\end{center}
\caption{}
\protect\label{totem_pole_m_drive}
\end{figure}


Gli input $Q$ e $\overline{Q}$  al MOSFET vengono da un registro dove \'e stata preventivamente immagazzinata l'informazione digitale da convertire in segnale analogico. 
Assumiamo di lavorare in una logica negativa, dove lo 0 \'e rappresentato da 0~V e l'1 da -10~V.
Un 1 in ingresso ad un opportuno FLIP-FLOP che precede il MOSFET manda $Q \rightarrow 1$ e $\overline{Q} \rightarrow 0$. 
Con ci\'o il MOSFET $Q_1$ sar\'a ON. La resistenza $R_1$ sar\'a cos\'i collegata alla tensione $-V_R$, 
mentre $Q_2$ sar\'a OFF. 
Analogamente, con un segnale in ingresso uguale a 0, avremo $Q=0$ e $\overline{Q}=1$, con che $Q_1$   sar\'a OFF e $Q_2$ ON.
Cio\'e la resistenza $R_1$ verr\'a ad essere collegata a massa.

L'accuratezza e stabilit\'a dei DAC ora illustrati dipende in primo luogo dall'accuratezza dei valori delle resistenze, nonch\'e dalla variazione che ciascuna di esse subisce con la temperatura.
Un limite importante di questo tipo di DAC \'e costituito dal grande range di valori di resistenza 
necessario. Per un DAC a 10 bit, se la pi\'u piccola delle resistenze \'e $10k\Omega$, 
la pi\'u grande dovr\'a essere $5.12M\Omega$ (cio\'e $2^{N-1}$  volte la pi\'u piccola, con  N=10), 
che comincia ad essere un valore troppo grande. Inoltre, la tolleranza sulla resistenza da $10k\Omega$, 
che nella somma ha un peso pari a $2^9$ volte quello della resistenza pi\'u grande, dovr\'a essere $2^9$
volte pi\'u piccola! Se quindi la resistenza da $5.12 M \Omega$ \'e al $10\%$, quella da $10k\Omega$ 
dovr\'a essere allo $0.002\%$, che \'e praticamente impossibile da realizzare.
Per questo motivo, i circuiti del tipo mostrato sono poco adoperati e sono invece sostituiti dai DAC 
a ''ladder'' (cio\'e a scala) che ora esamineremo.

Questo circuito, di cui mostriamo in figura~\ref{r_2r_ladder} la configurazione non-invertente, usa solo 
due valori di resistenza: $R$  e $2R$. 

\begin{figure}
  \begin{center}\mbox{\epsfig{file=r_2r_ladder,width=10.0 cm,
height=6 cm}}\end{center}
\caption{}
\protect\label{r_2r_ladder}
\end{figure}


L'esempio di figura \'e relativo ad un convertitore a 4 bit.
Cominciamo con l'osservare che, da un generico nodo, si ''vede'' la medesima resistenza sia che 
''guardi'' verso sinistra, sia che si ''guardi'' verso destra o verso il basso.
Cos\'i, dal nodo 0, guardando verso sinistra si vede una resistenza 2R, 
verso il basso si vede sempre 2R, sia che l'interruttore $a_0$ sia collegato a 
massa, sia che esso sia collegato a $V_R$ (ricordiamo che un generatore di tensione ideale ha 
una resistenza interna nulla). Guardando dal nodo 0 verso destra si vede una resistenza R 
in serie con altre resistenze che, come \'e facile verificare, valgono ancora R, comunque siano 
disposti gli interruttori $a_1,a_2,\cdots,a_3$. Verifichiamolo: la resistenza vista dal nodo 3 
guardando a destra \'e 2R, verso il basso \'e ancora 2R; di conseguenza la resistenza totale 
vista dal nodo 3 guardando verso destra e verso il basso \'e il parallelo di 2R con se stessa, 
cio\'e R. Ora, guardando dal nodo 2 verso destra vediamo una resistenza R in serie con questa, cio\'e una resistenza 2R. Poich\'e dal nodo 2 verso il basso c'\'e una resistenza 2R, \'e chiaro che dal nodo 
2 verso il basso + destra c'\'e una resistenza R. 
Il ragionamento \'e facilmente estendibile a tutti i nodi labellati 0, 1, 2, 3. 

Se ora un generico interruttore \'e connesso a $V_R$ e tutti gli altri a massa, la tensione nel 
nodo corrispondente sar\'a $V_R$ meno la caduta ai capi della resistenza 2R che collega il nodo 
all'interruttore. Cio\'e:

\[
V_i\:=\:V_R-2RI
\]

dove la corrente \'e quella che \'e erogata dal generatore $V_R$ verso il nodo. 
Lo schema equivalente utilizzabile per calcolare tale corrente \'e mostrato in figura~\ref{schema_equivalente}.

\begin{figure}
  \begin{center}\mbox{\epsfig{file=schema_equivalente,width=4.0 cm,
height=3 cm}}\end{center}
\caption{}
\protect\label{schema_equivalente}
\end{figure}

Dalla figura \'e immediato vedere che:

\[
I\:=\:\frac{V_R}{3R}
\]
per cui:
\[
V_i\:=\:V_R-\frac{2R}{3R}V_R\:=\:\frac{1}{3}V_R
\]

Quindi un generico nodo il cui interruttore sia chiuso su $V_R$  \'e ad un potenziale $V_R/3$.
Se questo fosse il nodo 3, avremmo:

\[
V_i\:=\:V_3\:=\:\frac{1}{3}V_R\:=\:V_+\:=\:V_-
\]
dove si \'e fatto uso del principio del corto-circuito-virtuale all'ingresso dell'operazionale.
Ne seguirebbe, dall'uguaglianza delle correnti nelle resistenze $R_1$ ed $R_2$:
\[
\left(V_o-\frac{V_R}{3}\right)\frac{1}{R_2}\:=\:\frac{V_R}{3 R_1}
\]
da cui segue:

\[
V_o\:=\:\frac{V_R}{3}\frac{R_1+R_2}{R_1}\:\equiv \overline{V}
\]

Se invece fosse collegato a $V_R$ l'interruttore $a_2$, e tutti gli altri fossero collegati a massa, 
la tensione al terminale non invertente dell'A.O. sarebbe determinata dal partitore costituito 
dalla resistenza R posta tra i nodi 2 e 3 e da quella costituita dal parallelo delle due resistenze 
pari a 2R poste tra il nodo 3 e massa. 
Tale tensione sarebbe quindi la met\'a di quella presente al nodo 3. La tensione in 
uscita sarebbe quindi la met\'a di quella calcolata in precedenza:

\[
V_o\:=\:\frac{1}{2}\frac{V_R}{3}\frac{R_1+R_2}{R_1}\:=\:\frac{1}{2}\overline{V}
\]

In modo analogo, se a $V_R$ fosse collegato l'interruttore $a_1$ e tutti gli altri fossero 
collegati a massa, troveremmo una tensione in uscita pari alla met\'a di quella precedente, 
e cos\'i via.

Facendo ora usa del principio di sovrapposizione, troveremo nel caso generale:

\[
V_o\:=\:\overline{V}\left(a_3 + \frac{1}{2}a_2 + \frac{1}{4}a_1 + \frac{1}{8}a_0\right)\:=
\]
\[
=\frac{1}{8}\overline{V}\left(2^3 a_3 + 2^2 a_2 + 2^1 a_1 + a_0 \right)
\]


cio\'e, con una fattore moltiplicativo $\overline{V}/8$, la rappresentazione analogica del 
numero binario: $a_3,a_2,a_1,a_0$. 
Un problema che \'e presente nel tipo di DAC appena discusso \'e quello legato al ritardo nella 
propagazione del segnale associato alla chiusura degli interruttori. Se infatti gli ingressi 
$a_3, \cdots a_0$ valgono 1000 e si commutano tutti simultaneamente in 0111 
(ricordiamo che il bit pi\'u significativo \'e quello pi\'u vicino all'ingresso non-invertente 
dell'A.O.) l'effetto del cambiamento del bit pi\'u significativo si far\'a sentire per 
primo ed il sistema passer\'a nello stato 0000. 
Successivamente si sentir\'a l'effetto del cambiamento del secondo bit ed il sistema passer\'a nello 
stato 0100, etc. Cos\'i, per un breve intervallo di tempo, l'uscita dell'operazionale acquister\'a la 
successione di valori (decimali) 8,4,6,7. Per ovviare a questo inconveniente conviene adottare uno 
schema in cui gli interruttori sono collegati tutti direttamente all'ingresso dell'operazionale. Uno 
schema (invertente) che realizza questo scopo \'e quello mostrato in figura~\ref{r_2r_inverting_ladder}.

\begin{figure}
  \begin{center}\mbox{\epsfig{file=r_2r_inverting_ladder,width=7.0 cm,
height=7 cm}}\end{center}
\caption{}
\protect\label{r_2r_inverting_ladder}
\end{figure}

Notiamo che gli interruttori $a_3,a_2,a_1,a_0$ sono collegati o a massa o comunque alla massa virtuale 
dell'operazionale. La resistenza vista da un generico nodo (0-3), guardando verso destra o verso il 
basso \'e sempre pari a 2R. La corrente erogata dal generatore sar\'a quindi quella che attraversa 
due resistenze in parallelo, ciascuna uguale a 2R. Tale corrente \'e quindi: $I=V_R/R$.
Se ora $a_3$ \'e collegato all'ingresso invertente dell'A.O. e gli altri interruttori sono 
collegati a massa, una corrente pari ad $I/2$ fluir\'a nella resistenza di feedback (2R) e 
quindi avremo:

\[
V_o\:=\:-2R \frac{I}{2}\:=\:-RI\:=\:-V_R
\]

Se ad esser collegato all'ingresso invertente \'e invece $a_2$, la corrente nella medesima resistenza 
sar\'a la met\'a di quella precedente, e quindi:
\[
V_o\:=\:-\frac{1}{2}V_R
\]

e cos\'i via per $a_1, a_0$. Il funzionamento di questo circuito \'e quindi analogo a quello discusso in 
precedenza, ma ora il problema dei ritardi \'e eliminato.

Uno dei vantaggi di un circuito di conversione a ''ladder'' del tipo esaminato \'e costituito 
dal fatto che una ''scala'' di resistenze R-2R pu\'o esser realizzata industrialmente con tecniche di 
deposizione di film sottili su di un singolo substrato. 
Ci\'o fa si che le variazioni di temperatura siano le stesse per tutte le resistenze del 
ladder; si ottengono in tal modo variazioni delle resistenze relative, con la temperatura, 
inferiori ad una parte per mille per $^oC$.

I convertitori D/A esaminati rientrano nella categoria del tipo \emph{moltiplicatore} 
(Multiplying D/A converter o MDAC). Un MDAC \'e un convertitore D/A che accetta una $V_R$ (tensione di riferimento) variabile nel tempo. 
L'ouput \'e quindi proporzionale alla $V_R(t)$ secondo una costante di proporzionalit\'a che dipende 
dal numero binario impostato sull'ingresso digitale. Un dispositivo di questo tipo pu\'o esser 
utilizzato quindi per moltiplicare due segnali, uno dei quali sia disponibile in forma digitale e 
l'altro in forma analogica. Ad esempio, essi possono essere adoperati per effettuare una conversione da coordinate polati $(r,\theta)$ a coordinate cartesiane realizzando la moltiplicazione: $r \cos \theta$.
Esistono versioni ultraveloci di MDAC, quali il modello AD668 (Analog Devices) che \'e 
estremamente veloce ed \'e disponibile sotto la forma di circuito integrato.

\section{Convertitori Digitale-Analogico pilotati in corrente}

I DAC che abbiamo esaminato hanno l'inconveniente di far uso di interruttori basati su transistor
bipolari, che vengono portati dall'interdizione alla saturazione e viceversa. Questo rappresenta
un limite alla velocit\'a di conversione poich\'e, come sappiamo, un transistor impiega tempi
relativamente lunghi per uscire dalla saturazione. L'alternativa di far uso di interruttori
basati su FET presenta altri problemi, legati all'impedenza dei FET e delle resistenze necessarie
per polarizzarli. 

Un tipo di DAC che non risente di questi problemi \'e quello che sostituisce il generatore di
tensione $V_R$ con generatori di corrente posti in ciascuno dei rami della rete R-2R, e che adopera interruttori in logica ECL, attraverso i quali le correnti possono essere indirizzate verso l'opportuno
nodo della rete, o verso massa. Lo schema di principio di tale circuito \'e mostrato in figura~\ref{idac_converter}.

\begin{figure}
  \begin{center}\mbox{\epsfig{file=idac_converter,width=12.0 cm,
height=5 cm}}\end{center}
\caption{}
\protect\label{idac_converter}
\end{figure}

Come si vede, ciascuno degli interruttori pu\'o esser chiuso sul nodo $i^{mo}$ della rete R-2R
o su di una resistenza di valore $2/3 R$.
\'E facile vedere che la resistenza vista guardando dall'interruttore verso il nodo $i^{mo}$
\'e anch'essa pari a 2/3~R. Infatti, come \'e facile verificare relativamente, ad esempio, al
nodo $a_0$ il circuito equivalente \'e quello di figura~\ref{idac_res_equiv}.

\begin{figure}
  \begin{center}\mbox{\epsfig{file=idac_res_equiv,width=5.0 cm,
height=4 cm}}\end{center}
\caption{}
\protect\label{idac_res_equiv}
\end{figure}

Si vede da tale figura che la resistenza ''vista'' dal generatore di corrente che alimenta tale nodo \'e: 
$2/3 R$.
Lo stesso \'e vero per gli altri nodi. Se ora ammettiamo che l'interruttore che \'e collegato
al nodo $a_3$ sia in posizione tale da collegare il generatore alla rete, la corrente nella 
resistenza $R_1$ sar\'a uguale a:
\[
I_1\:=\:\frac{1}{3}I
\]
e la tensione all'uscita dell'operazionale:
\[
V_o\:=\:-R_2 I_1\:=\:-\frac{R_2}{3} I
\]
Se invece l'interruttore $a_3$ \'e chiuso sulla resistenza $2/3 R$ e ad essere collegato alla rete
\'e invece il generatore che alimenta $a_2$, \'e facile vedere che la corrente in $R_1$ sar\'a
la met\'a di quella precedente, e quindi la tensione in uscita sar\'a:
\[
V_o\:=\:-R_2 I_1\:=\:-\frac{R_2}{3} I\cdot \frac{1}{2}
\]
Vediamo cos\'i che i generatori collegati ai nodi $a_2, a_1, a_0$ compaiono nella tensione
d'uscita con pesi che \'e ciascuno la met\'a di quello del nodo di indice immediatamente
pi\'u elevato. Il circuito \'e quindi un convertitore digitale-analogico a 4~bit.

Come accennato, gli interruttori in tale circuito sono realizzati con porte ECL, ciascuna delle
quali \'e costituita da una coppia di transistor accoppiati, come mostrato in figura~\ref{dac_current_source}.
Il segnale di tensione applicato alla base del transistor TB di figura fa' si che la corrente
fluisca nello stesso transistor, e quindi verso massa, o nel transistor TA, che alimenta il relativo
nodo della rete R-2R. \'E chiaro che in tale circuito la corrente non viene mai interrotta,
ma semplicemente incanalata su uno o l'altro dei due rami.


\begin{figure}
  \begin{center}\mbox{\epsfig{file=dac_current_source,width=6.0 cm,
height=5 cm}}\end{center}
\caption{}
\protect\label{dac_current_source}
\end{figure}


Per un'analisi dettagliata di tale switch, si consulti le referenze~\cite{schilling-belove} o~\cite{taub-schilling}.




\section{Convertitori Analogico-Digitale (ADC)}

\subsection{ADC a contatore (Counting ADC)}

Se il segnale analogico da convertire \'e disponibile all'uscita di un sistema di Sample-And-Hold, la 
conversione pu\'o essere realizzata in vari modi. Di questi, il pi\'u semplice ed economico (anche se 
probabilmente il pi\'u lento) \'e quello che fa uso di un contatore, un DAC ed un comparatore.
Il principio su cui tale circuito si basa \'e quello di generare, facendo uso del contatore, una 
sequenza di numeri binari, del numero di bit che si intende adoperare per la conversione, 
partendo da zero, fino al massimo valore che il numero dei bit consente. 
Tale numero viene convertito dal DAC in un livello di tensione e questo \'e poi confrontato dal 
comparatore con il segnale che si desidera convertire. Ammettendo che questo sia positivo e che esso sia applicato all'ingresso non-invertente del comparatore, al cui ingresso invertente \'e inviata l'uscita 
del DAC, il segnale in uscita dal comparatore sar\'a positivo fino a quando il numero binario generato dal contatore non sia tale da far si che il segnale all'uscita del DAC superi in ampiezza il segnale da 
convertire. Qualora invece il confronto dia un'uscita negativa, un opportuno segnale blocca il 
contatore. Il numero letto all'uscita del contatore a questo punto \'e una stima 
(approssimata per eccesso) del segnale da convertire.
Lo schema di funzionamento \'e quello mostrato in figura~\ref{counting_adc}.


\begin{figure}
  \begin{center}\mbox{\epsfig{file=counting_adc,width=12.0 cm,
height=7 cm}}\end{center}
\caption{}
\protect\label{counting_adc}
\end{figure}


Un impulso di clear resetta il contatore binario, che conta il numero di impulsi che vengono dal 
clock. L'uscita del contatore \'e quindi un numero binario che aumenta linearmente (nel nostro 
caso, in cui abbiamo ipotizzato 4 bit, l'uscita varier\'a da 0 a 15). Questo numero binario viene 
convertito dal DAC in un segnale di tensione V, proporzionale al numero binario stesso, secondo una 
costante di proporzionalit\'a nota, dipendente dalle caratteristiche del DAC.
La tensione V viene poi confrontata, tramite il comparatore C, con la tensione da convertire, $V_a$. 
Fino a che \'e $V_a>V$, l'uscita del comparatore sar\'a alta. Di conseguenza l'input b della porta AND 
sar\'a alto ed i segnali di clock continueranno a fare avanzare il contatore. 
Si noti che $V_a$ non potr\'a superare il massimo valore che V pu\'o assumere, che nel nostro esempio 
di un contatore a quattro bit vale $15 V_R$, dove $V_R$ \'e la tensione di fondo scala del DAC.

Quando V supera $V_a$, l'uscita del comparatore va al livello basso ed il gate AND viene ad essere 
disabilitato. Ora il clock si arresta ed il numero binario presente sui canali di output corrisponde al 
numero binario immediatamente pi\'u alto (di 1 bit) del valore binario di $V_a$.

Notiamo che tale convertitore \'e affetto da un ''errore di quantizzazione'' legato al numero di bit 
adoperato. L'errore \'e tipicamente uguale a met\'a del bit meno significativo. Cos\'i ad esempio, 
ammettendo di avere un ADC a 4 bit, con una risoluzione di 1~bit/100~mV, l'errore sar\'a di $\pm50~mV$.

Questo tipo di ADC \'e intrinsecamente lento. Se infatti l'impulso $V_a$ in ingresso \'e vicino al fondo 
scala, occorreranno quasi 15 impulsi di clock ed altrettanti confronti per realizzare la conversione. 
Se il numero di bit fosse 12 e $V_a$ fosse vicino al fondo scala, dovremmo aspettare 4095 impulsi di 
clock. Se la frequenza del clock fosse 50~ns, dovremmo aspettare circa 200~$\mu s$ per ottenere una 
conversione.


Un circuito che, pur basandosi, come il precedente, sull'idea del confronto del livello di tensione   
con tutta una serie di livelli di tensione generati da un DAC, realizza lo stesso scopo in tempi molto 
inferiori, \'e quello noto come ''ADC ad approssimazioni successive'', discusso nella prossima 
sezione.

\subsection{ADC ad approssimazioni successive}

Per comprendere il principio su cui \'e basato questo ADC, ammettiamo di voler convertire in 
binario un numero compreso tra 0 e 15, ad esempio il numero 8.5.
Nel metodo descritto in precedenza noi facciamo avanzare un contatore, partendo da 0, 
confrontando l'uscita analogica con il numero. Il confronto viene prima effettuato con il numero 0, 
poi con l'1 e via dicendo fino a 9. Il numero di confronti, e quindi di cicli di clock, \'e 10.
Ammettiamo di fare il confronto in modo diverso, ponendoci cio\'e le seguenti domande:

\
\begin{description}


\item[a)] 	{~~~~\'e il numero maggiore o uguale ($\ge$) della met\'a del range totale? (cio\'e di 8). 
	Se la risposta \'e positiva, il valore \'e compreso tra 8 e 16 (estremo superiore escluso); 
altrimenti esso \'e compreso tra 0 e 8. Nel primo caso il bit pi\'u significativo del numero cercato \'e 1, nel secondo 0}

\item[b)] {~~~Nel caso in cui il primo bit sia risultato essere 1, (\'e il nostro caso, poich\'e il nostro numero \'e 8.5) confrontiamo il numero con il valore che divide a met\'a il range (8-16), cio\'e con 12. 
Se il risultato del confronto \'e positivo (numero $\ge \;12$) il secondo bit del numero cercato \'e 1, 
altrimenti \'e 0. Infatti notiamo che $12_{10} = 1100_{2}$.
Ammettiamo che il risultato del confronto sia negativo e che quindi il secondo bit sia 0, allora:}

\item[c)] {~~~Confrontiamo il numero con quello che divide a met\'a il range 8-12, cio\'e con 10. Se il 
risultato del confronto \'e positivo (cio\'e il numero \'e  $\ge\;10$) il terzo bit \'e 1, altrimenti esso \'e 0. Infatti $10_{10}=1010_{2}$. Nel nostro caso troveremo che il terzo bit \'e 0}

\item[d)] {~~Confrontiamo infine il numero con quello che divide a met\'a il range (8-10), cio\'e con 9. Se il risultato del confronto \'e positivo, il quarto bit dovr\'a essere 1, altrimenti esso \'e 0. Nel nostro esempio il bit \'e 0}
\end{description}

A questo punto la conversione \'e terminata. Il numero di confronti \'e stato solo 4, anzich\'e 10.
Ciascun confronto effettuato determina il valore di uno dei bit, a cominciare da quello pi\'u 
significativo fino a quello meno significativo. Si pu\'o dimostrare in generale che la conversione di 
un numero di N bit con questo sistema richiede solo N confronti e non pi\'u $2^N$, come nel caso 
precedente. Ad esempio, per un numero di 12 bit il numero dei confronti \'e 12 anzich\'e $2^{12}=4096$.
Lo schema di massima del circuito \'e mostrato in figura~\ref{adc_succ_approx}.

\begin{figure}
  \begin{center}\mbox{\epsfig{file=adc_succ_approx,width=12.0 cm,
height=8 cm}}\end{center}
\caption{}
\protect\label{adc_succ_approx}
\end{figure}


Si inizia con l'impostare i bit all'ingresso del DAC in modo che solo il bit pi\'u  significativo $A_3$  
sia 1. 
L'uscita del DAC \'e quindi una tensione corrispondente al numero $1000 = 8_{10}$. 
Si confronta $V_b$  con $V_a$. Se $V_a \ge V_b$ la logica di controllo lascia a 1 il bit pi\'u 
significativo, altrimenti lo mette a 0. Il successivo impulso del contatore ad anello (ring-counter) 
pone  $A_2=1$ mentre lascia invariati gli altri bit.

Nel nostro esempio, in cui il numero (tensione in ingresso) era 8.5 V, il primo confronto avrebbe 
posto $A_3=1$. Ora la configurazione presente nel registro \'e:
	\begin{center}
		\begin{tabular}{c c c c}
		$A_3$ & $A_2$ & $A_1$ & $A_0$ \\
		1 & 1 & 0 & 0
		\end{tabular}
	\end{center}
Quindi la tensione  $V_b$  all'uscita del DAC \'e 12V. Un ulteriore confronto trover\'a quindi $V_a=8.5\;V$ e 
$V_b=12\;V$, per cui l'uscita del comparatore sar\'a bassa. Ora la logica di controllo pone a 0 il bit $A_2$ 
e ad 1 il bit $A_1$. Quindi ora avremo:
	\begin{center}
		\begin{tabular}{c c c c}
		$A_3$ & $A_2$ & $A_1$ & $A_0$ \\
		1 & 0 & 1 & 0
		\end{tabular}
	\end{center}
Corrispondente a $10_{10}$.
Il successivo confronto trova ancora una volta un livello basso all'uscita del comparatore. Ora la 
logica di controllo pone $A_1=0$ e $A_0=1$:
	\begin{center}
		\begin{tabular}{c c c c}
		$A_3$ & $A_2$ & $A_1$ & $A_0$ \\
		1 & 0 & 0 & 1
		\end{tabular}
	\end{center}
corrispondente a $9_{10}$.
Il successivo impulso di clock pone $A_0=0$, lasciando invariati $A_3, A_2, A_1$:
	\begin{center}
		\begin{tabular}{c c c c}
		$A_3$ & $A_2$ & $A_1$ & $A_0$ \\
		1 & 0 & 0 & 0
		\end{tabular}
	\end{center}
corrispondente a $V_b=8$.
Ora il ciclo di arresta. La conversione \'e terminata.
Una possibile implementazione di un convertitore di questo tipo, limitato, per evitare eccessive complicazioni, a 3 bit, \'e mostrata in figura~\ref{counting_adc_three_bits}.
I cinque FF di tipo D ($A,B,C,D,E$) sono connessi in modo da realizzare un anello modulo 5. 
Le cinque uscite vengono a trovarsi una alla volta al livello logico 1. I tre FF ($FF0,FF1,FF2$) 
servono a registrare i bit, con $FF0$ che registra il bit meno significativo ed $FF2$ 
quello pi\'u significativo.

\begin{figure}
  \begin{center}\mbox{\epsfig{file=counting_adc_three_bits,width=13.0 cm,
height=10 cm}}\end{center}
\caption{}
\protect\label{counting_adc_three_bits}
\end{figure}

Si inizia con $Q_A=1, \; Q_B=0, \; Q_C=0, \; Q_D=0,\; Q_E=0$. Il $FF2$ \'e quindi nello stato di SET
mentre  $FF0$, $FF1$ sono in quello di RESET. 
Avremo quindi   $Q_2=1, \; Q_1=Q_0=0$. 
In tal modo il numero binario 100 viene dato in ingresso al DAC. 
L'uscita del comparatore sar\'a $C_0=0$ se $V_a \ge V_0$, sar\'a $C_0=1$ se $V_a <V_0$. 
Nel successivo ciclo $Q_B$  sar\'a uguale ad 1, mentre tutti gli altri saranno 0. 
Con ci\'o la porta $G_2$  risulter\'a abilitata ed FF2 verr\'a a trovarsi nello stato di RESET se   
$C_0=1$, di SET se $C_0=0$.
Ci\'o che in sostanza abbiamo fatto \'e stato di provare ad assegnare il valore 1 al bit pi\'u 
significativo; l'abbiamo lasciato uguale ad 1 se il risultato del confronto dava un valore di $C_0=0$  
(cio\'e se $V_a \ge V_0$) mentre l'abbiamo posto uguale a 0 nell'altro caso.
Con il successivo impulso di clock, il livello 1 si sposta da $Q_B$  a $Q_C$. 
Con ci\'o sar\'a ora abilitata $G_1$.  
 
$Q_2$ rimane al valore che aveva in precedenza. Il nuovo numero binario presente sui FF ($Q_2,Q_1,Q_0$) 
viene ora convertito dal DAC e fornito al comparatore. Se $V_0 \le V_a$, $C_0=0$ e le porte 
($G_A,G_B,G_C$) rimangono disabilitate. 
Quindi $Q_1$ non sar\'a resettato. Se invece $C_0=1$, la porta $G_1$  sar\'a abilitata e $Q_1$ 
sar\'a resettato. Il confronto prosegue fino a quando $Q_E$  non diventi uguale ad 1. 
A quel punto vengono abilitate le porte $G_A,G_B,G_C$  e l'uscita digitale sar\'a disponibile per la lettura.

\subsection{Convertitore ADC a rampa singola}

In tale convertitore si misura il tempo necessario affinch\'e una sorgente di corrente costante carichi 
un condensatore di capacit\'a nota ad una tensione pari a quella che si vuol digitizzare.
Il relativo schema \'e  mostrato in figura~\ref{adc_rampa_singola}:

\begin{figure}
  \begin{center}\mbox{\epsfig{file=adc_rampa_singola,width=14.0 cm,
height=8 cm}}\end{center}
\caption{}
\protect\label{adc_rampa_singola}
\end{figure}

Ammettiamo che C sia inizialmente scarico e che $V_a$  sia una tensione positiva. L'uscita del 
comparatore sar\'a bassa. Il segnale di inizio conversione porr\'a ad 1 l'uscita Q del FF, con che la 
porta AND sar\'a abilitata ed il contatore conter\'a gli impulsi di clock. Nel frattempo la corrente 
costante $i$ carica il condensatore C e dopo un tempo tale che:

\[
V_+\:=\:\frac{i}{C}\Delta t \:=\:V_a
\]

l'uscita del comparatore si porter\'a al suo livello alto, resettando con ci\'o il F.F.. 
Ora $\overline{Q}$ passer\'a al livello alto e $Q$ a quello basso. 
La porta AND sar\'a disabilitata ed il registro indicher\'a un conteggio N proporzionale a $\Delta t$  
e quindi a $V_a$. Il livello alto di $\overline{Q}$ resetter\'a contatore e registro, oltre a 
chiudere l'interruttore, scaricando cos\'i il condensatore. Il sistema \'e cos\'i pronto ad un nuovo 
ciclo di conversione.
Questo tipo di ADC, pur molto semplice, non \'e altrettanto accurato. L'accuratezza \'e determinata 
dall'accuratezza e stabilit\'a della capacit\'a C, del generatore di corrente e del comparatore. Per 
questo motivo si preferisce ricorrere all'ADC a doppia rampa, descritto nel paragrafo successivo.

\subsection{L'ADC a doppia rampa}

In questo tipo di ADC l'idea base \'e la seguente. Un convertitore tensione-corrente viene utilizzato 
per fornire ad un condensatore una corrente rigorosamente proporzionale alla tensione $V_a$ applicata 
all'ingresso (tensione che si vuol digitizzare). Ci\'o vien fatto per un intervallo di tempo $T_1$ 
fisso e ben definito. Il condensatore si carica fino a raggiungere una tensione $\overline{V}$ 
come indicato in figura~\ref{doppia_rampa}.

\begin{figure}
  \begin{center}\mbox{\epsfig{file=doppia_rampa,width=11.0 cm,
height=6 cm}}\end{center}
\caption{}
\protect\label{doppia_rampa}
\end{figure}


Successivamente, il condensatore viene scaricato a corrente costante, fino a che, dopo un tempo $T_2$, 
non si annulli la tensione ai suoi capi. 
Un contatore misura il numero di impulsi forniti dal clock nel tempo $T_2$.
L'uscita del contatore sar\'a quindi proporzionale a $T_2$, che a sua volta \'e proporzionale 
a $\overline{V}$ (essendo la pendenza $\beta$ una costante) determinata da $V_a$.

Prima di esaminare i dettagli di un tipico circuito di questo tipo, notiamo che il risultato ora non 
dipende dal preciso valore C della capacit\'a. Infatti, se C aumenta, nell'intervallo di tempo $T_1$ 
la corrente $i$ caricher\'a il condensatore ad una tensione pi\'u bassa. Questa sar\'a comunque tale 
che il prodotto  $C \overline{V}$ sia costante. 
Nella successiva scarica del condensatore (a corrente costante $i$) il tempo $T_2$ sar\'a determinato dalla condizione:
\[
T_2\:=\:\Delta t \:=\:\frac{C \overline{V}}{i}
\]

e sar\'a quindi il medesimo di prima, essendo $\overline{V}$ diminuito in modo tale che 
$C \overline{V}$  rimanesse costante.

Notiamo inoltre che, essendo il conteggio espresso in numero di impulsi di clock, il risultato non 
dipende dal valore esatto della frequenza del clock.
Infatti, ammettiamo che il clock sia un po' pi\'u lento del ''normale''. Essendo $T_1$ espresso in numero 
di cicli di clock, l'intervallo $T_1$ sar\'a fisicamente pi\'u lungo del ''normale'' e di conseguenza $\overline{V}$  sar\'a maggiore. 
Il processo di scarica impiegher\'a quindi un tempo corrispondentemente pi\'u lungo. 
Ma, essendo alla fine tale tempo espresso in unit\'a di cicli di clock, che sono pi\'u lenti del 
''normale'', il numero risultante risulter\'a invariato.

Veniamo ora ad un'implementazione schematica di tale convertitore, come quella di 
figura~\ref{adc_doppia_rampa}.

\begin{figure}
  \begin{center}\mbox{\epsfig{file=adc_doppia_rampa,width=11.0 cm,
height=7 cm}}\end{center}
\caption{}
\protect\label{adc_doppia_rampa}
\end{figure}

Ammettiamo che $V_a$  sia $>0$ e $V_R < 0$. L'interruttore $S_1$ \'e inizialmente aperto, $S_2$ \'e chiuso 
ed il contatore \'e azzerato.
Ammettiamo ora che all'istante $t=t_1$ $S_1$ sia portato in posizione $V_a$  ed $S_2$ venga aperto. L'operazionale dar\'a un segnale di tensione V in uscita proporzionale all'integrale di $V_a$ (che ammettiamo rimanga costante durante il tempo di conversione). Inoltre tale segnale sar\'a negativo. Ammettendo che il 
contatore sia congegnato in modo da azzerarsi dopo $2^N$  impulsi di clock (dove N \'e il numero di bit 
in uscita) e che   dopo tale tempo esso dia un segnale di clear che agisce su $S_1$ portandolo in posizione  
$V_R$, avremo che, a partire da tale istante il condensatore comincia a scaricarsi e V comincia a risalire, 
come mostrato in figura~\ref{doppia_rampa_invert}.

\begin{figure}
  \begin{center}\mbox{\epsfig{file=doppia_rampa_invert,width=11.0 cm,
height=7 cm}}\end{center}
\caption{}
\protect\label{doppia_rampa_invert}
\end{figure}


Vediamo dalla figura che V prima decresce e poi cresce linearmente nel tempo.
Al tempo $t=t_3$ l'uscita V dell'integratore ripassa per lo zero.
Fino a che V rimane negativo, l'uscita del comparatore sar\'a al suo livello alto e la porta AND 
permetter\'a il conteggio degli impulsi di clock. In $t=t_3$ V diviene uguale a zero, il gate AND \'e 
disabilitato ed il conteggio si arresta.
Possiamo ora far vedere che la lettura del contatore al tempo $t=t_3$  \'e proporzionale al segnale in 
ingresso.
Questo pu\'o essere compreso intuitivamente, se si pensa che la pendenza del segmento di retta che 
rappresenta V nell'intervallo di tempo $t_1 - t_2$ \'e proporzionale all'ampiezza del segnale in ingresso. 
Di conseguenza, l'altezza massima raggiunta da V \'e proporzionale al segnale in ingresso. D'altronde, il tempo che il segnale impiega a ritornare a zero \'e proporzionale all'altezza massima che esso aveva raggiunto, e tale tempo \'e quello che il contatore ha sulla propria uscita digitale alla fine, cio\'e al tempo $t_3$.
In modo pi\'u formale; il valore di V per $t=t_3$ \'e dato da:
\[
V\:=\:-\frac{1}{RC}\int_{t_1}^{t_2} V_a dt\:-\:\frac{1}{RC}\int_{t_2}^{t_3} V_R dt\:=\:0
\]
da cui:
\[
V_a (t_2 - t_1) + V_R(t_3 - t_2)\:=\:0
\]
e quindi:
\[
V_a \cdot T_1 + V_R \cdot T_2 \:=\:0
\]

Se il numero di impulsi nel tempo $t_2 - t_3$ \'e  $n_2$, allora $T_2=n_2 T$; 
inoltre: $T_1=n_1 T$; per cui:
\[
V_a 2^N T \:+\: V_R n_2 T\:=\:0
\]
\[
V_a \:=\:n_2 \frac{|V_R|}{2^N}\:=\:k n_2
\]



\subsection{Flash ADC}

Un tipo di ADC estremamente veloce \'e quello a comparatori paralleli, noto anche come Flash 
ADC. L'idea base di questo convertitore \'e quella di confrontare la tensione da convertire con un 
insieme finito di livelli di tensione predeterminati, corrispondenti ciascuno ad un diverso numero 
binario in uscita. Il confronto vien fatto contemporaneamente con tutti tali livelli di tensione; ci\'o 
che rende il circuito estremamente veloce.
Esaminiamo la struttura base di un convertitore a 3~bit, quale quello mostrato in figura~\ref{flash_adc}.

\begin{figure}
  \begin{center}\mbox{\epsfig{file=flash_adc,width=12.0 cm,
height=9 cm}}\end{center}
\caption{}
\protect\label{flash_adc}
\end{figure}



$V_a$ \'e la tensione da convertire, $V_o$  una tensione fissa di riferimento. Il partitore costituito dalle 
resistenze $R/2,R$,  fa si che l'ingresso non invertente del comparatore $C_7$  sia ad una tensione 
pari a $13V_o/14$, quello di $C_6$  a  $11V_o/14$ , e via dicendo, fino a  $C_1$ che ha l'ingresso non invertente a $V_o/14$. L'uscita dei comparatori \'e collegata all'ingresso di altrettanti flip-flop di
tipo D,  che a loro volta sono collegati alla logica di decodifica (costituita di porte AND) 
che genera i bit  $A_0,A_1,A_2$.

Ammettiamo che $V_a$  sia compresa tra $5/14 V_o$ e $7/14 V_o$. L'uscita dei comparatori $C_1,C_2,C_3$ 
sar\'a allora al livello 0, mentre quella dei restanti sar\'a al livello 1.
Notiamo che \emph{tutti} i comparatori $C_i$ con $i>3$  hanno le uscite al livello 1, mentre tutti i 
comparatori $C_i$ con $i \le 3$ hanno le uscite al livello 0. 
Se ora $V_a$ aumentasse e salisse ad esempio al di sopra di $7/14 V_o$, il numero delle uscite che 
sono al livello 0 aumenterebbe, cio\'e la colonna degli 0 salirebbe. 
Quindi l'altezza di tale colonna \'e una misura della tensione $V_a$ applicata in ingresso. 
Per tale motivo \'e invalso l'uso di riferirsi  all'output della colonna dei comparatori 
come ''thermometer code'', poich\'e sale e scende come la colonnina di mercurio in un termometro.
La logica di controllo, la cui struttura interna non \'e indicata, \'e essenzialmente un  decodificatore. 
Alla configurazione del nostro esempio dovranno corrispondere in uscita i bit $011$.
Tale ADC richiede $2^{N-1}$ comparatori per convertire una tensione in un numero di N~bits; cio\'e 4095 
comparatori per un numero di 12 bit.


\section{Caratteristiche dei DAC ed ADC commerciali}

In questa sezione accenneremo brevemente alle caratteristiche dei DAC disponibili in commercio, 
discutendo quelli che sono i parametri pi\'u importanti tra quelli quotati dai produttori.
Tale terminologia si applica, con le dovute precisazioni, anche ai convertitori analogico-digitale.
Per ulteriori dettagli si consiglia di consultare i manuali forniti dai produttori. Ad esempio,
si consulti il sito WEB della National Semiconductor~\cite{national}

\begin{itemize}
\item Risoluzione

Questa \'e determinata dal numero di bits del convertitore. Un convertitore a 8 bit 
pu\'o ''distinguere'' 256 numeri diversi ed ha quindi una risoluzione di $1/256 \approx 4\%$. Un 
convertitore a 12 bit pu\'o distinguere 4086 livelli (numeri) diversi ed ha una risoluzione di 
circa lo $0,24\%$.

\item Linearit\'a

Se applichiamo all'ingresso di un DAC una serie di numeri binari da $0$ a $2^{N-1}$, 
dove N \'e il numero di bit, la tensione in uscita avr\'a un andamento a scala, come mostrato in figura~\ref{scaletta}.

\begin{figure}
  \begin{center}\mbox{\epsfig{file=scaletta,width=9.0 cm,
height=6 cm}}\end{center}
\caption{}
\protect\label{scaletta}
\end{figure}


Se effettuiamo un fit con una retta a tale andamento e valutiamo poi lo scostamento di ciascun 
gradino da tale retta, si definisce di solito ''non-linearit\'a'' la massima deviazione trovata. Idealmente 
questa dovrebbe essere inferiore alla variazione di tensione corrispondente ad una variazione di 
met\'a del bit meno significativo. Ad esempio, se il convertitore \'e a 12 bit e quindi il numero dei 
livelli possibili \'e 4096, la deviazione dalla linearit\'a dovrebbe idealmente essere inferiore a 
$\frac{1}{2}\frac{1}{4096}=1.2\,10^{-4}$.

\item Linearit\'a differenziale

\'E in genere quotata una non-linearit\'a differenziale, definita come la differenza tra la variazione
di tensione letta in uscita e quella ideale, cio\'e quella corrispondente alla variazione di 1~LSB (bit
meno significativo) in ingresso. Ad esempio, un DAC per il quale, variando l'ingresso di un LSB si 
osservi una variazione della tensione in uscita che corrisponda ad 1.5~LSB, ha una non-linearit\'a
differenziale di 1/2~LSB.

\item Monotonicit\'a

All'aumentare del numero binario impostato sull'ingresso di un DAC, la tensione in uscita
deve salire in corrispondenza. Se per un certo incremento dell'input, l'uscita subisce
una diminuzione, il DAC non \'e monotono. La non-monotonicit\'a \'e quindi legata alla
non-linearit\'a. 

\item Offset 

Questo \'e il segnale che \'e presente in uscita quando l'ingresso digitale \'e zero. Questo \'e 
in genere specificato in $mV$   o $\mu V$  o come frazione del bit meno significativo.

\item Precisione (Scale error)

Questa \'e la differenza tra la tensione analogica reale in uscita e quella ideale. La 
mancanza di linearit\'a contribuisce a diminuire la precisione. La precisione \'e in genere quotata ad 
esempio come ''0.1$\%$ di fondo scala $\pm \frac{1}{2}$  del bit meno significativo''.

\item Errore di offset

\'E la tensione all'uscita del DAC quando tutti gli ingressi zero. Questo \'a causato in genere dalla
tensione o corrente di offset degli operazionali impiegati. In genere \'e aggiustabile regolando
un trimmer o potenziometro esterno al DAC.

\item{Tempo di assestamento} 

Questo \'e definito come l'intervallo di tempo necessario, dopo l'applicazione dell'input, perch\'e l'uscita si assesti sul suo valore asintotico.
\end{itemize}
\newpage

