\chapter{Convertitori Digitale-Analogico ed Analogico-Digitale}    
\label{cap:convertitori_dac_adc}

\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 il relativo segnale \emph{analogico} (di
corrente o tensione) in un segnale \emph{digitale}, ovvero in una
stringa di bits.

\index{Convertitore! analogico-digitale}
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.

\index{Convertitore! digitale-analogico}
I circuiti che effettuano la conversione opposta, di un segnale
digitale in uno analogico sono noti come ``Digital to Analog
Converters'' (DAC).

Una tipica applicazione degli ADC si incontra in quelli che sono noti
come ``Waveform Digitisers'' (digitizzatori di forme d'onda). Questi
forniscono una rappresentazione numerica di segnali dipendenti dal
tempo. In tale applicazione, la forma d'onda che caratterizza il
segnale viene ``campionata'' ad intervalli di tempo equi\-spaziati,
estremamente ravvicinati (fino a qualche picosecondo) e l'ampiezza del
segnale in ciascuno di tali intervalli di tempo viene convertita in un
numero binario.  In tale categoria rientrano, tra gli altri, gli
oscilloscopi digitali, che stanno rapidamente sostituendo quelli
analogici. Nella medesima categoria rientrano tutti i sistemi di
trasmissione digitale, le fotocamere digitali etc..

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}

\index{Campionamento del segnale}
\index{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}[h!]
  \begin{center}\mbox{\epsfig{file=dac_adc/sample_1.eps,width=6.0 cm,
height=3 cm}}\end{center}
\caption{Semplice circuito \emph{sample-and-hold} costituito da un
  condensatore la cui carica \`e comandata da un interruttore.} 
\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}[h!]
  \begin{center}\mbox{\epsfig{file=dac_adc/sample_2.eps,width=11.0 cm,
height=4 cm}}\end{center}
\caption{Circuito \emph{sample-and-hold} in cui l'interruttore \`e
  realizzato tramite un FET e sia l'ingresso che l'uscita sono
  accoppiate tramite ``inseguitori di tensione''.} 
\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.
\index{Tempo di acquisizione}

\begin{figure}[h!]
  \begin{center}\mbox{\epsfig{file=dac_adc/sample_3.eps,width=14.0 cm,
height=9 cm}}\end{center}
\caption{Effetto dei tempi di apertura ed acquisizione sulla lettura
  di un segnale in ingresso.} 
\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$. A tale ritardo si d\`a il nome di ``tempo di
apertura''.

Quando chiudiamo l'interruttore, la tensione ai capi del condensatore
sale con legge esponenziale e raggiunge il suo valore asintotico
quando il segnale in ingresso \`e passato dal valore $v_3$ che esso
aveva al momento della chiusura dell'interruttore, ad un nuovo valore
$v_4$. Al ritardo tra l'istante in cui l'interruttore viene chiuso e
quello in cui la tensione sul condensatore ha raggiunto il valore del
segnale in ingresso si d\`a il nome di ``tempo di acquisizione''. \`E
importante che il tempo di apertura, come quello di acquisizione,
siano il pi\`u piccoli possibile.
\index{Tempo di acquisizione}

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}[h!]
  \begin{center}\mbox{\epsfig{file=dac_adc/porta_diodi.eps,width=10.0 cm,
height=6 cm}}\end{center}
\caption{\Index{Porta a diodi}.} 
\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
\begin{figure}[h!]
  \begin{center}\mbox{\epsfig{file=dac_adc/porta_diodi_equiv.eps,width=10.0 cm,
height=5 cm}}\end{center}
\caption{Circuito equivalente alla porta a diodi di figura~\ref{porta_diodi}.} 
\protect\label{porta_diodi_equiv}
\end{figure}
figura~\ref{porta_diodi_equiv}, 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}[h!]
%  \begin{center}\mbox{\epsfig{file=dac_adc/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.

\index{Amplificatore! a transistor} 
\index{Amplificatore! a transistor! di classe A}
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 \index{Amplificatore! a transistor! di 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
\index{Amplificatore! a transistor! di classe AB} se lavora
in una zona intermedia tra la classe A e quella B. \'E infine di
classe C \index{Amplificatore! a transistor! 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}[h!]
  \begin{center}\mbox{\epsfig{file=dac_adc/emitt_foll_schemat,width=10.0 cm,
height=7 cm}}\end{center}
\caption{\Index{Emitter follower}: amplificatore di corrente di classe
B.} 
\protect\label{emitt_foll_schemat}
\end{figure}

Per avere amplificazione durante entrambe le semionde, si ricorre ad
un dispo\-sitivo 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}.
\index{Emitter follower! complementare} \index{Push-pull}
\index{Amplificatore! a transistor! di classe B! push-pull}

\begin{figure}[h!]
  \begin{center}\mbox{\epsfig{file=dac_adc/emitt_foll_compl,width=10.0 cm,
height=6 cm}}\end{center}
\caption{Emitter follower complementare: amplificatore di classe B push-pull.} 
\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}):
\index{Sample-and-hold}

\begin{figure}[h!]
  \begin{center}\mbox{\epsfig{file=dac_adc/sample_op_amp,width=10.0 cm,
height=6 cm}}\end{center}
\caption{Sistema di sample-and-hold costituito da operazionali e da un
emitter follower complementare.} 
\index{Emitter follower! complementare} \index{Sample-and-hold}
\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}
\index{Convertitore! digitale-analogico}
I convertitori Digitale-Analogico (DAC) son dispositivi attraverso i
quali un si\-stema digitale pu\`o comunicare con il mondo
analogico. Oltre all'applicazione, molto diffusa, di tali circuiti
nella realizzazione di convertitori Analogico-Digitale, esiste
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 sistemi digitali di
trasmissione/ricezione, 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}[h!]
  \begin{center}\mbox{\epsfig{file=dac_adc/convert_dac_simple,width=10.0 cm,
height=5 cm}}\end{center}
\caption{Sommatore per segnali analogici a due bit costituito da un
  operazionale in configurazione invertente.} 
\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}[h!]
  \begin{center}\mbox{\epsfig{file=dac_adc/convert_dac_general,width=14.0 cm,
height=9 cm}}\end{center}
\caption{Convertitore digitale-analogico ad $N$ bit costituito da un
  operazionale in configurazione invertente.} 
\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}[h!]
  \begin{center}\mbox{\epsfig{file=dac_adc/totem_pole_m_drive,width=10.0 cm,
height=6 cm}}\end{center}
\caption{Interruttore: ``totem pole MOSFET drive''. \index{Totem-pole!
MOSFET drive}} 
\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 costitui\-to 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}[h!]
  \begin{center}\mbox{\epsfig{file=dac_adc/r_2r_ladder,width=14.0 cm,
height=8 cm}}\end{center}
\caption{Convertitore digitale-analogico a 4 bit a scala o ``ladder''.} 
\protect\label{r_2r_ladder}
\end{figure}
\index{Convertitore! digitale-analogico! a scala}

L'esempio di figura \`e relativo ad un convertitore a 4
bit. Esaminiamo ora il funzionamento di tale circuito.

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}[h!]
  \begin{center}\mbox{\epsfig{file=dac_adc/schema_equivalente,width=5.0 cm,
height=5 cm}}\end{center}
\caption{Circuito equivalente ad una parte del convertitore di
  figura~\ref{r_2r_ladder}. } 
\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'ope\-razionale.  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'o\-perazionale. Uno schema (invertente) che realizza
questo scopo \`e quello mostrato in
figura~\ref{r_2r_inverting_ladder}.

\begin{figure}[h!]
  \begin{center}\mbox{\epsfig{file=dac_adc/r_2r_inverting_ladder,width=10.0 cm,
height=11 cm}}\end{center}
\caption{Convertitore digitale-analogico a 4 bit a scala o
  ``ladder'' in cui tutti gli interruttori sono collegati direttamente
  all'ingresso dell'operazionale.} 
\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.

\index{Convertitore! digitale-analogico! a scala}
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 indu\-strialmente 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 polari $(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}
\index{Convertitore! digitale-analogico! pilotato 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 vice\-versa. Questo rappresenta un
limite alla velocit\`a di conversione poich\'e, come sappia\-mo, 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}[h!]
  \begin{center}\mbox{\epsfig{file=dac_adc/idac_converter,width=14.0 cm,
height=6 cm}}\end{center}
\caption{Convertitore digitale-analogico pilotato in corrente.} 
\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}[h!]
  \begin{center}\mbox{\epsfig{file=dac_adc/idac_res_equiv,width=6.0 cm,
height=5 cm}}\end{center}
\caption{Circuito equivalente al nodo $a_0$ del convertitore di
  figura~\ref{idac_converter}.} 
\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 $T_B$ di figura f\`a si che la corrente
fluisca nello stesso transistor, e quindi verso massa, o nel
transistor $T_A$, 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}[h!]
  \begin{center}\mbox{\epsfig{file=dac_adc/dac_current_source,width=8.0 cm,
height=8 cm}}\end{center}
\caption{Interruttore costituito da una porta ECL.} 
\protect\label{dac_current_source}
\end{figure}

Per un'analisi dettagliata di tale switch, si consultino i
riferimenti~\cite{schilling-belove} o~\cite{taub-schilling}.

\section{Convertitori Analogico-Digitale (ADC)}
\index{Convertitore! analogico-digitale}
\subsection{ADC a contatore (Counting ADC)}
\index{Convertitore! analogico-digitale! a contatore}

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, aventi un numero di bit pari a quello che si intende
adoperare nella 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 che \`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}[h!]
  \begin{center}\mbox{\epsfig{file=dac_adc/counting_adc,width=12.0 cm,
height=7 cm}}\end{center}
\caption{Convertitore analogico-digitale realizzato con un contatore.} 
\index{Convertitore! analogico-digitale! a contatore}
\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 li\-vello 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}
\index{Convertitore! analogico-digitale! 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 co\-minciare 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}[h!]
  \begin{center}\mbox{\epsfig{file=dac_adc/adc_succ_approx,width=13.0 cm,
height=12 cm}}\end{center}
\caption{Convertitore analogico-digitale ad approssimazioni
  successive.} 
\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}[h!]
  \begin{center}\mbox{\epsfig{file=dac_adc/counting_adc_three_bits,width=15.0 cm,
height=12 cm}}\end{center}
\caption{Schema di un convertitore analogico-digitale ad approssimazioni
  successive a 3 bit.} \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}
\index{Convertitore! analogico-digitale! 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}[h!]
  \begin{center}\mbox{\epsfig{file=dac_adc/adc_rampa_singola,width=14.0 cm,
height=8 cm}}\end{center}
\caption{Convertitore analogico-digitale a rampa singola.} 
\index{Convertitore! analogico-digitale! a rampa singola}
\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}
\index{Convertitore! analogico-digitale! 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}[h!]
  \begin{center}\mbox{\epsfig{file=dac_adc/doppia_rampa,width=11.0 cm,
height=6 cm}}\end{center}
\caption{Carica e scarica di un condensatore a corrente costante.} 
\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}[h!]
  \begin{center}\mbox{\epsfig{file=dac_adc/adc_doppia_rampa,width=11.0 cm,
height=7 cm}}\end{center}
\caption{Convertitore analogico-digitale a doppia rampa.} 
\index{Convertitore! analogico-digitale! a doppia rampa}
\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}[h!]
  \begin{center}\mbox{\epsfig{file=dac_adc/doppia_rampa_invert,width=11.0 cm,
height=7 cm}}\end{center}
\caption{Andamento della tensione in uscita dall'operazionale nello
  schema di figura~\ref{adc_doppia_rampa}.} 
\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}
\index{Convertitore! analogico-digitale! flash}
\index{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}[h!]
  \begin{center}\mbox{\epsfig{file=dac_adc/flash_adc,width=13.0 cm,
height=12 cm}}\end{center}
\caption{Schema di un flash ADC a 3 bit: convertitore
  analogico-digitale a comparatori paralleli.} 
\index{Convertitore! analogico-digitale! flash}
\index{Flash ADC}
\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}[h!]
  \begin{center}\mbox{\epsfig{file=dac_adc/scaletta,width=9.0 cm,
height=6 cm}}\end{center}
\caption{Andamento della tensione in uscita da un convertitore
  digitale-analogico quando in ingresso \`e applicata una serie di
  numeri binari.} 
\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 varia\-zione 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 \`e 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}

\section{ADC e campionamento dei segnali}
\index{Campionamento del segnale}

Una generica forma d'onda, quale ad esempio quella mostrata in
figura~\ref{sample_corel_1}, pu\`o esser ``campionata'', ci\`o che
richiede che il suo valore ad intervalli di tempo regolari sia
immagazzinato in una memoria analogica, quale potrebbe essere un
circuito di sample-and-hold $(S\&H)$, e poi convertita in una
successione di valori digitali.

\begin{figure}[h!]
  \begin{center}\mbox{\epsfig{file=dac_adc/sample_corel_1,width=11.0 cm,
height=8 cm}}\end{center}
\caption{Forma d'onda campionata ad intervalli di tempo regolari
$t_i$.} \protect\label{sample_corel_1}
\end{figure}

Si pu\`o anche, in un sistema di trasmissione digitale, inviare la
successione di valori binari ottenuti ad un eventuale dispositivo di
ricezione che dovr\`a eseguire la ``ricostruzione'' dell'originale
segnale analogico. Lo schema diviene cos\`i quello di
figura~\ref{schema_campionamento}.

\begin{figure}[h!]
  \begin{center}\mbox{\epsfig{file=dac_adc/schema_campionamento,width=14.0 cm,
height=2.5 cm}}\end{center}
\caption{Struttura generale della catena di campionamento,
conversione, trasmissione e ricostituzione della forma d'onda
iniziale.} \protect\label{schema_campionamento}
\end{figure}

La forma d'onda (a) \`e campionata dal circuito di $(S\&H)$ (b),
convertita dall'ADC (c) in una successione di valori numerici binari e
poi trasmessa al ricevitore (d). Qui l'informazione digitale \`e
nuovamente convertita in un segnale analogico (f) tramite il DAC
(e). Tale segnale analogico potr\`a esser poi adoperato per pilotare
un altoparlante, uno schermo video etc.

La domanda che ora ci poniamo \`e se con tale procedimento noi
riusciremo in (f) a ricostruire in modo univoco la forma d'onda
iniziale. In particolare: quale dovr\`a essere l'intervallo temporale
tra due campionamenti successivi $\Delta t=t_{i+1}-t_i$
(figura~\ref{sample_corel_1}) se si vuole che la forma d'onda sia
ricostruita in modo univoco? A questa domanda \`e stata data una
semplice risposta da Nyquist\footnote{Anche Whittaker ha contribuito
in modo notevole alla soluzione del problema, ed in effetti alcuni
autori citano questo come ``teorema di Whittaker''. Il relativo
\index{Teorema di Nyquist} \index{Teorema di Shannon}
\index{Teorema del campionamento}
riferimento \`e: J.M. Whittaker, \emph{Interpolary Function Theory},
Cambridge University Press, 1935.} nel 1928. La relativa dimostrazione
matematica, dovuta a Shannon, arriv\`o solo 21 anni pi\`u tardi, nel
1949.  Tale risposta \`e comunemente nota come ``teorema di Nyquist''
o ``teorema di Shannon'' o, pi\`u semplicemente, come ``teorema del
campionamento''.

Il teorema asserisce che, se nello sviluppo in serie di Fourier del
segnale originale compaiono solo frequenze che non superino una certa
frequenza $f_{max}$, la frequenza di campionamento $f_c$ deve essere
almeno il doppio di $f_{max}$:
\[
f_c \ge 2\;f_{max}
\]
Il valore $f_N=2 f_{max}$ \`e noto come ``frequenza di campionamento
di Nyquist''.

Un punto su cui torneremo, ma che \`e importante chiarire fin d'ora,
\`e la presenza nel segnale campionato, per effetto del campionamento
stesso, di ripetizioni o \emph{alias} dello spettro di frequenze del
segnale iniziale, a frequenze pi\`u alte, con una perio\-dicit\`a
determinata dalla frequenza di campionamento. Tali frequenze andranno
eliminate facendo uso di opportuni filtri.

Il teorema del campionamento si applica, come visto, a segnali che non
abbiano frequenze al di sopra di un valore finito. In pratica si pu\`o
far uso del teorema ove opportuni filtri abbiano preliminarmente
rimosso le frequenze al di sopra di un valore prefissato.

Ad esempio, l'orecchio umano pu\`o udire suoni nel campo di frequenze
che va da $\approx 20\,Hz$ a $\approx 20\, kHz$. Segue dal teorema che
occorre campionare il suono ad una frequenza di almeno $40\;kHz$ se si
vuole che il suono ricostruito risulti accettabile per l'orecchio
umano.

Qualora frequenze pi\`u alte della met\`a della frequenza di
campionamento di Nyquist siano presenti nel segnale, queste daranno
luogo, nel segnale ricostruito, ad un fenomeno noto come
\emph{aliasing}. Con questo termine si intende che saranno presenti
nel segnale ricostruito, oltre alle frequenze presenti in quello
originario, altre frequenze che, pur cadendo nella banda di frequenze
del segnale originario, non sono quelle che erano presenti in questo.

Nell'esempio delle onde acustiche, se nel suono originario sono
presenti frequenze superiori a $20\;kHz$ (non udibili per l'orecchio
umano) ed il campionamento viene effettuato alla frequenza di
$40\;kHz$, il contributo delle onde di frequenze maggiori di $20\;kHz$
risulter\`a in un \emph{aliasing} nella zona sotto i $20\;kHz$, con
risultati sgradevoli. Per tale motivo occorre far precedere il
circuito che effettua il campionamento da un opportuno filtro
passa-basso, che tagli le frequenze superiori a $20\;kHz$. In pratica,
nei sistemi comunemente adoperati, si effettua un campionamento a
circa $44\;kHz$ anzich\'e a $40 \;kHz$, per tener conto del fatto che
il taglio effettuato da un filtro reale non \`e mai sufficientemente
``netto''.

Chiariamo i concetti esposti, con riferimento alla
figura~\ref{schema_campionamento_1}.

Ammettiamo che il campionamento sia effettuato a precisi istanti
$t_i$, intervallati di un tratto T. Ci\`o \`e schematizzabile come il
prodotto della f(t) per una serie infinita di funzioni $\delta(t)$
spaziate di un tratto pari alla periodicit\`a T del campionamento,
come mostrato in figura. Qui la funzione d'onda mostrata in (a) \`e
moltiplicata per la serie temporale di funzioni $\delta$ mostrate in
(b). Il risultato \`e la serie di altezze d'impulso mostrate in (c).

Notiamo che, come si pu\`o vedere in (e) e come si potrebbe
dimostrare, la trasformata di Fourier di una serie di funzioni
$\delta$ spaziate di T \`e una serie di funzioni $\delta$ spaziate di
$f_s=1/T$. La trasformata della funzione originaria \`e la F(f)
mostrata in (d). Per l'ipotesi fatta all'inizio, questa \`e nulla per
frequenze superiori ad un certo valore $f_1$. Se ora calcoliamo la
trasformata del segnale campionato mostrato in (c), ammettendo che la
frequenza di campionamento $f_s=1/T$ soddisfi il teorema del
campionamento, troveremo, come vedremo nel seguito, una distribuzione
come quella mostrata in (f). Oltre alla distribuzione a frequenze
inferiori ad $f_1$, che \`e una copia di quella originale, abbiamo
un'ulteriore copia di questa a frequenze che vanno da $f_s$ in su, una
copia \emph{speculare} di questa che inizia alla frequenza $f_s$ e si
estende verso frequenze inferiori, ed una serie infinita di
ripetizioni di queste. Le copie e le immagini speculari di queste
costituiscono degli \emph{alias} della distribuzione di frequenze
iniziale mostrata in (d). Un filtro che tagli le frequenze superiori
ad $f_1$ eliminer\`a tali alias.


Se la condizione $f_1 < f_s-f_1$, ovvero $f_s>2 f_1$ non \`e
soddisfatta, si vede dalla figura che gli \emph{alias} costituiti
dall'immagine speculare della prima copia della distribuzione iniziale
di frequenza, verranno ad estendersi fin nella zona $f<f_1$, \emph{che
non \`e tagliata dal nostro filtro passa-basso}. Ci\`o dimostra
chiaramente la necessit\`a di imporre la condizione richiesta dal
teorema del campionamento.


\begin{figure}[h!]
  \begin{center}\mbox{\epsfig{file=dac_adc/schema_campionamento_1,width=15.0 cm,
height=9 cm}}\end{center}
\caption{Schema generale del campionamento.}
\protect\label{schema_campionamento_1}
\end{figure}


La figura~\ref{sample_and_hold_book} illustra in modo diverso ci\`o
che accade. Nelle figure (a), (b) e (c) il campionamento rispetta la
condizione di Nyquist. In (d) la frequenza del segnale \`e pari a 0.95
volte quella della frequenza di campionamento. Vediamo ora che i
valori campionati, oltre ad \emph{accordarsi} con la frequenza del
segnale, riproducono anche una frequenza molto pi\`u bassa, non
presente nel segnale.

\begin{figure}[h!]
  \begin{center}\mbox{\epsfig{file=dac_adc/sample_and_hold_book,width=15.0 cm,
height=10 cm}}\end{center}
\caption{Le linee continue rappresentano il segnale, i quadretti il
risultato del campionamento.  Nel grafico (a) il segnale \`e
costante. In (b) la forma d'onda sinusoidale ha una frequenza pari a
0.09 volte quella di campionamento. Ad esempio, potrebbe trattarsi di
un segnale sinusoidale di 90 Hz, campionato ad una frequenza di 1000
Hz; il che implica 11.1 campionamenti per ogni ciclo completo
dell'onda sinusoidale. Questo \`e un esempio di campionamento
corretto. In (c) abbiamo solo 3.2 campionamenti per ogni ciclo. Ancora
una volta il campionamento \`e corretto.  In (d) abbiamo appena 1.05
campionamenti per ciclo. Vediamo che ora, oltre alla frequenza
iniziale, i campionamenti sono consistenti con un'onda avente una
frequenza pari a 0.05 volte quella dell'onda originale, ovvero un
\emph{alias} di questa.} \protect\label{sample_and_hold_book}
\end{figure}


\section{Il teorema del campionamento}
\index{Teorema del campionamento}

Possiamo far vedere il perch\'e della condizione che il teorema pone
sulla frequenza di campionamento nel modo seguente.

Il processo di campionamento \`e equivalente, come gi\`a visto, alla
moltiplicazione della forma d'onda data per una serie infinita di
funzioni $\delta$, spaziate con una perio\-dicit\`a data dall'inverso
della frequenza di campionamento $T=1/f_c$, serie che si estende da
$-\infty$ a $+\infty$\footnote{Tale funzione, il cui grafico ricorda
un ``pettine'' \`e nota come \emph{Dirac comb}, cio\`e ``pettine di
Dirac''.}:
\[
\chi(t)=\sum_{n=-\infty}^{n=+\infty}\delta(t-nT)
\]

Si pu\`o dimostrare che lo spettro in frequenza angolare di tale
funzione, vale a dire la sua trasformata di Fourier, \`e data da:
\begin{equation}
H(\omega)=F[\chi(t)]=\sum_{n=-\infty}^{n=+\infty}\delta(\omega-n\omega_c)
\label{dirac_comb_transform}
\end{equation}
con:
\[
\omega_c=\frac{2 \pi}{T}
\]
Vediamo che lo spettro \`e ancora una ``Dirac comb'' nello spazio
delle $\omega$.

Dobbiamo ora effettuare il ``campionamento'' della f(t) data, e per
far ci\`o dobbiamo calcolare il prodotto:
\[
f(t) \;\chi(t)
\]
Ammettiamo di aver calcolato la trasformata di Fourier $F(\omega)$
della $f(t)$. Calcoliamo il prodotto di convoluzione di questa con la
$H(\omega)$:
\[
G(\omega)=\int_{-\infty}^{+\infty}F(\omega-\omega') H(\omega') d
\omega'
\]
Sostituendo in questa alla $H(\omega)$ la sua
espressione~(\ref{dirac_comb_transform}), otteniamo:
\[
G(\omega)=\sum_{n=-\infty}^{n=+\infty}\int_{-\infty}^{+\infty}
F(\omega - \omega') \delta(\omega'-n\omega_c) d\omega'
\]
Questa \`e uguale a:
\[
G(\omega)=\sum_{n=-\infty}^{n=+\infty} F(\omega - n \omega_c)
\]
ovvero:
\[
F(\omega)+F(\omega-\frac{2 \pi}{T})+F(\omega-\frac{4
\pi}{T})+F(\omega-\frac{6 \pi}{T})+\cdots
\]
\[
+\cdots F(\omega+\frac{2 \pi}{T})+F(\omega+\frac{4
\pi}{T})+F(\omega+\frac{6 \pi}{T})+\cdots
\]
vale a dire la somma della trasformata $F(\omega)$ della funzione
originale, sommata ad un numero infinito di repliche della medesima,
traslate di tratti multipli di $\omega_c=2 \pi/T$ rispetto a questa.

Il risultato trovato ci dice che il prodotto di convoluzione delle
funzioni $F(\omega)$ ed $H(\omega)$ \`e uguale ad una somma infinita
della $F(\omega)$ e di repliche della medesima, traslate di tratti
multipli di $2 \pi/T$. Come vedremo tra poco, tale prodotto di
convoluzione altro non \`e che la trasformata di Fourier del prodotto
$f(t) \chi(t)$, cio\`e \emph{della funzione campionata}. Ne segue che:
\emph{la trasformata di Fourier della funzione campionata \`e uguale
alla somma della trasformata della funzione iniziale e di infinite
repliche della stessa, traslate di tratti pari a $\omega_c=2 \pi/T$}.

Ricordiamo ora la definizione della trasformata di Fourier:
\[
F(\omega)=\int_{-\infty}^{+\infty} f(t) e^{-j \omega t}
dt\;=\;\int_{-\infty}^{+\infty} f(t) \cos(\omega t)
dt-\int_{-\infty}^{+\infty} f(t) \sin(\omega t) dt
\]

Dove si vede facilmente che il termine reale \`e simmetrico per uno
scambio di $\omega$ in $-\omega$, mentre quello immaginario \`e
antisimmetrico. Ne segue che il precedente risultato, applicato
rispettivamente alla parte reale ed a quella immaginaria, fornisce
distribuzioni del tipo mostrato in
figura~\ref{schema_campionamento_trasformata_fourier}.

\begin{figure}[h!]
  \begin{center}\mbox{\epsfig{file=dac_adc/schema_campionamento_trasformata_fourier,width=15.0 cm,height=4.0 cm}}\end{center}
\caption{Componenti reale ed immaginaria della trasformata di Fourier.} 
\protect\label{schema_campionamento_trasformata_fourier}
\end{figure}

Ora ricordiamo che T \`e l'intervallo tra campionamenti successivi e
$\omega_c$ \`e la relativa frequenza angolare. Se $\omega_c$ \`e
inferiore al massimo valore ($\omega_{max}$) di $\omega$ presente
nella $F(\omega)$ (vale a dire se $T >2\pi/\omega_{max}$) le
\emph{repliche} della $F(\omega)$ verranno a sovrapporsi alla stessa
$F(\omega)$ e la ricostituzione della f(t) iniziale a partire dalla
trasformata, anche con l'applicazione di un filtro passa-basso alla
frequenza $f_1$, non sar\`a pi\`u possibile.

Dimostriamo infine quanto asserito sopra, cio\`e che il prodotto di
convoluzione di due generiche funzioni $F(\omega)$ e $H(\omega)$,
trasformate rispettivamente di f(t) ed h(t) \`e uguale alla
trasformata di Fourier del prodotto f(t)h(t):
\[
\int_{-\infty}^{+\infty}F(\omega') H(\omega - \omega') d
\omega'=\int_{-\infty}^{+\infty}f(t)h(t)e^{-j \omega t} dt
\]

Per verificarlo, verifichiamo che l'antitrasformata del primo membro
\`e uguale all'antitrasformata del secondo, che \`e ovviamente
f(t)h(t).
\[
\frac{1}{2 \pi}
\int_{-\infty}^{+\infty}\int_{-\infty}^{+\infty}F(\omega') H(\omega -
\omega') e^{j \omega t} d \omega d \omega'
\]

Poniamo in questa: $\omega - \omega'=\alpha$. Avremo:
\[
\frac{1}{2 \pi} \int_{-\infty}^{+\infty}\int_{-\infty}^{+\infty}
F(\omega') H(\alpha) e^{j \omega' t} e^{j \alpha t} d \omega' d
\alpha=
\]
\[
=\frac{1}{2 \pi} \int_{-\infty}^{+\infty}F(\omega') e^{j \omega' t}d
\omega' \int_{-\infty}^{+\infty}H(\alpha) e^{j \alpha t} d \alpha
=f(t) h(t)
\]
Con che \`e verificato quanto asserito.

\subsubsection{Ricostruzione del segnale iniziale a partire dai valori campionati}

Per completare il teorema del campionamento, dobbiamo mostrare come, a
partire dai valori $f(nT)$ ottenuti dal campionamento, si possa
ricostruire la funzione iniziale.

Il risultato, che non dimostreremo, \`e dato dalla relazione:
\[
u(t)=\sum_{n=-\infty}^{+\infty} u(nT) sinc\left(\frac{t-nT}{T}\right)
\]
dove si ammette che la funzione sia stata campionata ad intervalli di
tempo T, pari a $1/(2f_{max})$, con $f_{max}$ la massima frequenza
contenuta nel segnale iniziale e dove la funzione $sinc$ \`e data da:
\[
sinc(x)=\frac{sin(\pi x)}{\pi x}
\]

