Elettronica generale Ihep.fi.infn.it/CIBER/Elettronica_generale_I_Part02.pdf · 2018. 10. 27. ·...
Transcript of Elettronica generale Ihep.fi.infn.it/CIBER/Elettronica_generale_I_Part02.pdf · 2018. 10. 27. ·...
Elettronica Generale IPart 02: Logica sequenziale
DAC e ADC
Arduino (modulo a parte)
15/10/2018 Elettronica Generale I_a , Raffaello D'Alessandro 1
Logica Sequenziale
● I dispositivi logici si suddividono in due famiglie principali:
● Logica combinatoriale ● L’uscita all’istante tn dipende unicamente dallo stato degli ingressi sempre al tempo
tn, (trascuriamo i ritardi interni)
● Porte logiche, decoders, multiplexers, ALU
● Logica sequenziale● L’uscita all’istante tn dipende sia dallo stato degli ingressi al tempo tn, sia dallo stato
degli ingressi ad istanti precedenti (tn-1,n-2,.,ecc.)
● Ha quindi una memoria che viene chiamata STATO.
● Latch, flip-flops, macchine a stati, contatori, shift registers
15/10/2018 Elettronica Generale I_a , Raffaello D'Alessandro 2
Flip-flop & Latches
• Logica combinatoriale con “feed-back”
• Uscita riportata all’ingresso
• Latch è una memoria ad 1 bit che cambia stato a seconda dell’ingresso (può o non può aver un ingresso di ENABLE/CLOCK)
• Flip-flop è un latch dotato di un ingresso di clock (segnale di controllo), le cui uscite commutano solo sui fronti (salita e/o discesa) del clock
15/10/2018 Elettronica Generale I_a , Raffaello D'Alessandro 3
Stato “STATE” del sistema
• Stato: è un insieme di variabili (variabili di stato per l’appunto) che rappresentano la memoria di quello che è successo fino ad ora
• Conta-persone: lo stato è il numero di persone passate fino adesso, ogni volta che passa una persona il numero viene incrementato di uno
• Logica sequenziale digitale• Le variabili di stato sono binarie
• Un circuito con n variabili di stato ha 2n stati possibili
• Macchina a stati finiti (Finite State Machine)
• I cambiamenti di stato sono solitamente sincronizzati da un clock
15/10/2018 Elettronica Generale I_a , Raffaello D'Alessandro 4
CLOCK
• Clock: fornisce la marca temporale che scandisce i cambiamenti di stato del circuito.
• Il segnale di clock è active high se lo stato cambia sui fronti di salita active low se lo stato cambia sui fronti di discesa.
• Periodo del Clock: è il tempo che trascorre tra due transizioni dello stesso tipo
• Frequenza del Clock: è il numero di volte che questo accade per secondo
• Duty Cycle: è la percentuale di tempo, durante un periodo, in cui il clock è attivo.
15/10/2018 Elettronica Generale I_a , Raffaello D'Alessandro 5
CLOCK
• ACTIVE HIGH
• ACTIVE LOW
15/10/2018 Elettronica Generale I_a , Raffaello D'Alessandro 6
Periodo
th th
tL tL
Frequenza = 1/Periodo
Duty cicle = th (tL) / Periodo
LATCH elementare• Elemento bistabile:
• Memoria ad un bit ovvero l’elemento più semplice:
• È bistabile in quanto ha due stati stabili:• Stato 1: Q(Vout1) alto, Vin1 basso, Vin2 alto
• Stato 2: Q(Vout1) basso, Vin1 alto, Vin2 basso
• Lo stato dipende dai transienti in fase di accensione
• Ovviamente così disegnato, è un circuito di scarsa utilità
15/10/2018 Elettronica Generale I_a , Raffaello D'Alessandro 7
02/25/09
Vout1
Vin1
Vin2Vout2
Q
/Q
Latch Set Reset (SR Latch)
• Aggiungiamo qualche ingresso:
• Invece dei NOT usiamo i NOR
• Tabella della verità:S R Qn /Qn
0 0 Qn-1 /Qn-1
0 1 0 1
1 0 1 0
1 1 0 0
15/10/2018 Elettronica Generale I_a , Raffaello D'Alessandro 8
S
R
Q
Q
Simbolo
Q
/Q
Set
Reset
S
RQ
/Q
SchemaHold
Reset
Set
??
• Aggiungiamo due porte AND sugli ingressi che agiscono come “interruttore”
• Il clock abilita il latch sul livello, NON sul fronte!!
• Tabella della verità:C S R Qn /Qn
0 X X Qn-1 /Qn-1
1 0 0 Qn-1 /Qn-1
1 0 1 0 11 1 0 1 01 1 1 0 0
SR Latch con Enable (Clock)
15/10/2018 Elettronica Generale I_a , Raffaello D'Alessandro 9
S
R
C
Q
/Q
Schema
S
R
Q
Q
Simbolo
Q
/Q
Set
Reset
CClock
JK Latch (oscilla, race around)
• A S=R=0 corrisponde un’uscita inutile e non “ortodossa”.
• Il JK introduce un ulteriore feedback tra uscita e ingresso che resolve questa situazione.
• Purtroppo così configurato il JK quando J=K=1 oscilla tra i due stati con una frequenza determinata dai tempi di transito dei gate (race around condition)
15/10/2018 Elettronica Generale I_a , Raffaello D'Alessandro 10
Q
/QS
R
C
J
K
Schema (oscilla) • Tabella della verità:C J K Qn /Qn
0 X X Qn-1 /Qn-1
1 0 0 Qn-1 /Qn-1
1 0 1 0 11 1 0 1 01 1 1 /Qn-1 Qn-1
Architettura MASTER - SLAVE
• Risolve i problemi di “race around” legati ai tempi di propagazione finiti delle porte logiche.
• Due latch in cascata:• il primo pilotato direttamente dal clock
• il secondo dal clock invertito
• Quando è attivo il primo stadio, non è attivo il secondo (e viceversa).
• La commutazione delle uscite avviene sul fronte di salita (discesa) del clock.
15/10/2018 Elettronica Generale I_a , Raffaello D'Alessandro 11
Flip Flop SR• Architettura Master Slave
• Tabella della verità:C S R Qn /Qn
0/1 X X Qn-1 /Qn-1
0 0 Qn-1 /Qn-1
0 1 0 1
1 0 1 0
1 1 0 0
15/10/2018 Elettronica Generale I_a , Raffaello D'Alessandro 12
S
C
Q
/Q
S
R
Q
Q
C
R
S
R
Q
Q
C
S
R
Q
Q
Simbolo
Q
/Q
Set
Reset
CClock SR MS
• Grazie all’architettura MS, possiamo evitare il race around.
• Tabella della verità:C J K Qn /Qn
0/1 X X Qn-1 /Qn-1
0 0 Qn-1 /Qn-1
0 1 0 1
1 0 1 0
1 1 /Qn-1 Qn-1
Flip Flop JK
15/10/2018 Elettronica Generale I_a , Raffaello D'Alessandro 13
C
Q
/Q
S
R
Q
Q
C
S
R
Q
Q
C
J
K
/Q
Q
J
K
Q
Q
Simbolo
Q
/Q
J
K
CClock JK MS
Bestiario • In realtà si usano sempre i flip-flop che lavorano sui fronti del clock.• Solo così si può mantenere la sincronizzazione.• Abitualmente le commutazioni avvengono sui fronti di SALITA !• Latch
• S-R Latch• /S-/R Latch• S-R Latch con Enable• D Latch
• Flip-flop• Edge-Triggered D Flip-Flop• Master/Slave S-R Flip-Flop• Master/Slave J-K Flip-Flop• Edge-Triggered J-K Flip-Flop• T Flip-Flop
15/10/2018 Elettronica Generale I_a , Raffaello D'Alessandro 14
• Vengono collegati insieme tramite una porta NOT l’ingresso J(S) e K(R) di un flip-flop JK(SR)
• L’unico ingresso si chiama D
• Tabella della verità:C D Qn /Qn
0/1 X Qn-1 /Qn-1
0 0 1
1 1 0
D-Type Flip Flop
15/10/2018 Elettronica Generale I_a , Raffaello D'Alessandro 15
J
K
Q
Q
Schema
Q
/Q
D
CClock
JK MS
D
>CLK
Q
Q
Simbolo
T (toggle) type Flip-Flop
• Vengono collegati insieme l’ingresso J e K di un flip-flop JK
• L’unico ingresso si chiama T• Quando T = 0 mantiene lo stato
• Quando T = 1 commuta
• Tabella della verità:C T Qn /Qn
0/1 X Qn-1 /Qn-1
0 Qn-1 /Qn-1
1 /Qn-1 Qn-1
15/10/2018 Elettronica Generale I_a , Raffaello D'Alessandro 16
J
K
Q
Q
SchemaQ
/Q
T
CClock
JK MS
T
>CLK
Q
Q
Simbolo
• I Flip-Flop hanno due ingressi asincroni:• Preset e Reset (Clear).
• Servono ad impostare direttamente le uscite Q , /Q
• Operano indipendentemente dal clock
• Quando disegnate un circuito:• Usate questi ingressi SOLO per inizializzare la logica. Mai per realizzare
funzioni logiche.
• ESEMPIO: SR Latch (con ENABLE):• PRN (N attivo LOW!) fissa l’uscita Q = 1
• CLRN (N attivo LOW!) fissa l’uscita Q = 0
• N.B. S=R=0 Q = /Q = 1 !!
Ingressi Asincroni (Preset, Clear)
15/10/2018 Elettronica Generale I_a , Raffaello D'Alessandro 17
Q
/Q
PRN
CLRN
S
R
C
Esempio di circuito con 2 Flip-Flop
• Differenziatore DSegnale/Dt :• Riconosce i fronti di salita /discesa del segnale in ingresso
• Il periodo del Clock è il Dt della derivata
15/10/2018 Elettronica Generale I_a , Raffaello D'Alessandro 18
clock clock
Fronte discesa
Fronte salitaSegnale logico
Contatori (== Divisori)
• Un insieme di n Flip-Flop, ovvero 2n stati possibili• Possono contare in su o in giù
• Possono essere programmati per partire a contare da un numero preimpostato
• Tipologie:• Ripple counter (da evitare per via degli sfasamenti e ritardi che introduce)
• Syncronous counter (tutti i Flip-Flop sono pilotati dallo stesso CLOCK!)
• N.B. Se potete contare fino a N, vuol dire che potete dividere per N
15/10/2018 Elettronica Generale I_a , Raffaello D'Alessandro 19
Ripple Counter• Implementazione molto semplice
• Il clock viene dato in ingresso al primo TFF
• Le uscite Q dei flip-flop sono i bit di uscita
• LSB a sinistra (TFF con il Clock in ingresso)
15/10/2018 Elettronica Generale I_a , Raffaello D'Alessandro 20
Q
>CLK
TTFF
PRN
CLN
Q
>CLK
TTFF
PRN
CLN
1 1Q
>CLK
TTFF
PRN
CLN
Q
>CLK
TTFF
PRN
CLN
1 1
Q0 (LSB) Q3Q1 Q2
Clock
• I FF in questo caso transiscono sul fronte di SALITA del Clock
• Quindi al primo colpo di Clock andranno (in sequenza) tutti a 1
• Da lì conteranno all’indietro (DOWN) fino ad arrivare a 0000
• Tra un bit e l’altro si ha un ritardo dovuto alla propagazione del dato nel FF (1-10 ns)
Svantaggi Ripple Counter
• Svantaggio principale:• Ritardo di propagazione del segnale:• Dtpropagazione di circa 10 ns a Flip-Flop• n bit DtTOT ritardo totale = n*Dtpropagazione
• La criticità aumenta con il numero di bit e con la frequenza di clock
• Il conteggio finale rimane affidabile • Cioè se interrompete il clock e aspettate un tempo pari a n*Dtpropagazione , il valore
letto sarà il numero effettivo di colpi di clock ricevuti
• Non sono più affidabili i conteggi intermedi !!!• Ad esempio se volete generare un segnale al «347» colpo di clock, non solo il
segnale verrà generato in ritardo, ma si potranno anche avere dei segnali spuri generati in mezzo alla sequenza di conteggio
15/10/2018 Elettronica Generale I_a , Raffaello D'Alessandro 21
Contatore Sincrono
• Sfruttiamo a nostro vantaggio il ritardo di propagazione
• I Flip-Flop sono tutti pilotati in parallelo dallo stesso Clock
• Uso di logica combinatoriale per stabilire se il Flip-Flop debba caricare 1 o 0 sui vari Tn
15/10/2018 Elettronica Generale I_a , Raffaello D'Alessandro 22
Q
>CLK
TTFF
PRN
CLN
Q
>CLK
TTFF
PRN
CLN
T0 T1Q
>CLK
TTFF
PRN
CLN
Q
>CLK
TTFF
PRN
CLN
T2
Q0 (LSB) Q3Q1 Q2
ClockT3
Contatore Sincrono
• Importante l’ingresso T• T=1 Qn = /Qn-1
• T=0 Qn = Qn-1
• Per Q0 bisogna connettere T0 = 1
• Per Q1, Q2, .... Qn ?
• Dalla figura qui accanto vediamo come dovrebbe funzionare il contatore
• Notate il ritardo costante dei Qn rispetto ai fronti di salita del Clock
• Si nota che Q1 commuta nel momento in cui scende Q0
• Q2 commuta nel momento in cui scendono Q0 e Q1
• Q3 commuta nel momento in cui scendono Q0 e Q1 e Q2
15/10/2018 Elettronica Generale I_a , Raffaello D'Alessandro 23
Clock
Q0
Q1
Q2
Q3
Time t
Contatore Sincrono
• Connettiamo l’ingresso T1 a Q0
• Sfruttiamo il ritardo di propagazione nei flip-flop
• Sul primo fronte di salita del clock Q0 diventa 1, MA solo dopo un tempo tpropagazione (tipicamente qualche ns)
• Quindi il secondo Flip-Flop, sul primo fronte di salita del clock, in ingresso ha ancora zero e quindi la sua uscita Q1 rimarrà nello stato precedente
• Sul secondo fronte di salita del clock Q0 diventa 0, MA solo dopo un tempo tpropagazione (tipicamente qualche ns)
• Quindi il secondo Flip-Flop, sul secondo fronte di salita del clock, in ingresso ha ancora uno e quindi la sua uscita Q1 si ribalta rispetto allo stato precedente
15/10/2018 Elettronica Generale I_a , Raffaello D'Alessandro 24
Q
>CLK
TTFF
PRN
CLN
Q
>CLK
TTFF
PRN
CLN
T0=1 T1= Q0
Q0 (LSB) Q1
Clock
Contatore Sincrono• Q2 deve commutare nel momento in cui Q0 = Q1
transiscono da 1 a 0 • Teniamo presente tpropagazione , e vediamo che la soluzione
cercata è pilotatre T2 con l’AND di Q0 e Q1
• In generale Tn sarà dato dall’AND di tutti i Q precedenti fino a Qn-1
• Riporto seriale:• AND connessi in cascata• rimane un minimo di Ripple che per tanti bit potrebbe far
malfunzionare il contatore
• Riporto parallelo:• AND a n ingressi• Soluzione da adottare, il ritardo introdotto per Tn è sempre
quello di una singola porta AND che è inferiore a quello di un FF
15/10/2018 Elettronica Generale I_a , Raffaello D'Alessandro 25
Q
>CLK
TTFF
PRN
CLN
Q2
Clock
Q1Q0
T2
Q1Q0
Q2T3
Q1
Q0
Qn-1
Tn
Riporto seriale vs Riporto parallelo
• Riporto seriale:• semplicità costruttiva
• Ritardo totale scala con i bit del contatore
• tpropagazione di un FF + tpropagazione di una porta AND * n
• Il ritardo delle porte AND può diventare talmente elevato da far arrivare troppo tardi il T da caricare.
• Riporto parallelo:• Diventa complicato quando i bit sono tanti
• Ritardo totale fisso!!
• tpropagazione di un FF + tpropagazione di una porta AND e BASTA !
15/10/2018 Elettronica Generale I_a , Raffaello D'Alessandro 26
Contatore Programmabile
• Spesso vi è la necessita di contare a partire da un numero prefissato arbitrario
• Il numero potremmo impostarlo usando i PRN (e i CLRN) in maniera adeguata
• In realtà si preferisce usare dei controlli SINCRONI (SLoad, SClear) per non avere Glitches nel funzionamento
• Tutti i contatori hanno un bus in ingresso per caricare un numero di “partenza” cioè da cui partire a contare:• Linea di Load e/o Clear (sincrona o asincrona)
• Tecnica flessibile che permette di cambiare numero di conteggi senza modificare l'hardware
15/10/2018 Elettronica Generale I_a , Raffaello D'Alessandro 27
Tipica funzione di contatore usata in QUARTUS: LPM_COUNTERSono richieste:1) Sload (Syncronous load)2) Clock3) Data[7..0] (bus in ingresso per
programmare il valore prefissato)4) Q[7..0] (bus in uscita con il valore
del conteggio)5) Cout (Carry Out, impulso in uscita
quando il contatore raggiunge FF)
Contatore Sincrono• Sload viene generato a fine conteggio
• Ovvero quando il contatore (8 bit) raggiunge FF• Ad esempio si può sfruttare un AND con n
ingressi, posto sul bus di uscita Q• Oppure sfruttare l’uscita Cout
• Se il conteggio è fisso, può comunque convenire fare un reset del contatore
• Si usa una porta AND opportunamente connessa sulle uscite:• Ogni volta che il conteggio raggiunge la
cifra desiderata si resetta il contatore (si fa a meno della programmabilità)
15/10/2018 Elettronica Generale I_a , Raffaello D'Alessandro 28
Clock
Sload
Data
Q
Time t
5F
5F
XX 60 61 62 63 64
Shift Register• Assieme ai contatori forma l’ossatura delle FSM (Finite State Machines)
• Uno Shift Register trasferisce ad ogni colpo di Clock il dato dal Flip-Flop n al Flip-Flop n+1 (macchina sincrona):
• La configurazione mostrata sopra con i D type Flip-Flop è a 4 bit, il Clock “campiona” il segnale in ingresso:• Dato in ingresso seriale (Data In), dato in uscita parallello (Q3, Q2,Q1,Q0)• 4 colpi di Clock per riempire il registro, se il Clock continua il registro si svuota .....
15/10/2018 Elettronica Generale I_a , Raffaello D'Alessandro 29
Data in(seriale)
D
>CLK
Q D
>CLK
Q D
>CLK
Q D
>CLK
Q
Clock
Q0Q1Q2Q3
Shift Register• Anche qui esistono delle funzioni macro:
LPM_SHIFTREG
• Specificare quanti bit
• In figura abbiamo un parallelizzatore
• Si può utilizzare un bus Data in ingresso per fare un serializzatore• Assieme al bus Data avremo anche bisogno di un (S)load !
• Alla base di tutte le comunicazioni (RS232, USB, Ethernet, Radio, TV)• SIPO (Serial In – Parallel Out)
• PISO (Parallel In – Serial Out)
15/10/2018 Elettronica Generale I_a , Raffaello D'Alessandro 30
Timing diagram di uno Shift Register
• A 4 bit
• Dopo 4 colpi di Clock abbiamo caricato 1101 (13)
• Dal quinto colpo in poi svuotiamo lo Shift Register che tornerà a zero
• Notate lo scorrimento dei dati sulle uscite
15/10/2018 Elettronica Generale I_a , Raffaello D'Alessandro 31
RS232 (protocollo seriale)• Trasmissione dati usando (al limite) solo 3 fili:
• Ground (Ritorno) [5]
• Transmit [3]
• Receive [2]
• Nato con le telescriventi, la linea va da -12V a +12V
• Lento ma ancora utilizzato
• Gli altri fili sono usati per funzioni di controllo e dialogo (Hand Shaking) e non sono strettamente necessary
• In foto 2 connettori (DB9 femmina, DB25 maschio) usati per le line RS232
15/10/2018 Elettronica Generale I_a , Raffaello D'Alessandro 32
------------------- 9-Pin 25-Pin
Carrier Detect 1 8
Receive Data 2 3
Transmit Data 3 2
Data Terminal Ready 4 20
System Ground 5 7
Data Set Ready 6 6
Request to Send 7 4
Clear to Send 8 5
Ring Indicator 9 22
RS232
• Tra i due apparecchi collegati bisogna stabilire prima:• frequenza dei dati (baud rate) (ad esempio 9600, 56K)
• parità (normalmente off)
• stop bit (normalmente uno o due)
• Parametri fissi e non negoziabili:• bit vengono trasmessi a gruppi di 8
• in inizio trasmissione viene inviato uno start bit
• a fine trasmissione vengono trasmessi il bit di parità e gli stop bit
• Il clock viene generato dal ricevente appena riceve lo start bit !
15/10/2018 Elettronica Generale I_a , Raffaello D'Alessandro 33
RS232• Quando la linea di data va alta (+12V) (start bit)• Inizia la trasmissione dati
• Il ricevitore genera un clock interno che campiona la linea dati con uno shift-register
• Se il protocollo prevede 1 start, 2 stop e no parity, il clock interno dovrà fornire 11 colpi.
• I dati sono in logica negata, il LSB segue lo start
15/10/2018 Elettronica Generale I_a , Raffaello D'Alessandro 34
Clock
Data in
start Q6Q5Q4Q3Q2Q1Q0 Q7 stopstop
0 0 1 0 1 1 0 0
Time t
Ring Counter• Variante dello Shift Register
• Shift Register con l’uscita connessa all’ingresso• Il “token” viene caricato sul primo Flip-Flop (PRN)
• Ad ogni colpo di clock:• Il token passa da un Flip-Flop a quello successivo
• Quando arriva all’ultimo Flip-Flop, viene ricaricato sul Flip-Flop iniziale
• Es. La sequenza di un Ring counter a 4 bit:• 1000 – 0100 – 0010 – 0001 – 1000 ecc. ecc.
15/10/2018 Elettronica Generale I_a , Raffaello D'Alessandro 35
D
>CLK
Q D
>CLK
Q D
>CLK
Q D
>CLK
Q
Clock
Q0Q1Q2Q3Token load
prn
Token out
Sincronizzazione dei segnali• Input asincroni:
• Sono sempre presenti in un sistema digitale:• Ingresso da tastiera, pulsanti, comparatori, ecc.
• Normalmente sono molto più lenti del clock di sistema
• Non è vitale sapere quando esattamente (al ns) è avvenuto l’evento
• PER ESSERE USATI DEVONO ESSERE SINCRONIZZATI !
• Si usa un D type Flip-Flop con il Clock di sistema (Master Clock)
15/10/2018 Elettronica Generale I_a , Raffaello D'Alessandro 36
D
>CLK
QUscita sincronaIngresso asincrono
Clock di sistema
Clock
Ing. asinc.
Uscita sinc.
Deglitcher• Purtroppo anche partendo con le migliori intenzioni, a volte troviamo
la presenza di glitches sulle uscite della nostra logica
• Il Deglitcher è un circuito che campiona le uscite con il Master Clock di Sistema e quindi rimuove tutti i segnali asincroni di breve durata
• In pratica è il circuit mostrato precedentemente ma applicato alle uscite invece che ad eventuali ingressi asincroni
• Poichè introduce un ulteriore ritardo di un colpo di Clock va usato solo come “extrema ratio”
15/10/2018 Elettronica Generale I_a , Raffaello D'Alessandro 37
D
>CLK
Q
Clock
Segnale con un glitch Segnale “ripulito”
Ritardo
Debouncer• Analogo al sincronizzatore ma usato per “ripulire” i segnali dei contatti meccanici (segnali con “rimbalzi” sulle scale dei ms)
• Al momento della chiusura dell’interruttore si hanno vari rimbalzi tra lel lamelle degli interruttori
• Va usato un Clock “lento” con un periodo maggiore della durata dei “RIMBALZI”
15/10/2018 Elettronica Generale I_a , Raffaello D'Alessandro 38
+5V
/SW DSW
SPDT switch
74LS04
+5V
GND
/SW
DSW
PUSH first
contact
bounce
TTL hanno una resistenza di pull-up interna a +V
Debouncer
15/10/2018 Elettronica Generale I_a , Raffaello D'Alessandro 39
D
>CLK
Q
Dt_clock > Dt_bounce
+5V
GND
/SW
PUSH Primo
contatto
bounce
+5VSPDT switch
Clock(periodo tipico di 10ms)
Elettronica Generale IPart 02: DAC e ADC
15/10/2018 Elettronica Generale I_a , Raffaello D'Alessandro 40
Teorema di Shannon• Ricostruzione di segnali analogici:
• Campionamento ad intervalli regolari
• Se una funzione x(t) non ha componenti spettrali superiori a fH (Hz), allora risulta completamente determinata dalla serie dei suoi valori campionati ad intervalli di tempo 1/2fH
• Cioè: la frequenza di campionamento fSampling > 2fH
• Questo è il motivo, ad esempio, per cui i CD Audio sono campionati a 44.1 kHz(N.B. lo spettro Audio delle frequenze udibili dall’orecchio umano va da 20 Hz a 20 KHz)
15/10/2018 Elettronica Generale I_a , Raffaello D'Alessandro 41
Ricostruzione del segnale• Il segnale varia nel tempo, il campionamento
viene realizzato registrando il valore del segnale ad intervalli regolari con periodo T (intervallo di campionamento)
• Avremo quindi una sequenza di numeri che rappresentano il segnale di origine chiamati campionamenti
• Ogni valore numerico assieme alla sua marca di tempo costituisce le coordinate dei punti nel grafico Ampiezza-Tempo
• Il reciproco dell'intervallo di campionamento (1/T) è la frequenza di campionamento fSampling
15/10/2018 Elettronica Generale I_a , Raffaello D'Alessandro 42
t
ADC+
+ +
++ + + +
++
++
++
+
++ +
++ + + +
++
++
++
+
++ +
++ + + +
++
++
++
+
Samples
Ricostruzione del segnale• Idealmente ad ogni punto i si applica
sinc(xi) facendo riscalando il massimo in modo che coincida il valore del campionamento e gli zeri con gli altri n-1 campionamenti.
• sinc(x) = sin(px)/px• Il segnale originario viene ricostruito
facendo la somma di tutte le n sinc(xi)
15/10/2018 Elettronica Generale I_a , Raffaello D'Alessandro 43t
ADC+
+ +
++ + + +
++
++
++
+
++ +
++ + + +
++
++
++
+
++ +
++ + + +
++
++
++
+
Samples
x
• Il segnale ricostruito a questa maniera non può avere frequenze superiori alla metà della frequenza di campionamento fSampling
• Di conseguenza il segnale originario non deve contenere frequenze superiori a fSampling/2 , Criterio di Nyquist
• In pratica un DAC produce una serie di steps che poi vengono filtrati …....
Ricostruzione del segnale (visto in frequenza)
• Potete vedere la ricostruzione anche come una serie di valori di tensioni (determinate dal codice binario in ingresso al DAC) che vengono date in pasto ad un filtro passa-basso con frquenza di taglio fSampling/2 .
• Il filtro passa-basso ideale è una step-function (rect(f)) che per l’appunto è la trasformata di Fourier di sinc(x) .
15/10/2018 Elettronica Generale I_a , Raffaello D'Alessandro 44
The continuous Fourier transform of the normalized sinc (to ordinary frequency) is rect( f ), where the rectangular function is 1 for argument between −1/2 and 1/2, and zero otherwise. This corresponds to the fact that the sinc filter is the ideal (brick-wall, meaning rectangular frequency response) low-pass filter. (Wikipedia)
DAC (Parametri Importanti)
• Digital to Analog Converter• Risoluzione: legata al numero di bits (ENOB)
• Frequenza di campionamento
• Range dinamico (rapporto tra il valore MAX e MIN che il DAC può riprodurre), legato al rumore di fondo e al numero di bits
• THD + NOISE, rapporto di potenza, rispetto al segnale, di armoniche spurie e rumore presenti in uscita
• Alcune di queste sono importanti sempre, altre solo per i DAC la cui uscita deve variare rapidamente nel tempo
15/10/2018 Elettronica Generale I_a , Raffaello D'Alessandro 45
Tipi di DAC
• Varie tipologie, noi qui vedremo solo il Binary Resistor e il Ladder Converter
• Tra quelli più comuni ci sono anche:• PWM Pulse Width Modulation (motor control)
• Delta-Sigma DAC (precisissimo, audio 1bit DAC [pulse density modulation])
15/10/2018 Elettronica Generale I_a , Raffaello D'Alessandro 46
Poche nozioni sugli Operazionali (1)
• Guadagno con reazione negativa:
• Vout = A(Vin – bVout)
• Vout (1+bA) = AVin Vout= Vin A/(1+bA) • bA >> 1 quindi:
• Vout = 1/b * Vin
15/10/2018 Elettronica Generale I_a , Raffaello D'Alessandro 47
Vin S+
_
b
AVout
Poche nozioni sugli Operazionali (2)
• Esempio pratico:
• Vout viene riportata tramite R2 e R1sull’ingresso
• L’ingresso è quello invertente, quindi Voutviene SOTTRATTO (reazione negativa)
• b la frazine di Vout riportata in ingresso è uguale a:
• b = R1/R1+R2 (Partitore)
• Il guadagno AV = Vout/Vgen = 1/b = 1 + R2/R1
15/10/2018 Elettronica Generale I_a , Raffaello D'Alessandro 48
vgen
+
_
Out
R2
v-
v+
i2
i1 irRi vout
R1
Poche nozioni sugli Operazionali (3)
• Massa virtuale
• Con la reazione negativa, l’ingresso invertente (-) dell’operazionale assume le caratteristiche di una massa virtuale
• La tensione v- rimane uguale a v+ e isviene assorbita da if attraverso Rf
15/10/2018 Elettronica Generale I_a , Raffaello D'Alessandro 49
Vs+
_
Out
Rf
Rs v-
v+
if
is irRi
Rs
is
Rf
if
v-
v+
Vout
ir ≈ 0
is ≈ if
v- ≈ v+
Poche nozioni sugli Operazionali (4)
15/10/2018 Elettronica Generale I_a , Raffaello D'Alessandro 50
• is= ir+if is = v-/Ri + (v- - vout)/Rf
• vout = -Av- ( sarebbe A[v+ - v- ])
• ir ≈ is Rf /ARi << is ir ≈ 0 if ≈ is
• Praticamente is è compensata completamente da if
• Mentre v- ripete fedelemente il valore di v+
fi
ifs
fi
ifs
fi
s
RR
ARRvi
RR
))A1(RR(vi
R
)A1(v
R
vi
iF R
v
R
vA
iF
iF
RR
ARRv
F
ir
F
iF
i
sR
ARi
R
ARR
R
)v(vi
iF R
v
R
vA
0)vv(AR
R
A
R
R
v
R
vvvv
R
)vv(Av
R
vvii
R
vv
s
s
ff
fs
s
ff
outfs
s
s
Poche nozioni sugli Operazionali (5)• Circuito Sommatore:
• Sfrutta il principio di massa virtuale
• if = S ik• vout = -Rf * if
15/10/2018 Elettronica Generale I_a , Raffaello D'Alessandro 51
v1
+
_
Out
v-
v+
i1
vout
Rfif
R1
R2
RN
vN
iN
v2
i2
Poche nozioni sugli Operazionali (6)
• Filtro Passa Basso:
• Si aggiunge un condensatore in parallel alla resitenza di feedback:
• Av = -R1/R2 * 1/(1+if/f0)
• 2pf0 = w0 = 1/t = 1/RfCf
15/10/2018 Elettronica Generale I_a , Raffaello D'Alessandro 52
Binary Resistor DAC• Resistenze pesate, quindi se RN-1=10KW , allora RN-2= 20KW , RN-3 = 40KW ,
..., R0 =2N-1 * RN-1 ; e di conseguenza RF = 5KW
15/10/2018 Elettronica Generale I_a , Raffaello D'Alessandro 53
vref
+
_
Out
v-
v+vout
Rf= 5KW
if
RN-1
RN-2
R0
i0
iN-2
S0
SN-2
𝑉out = 𝑉ref1
2𝑆𝑁−1 +
1
4𝑆𝑁−2 +
1
8𝑆𝑁−3 + .....
1
2𝑁𝑆0
Massa virtuale
iN-1SN-1
Problemi legati al DAC Binary Resistor
• Problema più rilevante la risoluzione/precisione:
• Resistenze molto diverse tra loro che devono avere precisioni assolute anche dell’ordine di 1/10000 (12-14 bit)
• Offset dell’operazionale usato come Sommatore Analogico:• Poiché l’Offset in uscita dipende dal Guadagno Non-Invertente, questo cambia a
seconda della configurazione dei bit (interruttori) in ingresso. questo è un problema irrisolvibile e pone un tetto alla risoluzione ottenibile (in pratica qualche mV massimo)
15/10/2018 Elettronica Generale I_a , Raffaello D'Alessandro 54
DAC Ladder Converter• La rete resistiva in effetti divide la corrente
• Assumiamo tutti gli interruttori connessi a GND tranne S3
• Ogni nodo N (0, 1, 2, 3) si vede una resistenza 2R a sinistra ed una resistenza 2R a destra
• Ad ogni nodo N la corrente andrà metà a sinistra e metà a destra
15/10/2018 Elettronica Generale I_a , Raffaello D'Alessandro 55
vref
+
_
Out
v-
v+vout
3R if
R 2R
S2 S3
2R
R
2R
R
2R
2R
2R
S1S0
3210
Il bit3, presenta all’ingresso dell’operazionale, una tensione (Thevenin) attraverso una resistenza equivalente di 3R e un generatore equivalente a Vref/2
vThevenin = Vref/2
3Rv-
Ladder Converter
• Risolve elegantemente i due problemi del Binary Resistor:• Le resistenze hanno solo 2 valori indipendentemente dal numero di bit
• Il guadagno non-invertente dell’operazionale è costante e quindi l’eventuale offset può essere sottratto
• Gli altri bit si comportano alla stessa maniera di S3 con Vref che via via si dimezza
• Il principio di sovrapposizione ......
• Il chip DAC che useremo per il progetto è un Ladder Converter da 12 bit
15/10/2018 Elettronica Generale I_a , Raffaello D'Alessandro 56
𝑉out = 𝑉ref1
2𝑆𝑁−1 +
1
4𝑆𝑁−2 +
1
8𝑆𝑁−3 + .....
1
2𝑁𝑆0
DAC Progetto• AD7945
• 12-Bit Multiplying DACs
• Guaranteed Specifications with +3.3 V/+5 V Supply
• 0.5 LSBs INL and DNL
• Low Power: 5 uW typ Fast Interface
• 40 ns Strobe Pulsewidth (AD7943)
• 40 ns Write Pulsewidth (AD7945, AD7948)
• Low Glitch: 60 nV-s with Amplifier Connected
• Fast Settling: 600 ns to 0.01% with AD843
15/10/2018 Elettronica Generale I_a , Raffaello D'Alessandro 57
Analog to Digital Converter ADC
• Esistono tantissimi tipi di ADC
• Non possiamo trattarli in questa sede
• Quello che però possiamo valutare sono le caratteristiche principali che riguardano la precisione e l’errore di conversione
• L’ADC converte una quantità continua (i.e. tensione), in un numero intero (binario)
• Normalmente la quantità da convertire varia nel tempo
• Range e Risoluzione (i.e. tensione massima e step minimo)
• EFSR (Full Scale Range) = VrefH - VrefL (Ad esempioo 2 Volt - 0 Volt)
• Q = EFSR / (2N -1) (N = numero di bit dell'ADC)
15/10/2018 Elettronica Generale I_a , Raffaello D'Alessandro 58
Tipologie di ADC• Parametri principali: Risoluzione, Frequenza di campionamento.
• In ingresso generalmente si ha un circuito di Sample and Hold (S/H) che campiona il segnale ad un determinato istante e lo mantiene fino a conversione avvenuta.
• Varie tipologie per la parte di conversione:• Bancata di comparatori (Flash ADC)
• Bancata di comparatori pipelined (Pipelined FADC)
• Approssimazione successiva
• Wilkinson (a rampa)
• Doppia rampa (ARDUINO)
• Delta o Sigma-Delta
15/10/2018 Elettronica Generale I_a , Raffaello D'Alessandro 59
Errori di conversione (1)• In generale l'ADC è di tipo lineare (poche eccezion, ad esempio a
risposta logaritmica per applicazioni voce
• Gli errori di conversione sono dovuti a:• Errore di quantizzazione, insito nel processo di “discretizzare” una quantità
continua
• Errore di apertura, legato alla durata del campionamento della quantità che varia nel tempo
• Errore di jitter, legato alla variazione dell’istante in cui viene aperto il “gate” di campionamento
• Errore di linearità, errore di linearità differenziale DNL, errore di linearità integrale INL
• Rumore elettronico15/10/2018 Elettronica Generale I_a , Raffaello D'Alessandro 60
Errori di conversione (2)
• Si ha quindi una dispersione dei valori convertiti che (soprattutto ad alta frequenza) può risultare maggiore dell'errore di quantizz. o di NON linearità (vedi dopo).
15/10/2018 Elettronica Generale I_a , Raffaello D'Alessandro 61
Quantizzazione: la differenza tra Vin e la tensione
corrispondente al codice generato dall'ADC, normalmente
quantificato in +- 1/2 LSB [Least Significant Bit].
Jitter: dovuto al jitter del clock di campionamento. Importante
per segnali che variano nel tempo con frequenze caratteristiche vicine alla fSampling. In pratica il segnale viene campionato in maniera casuale attorno alla marca temporale “vera”.
Apertura: Durata finita della finestra di sampling (Dt). Il valore
convertito è di fatto una media su questo arco di tempo.
Jitter
Errori di conversione (3)• Non linearità differenziale DNL (Volt):
• DNL: per ogni codice generato D viene valutato l'intervallo di tensione in ingresso corrispondente a quel codice L(D). Viene quindi calcolato il valor medio di L: <L>. Per ogni codice D viene quindi valutata la differenza tra L e <L>. Si ha quindi:• DNL(D) = L(D) - <L> (Volt)
• MAX (|DNL(D)|) viene dato come valore di DNL (Differential Non Linearity)
• In altre parole rappresenta lo scostamento massimo tra l'intervallo di tensione medio (che in un ADC ideale corrisponderebbe alla sua risoluzione) e l'intervallo trovato per ogni codice D generato.
• Viene anche espressa in termini di LSB. Un buon ADC è caratterizzato da DNL < 0.5 LSB.
• DNL(D) / <L> == L(D) - 1 (con L(D) espresso in unità di LSB)
15/10/2018 Elettronica Generale I_a , Raffaello D'Alessandro 62
Errori di conversione (4)• Non linarità integrale INL (Volt):
• Per ogni codice D viene valutato il valore di tensione nominale corrispondente a quel codice A(D) = D*<L>
• A(D) viene confrontato con Vin - VrefL , quindi:• INL(D) = A(D) - (Vin - VrefL)
• INL = MAX(|INL(D)|)
• In altre parole, si valuta lo scostamento massimo tra A(D) e il Vin corrispondente.
• A(D) e DNL(D) sono legati tra loro da:• A(D) = Si=0
i=D DNL(i) + INL(0) [eventuale offset fisso] - DNL(0)/2 - DNL(D)/2
• L'errore totale è quindi: DQuantization + DAperture + DJitter + DNL + INL
15/10/2018 Elettronica Generale I_a , Raffaello D'Alessandro 63
Esempi di DNL, INL e “Missing Code”
• A sinistra un esempio di non linearità differenziale, a destra di non linearità integrale con presenza di missing code
15/10/2018 Elettronica Generale I_a , Raffaello D'Alessandro 64
Misura del DNL
• Non è banale. Soprattutto per ADC che hanno risoluzioni molto elevate (eg. 16 bit).
• Immaginate di dover trovare per ognuno dei (eg. 64000) codici l'intervallino di tensione corrispondente (eg. <L> = 2V / 64000).
• NON si fa con un partitore di tensione in ingresso !
• Quello che si può usare è un metodo statistico:• Si manda una tensione variabile nel tempo che “spazzoli” tutto il range dell'ADC
• Normalmente si usa una sinusoide, che ha una solo frequenza ben definita
• Noi useremo una triangolare
15/10/2018 Elettronica Generale I_a , Raffaello D'Alessandro 65
Perché triangolare ?• L'onda triangolare “spazzola” in tempi uguali intervalli di tensioni uguali !!
(Nella realtà occorre stare lontani dai vertici)
• Quindi se divido il Range dell’ADC in 2N intervalli uguali, ognuno di questi viene “coperto” dall'onda triangolare con lo stesso intervallo di tempo Dt
• Ovvero ho una distribuzione «piatta» di tensioni da convertire !
15/10/2018 Elettronica Generale I_a , Raffaello D'Alessandro 66
Range A
DC
VrefH
VrefL
V
t
Popolazione uniforme in intervalli di tensione
• In altre parole, se costruisco un istogramma con in ascissa gli intervalli DV e in ordinata la probabilità che la tensione dell'onda triangolare si trovi in QUEL DETERMINATO INTERVALLO, trovo una distribuzione PIATTA (uniforme)
15/10/2018 Elettronica Generale I_a , Raffaello D'Alessandro 67
P(DV)
1/2N
3DV2DVDV 2NDV
Distribuzione in INGRESSO al DAC
Popolazione uniforme dei codici numerici• A questo punto supponiamo che gli intervalli DV siano quelli corrispondenti ai
vari (2N) codici di conversione del mio ADC a N bit.
• Per ogni codice D di conversione avremo un intervallo DV(D) corrispondente.
• Se questi intervalli fossero tutti esattamente uguali (DNL = 0), rifacendo l'istogramma di prima con in ascissa D (invece di DV(D)) troverei la stessa distribuzione piatta
15/10/2018 Elettronica Generale I_a , Raffaello D'Alessandro 68
P(D)
1/2N
11101 2N100 101
Distribuzione in USCITA dal DAC
Condizioni non uniformi, presenza di DNL
• Ovviamente gli intervalli NON sono tutti uguali (per via del DNL)
• Se un intervallo è più largo, l'onda triangolare ci stazionerà per più tempo. L'opposto se l'intervallo è più piccolo.
• L’istogramma quindi diventerà simile a questo:
• Con bin corrispondenti a codici
diversi, aventi P(D) diversi tra loro
15/10/2018 Elettronica Generale I_a , Raffaello D'Alessandro 69
P(D)
1/2N
11101 2N100 101
Distribuzione in USCITA dal DAC
La probabilità P(D)
• La probabilità P(D) è data da:• P(D) = DV(D) / VRangeADC
• Ovvero usando le definizioni precedenti:
• P(D) = L(D) / VRangeADC
• Quindi se riusciamo a misurare P(D) per ogni codice D dell'ADC possiamo ricavare la DNL:
• DNL(D) = VRangeADC (P(D) - <P(D)>)
• DNL(D) = VRangeADC (P(D) - 1/2N)
15/10/2018 Elettronica Generale I_a , Raffaello D'Alessandro 70
Misura di DNL• Abbiamo un modo semplice di misurare P(D) e quindi di conseguenza la
DNL(D):• La misura di P(D), diventa una misura di conteggio
• Si fa campionare all'ADC un segnale triangolare in ingresso
• Si acquisiscono un numero totale NTOT di conversioni
• Si costruisce un istogramma con in ascissa il codice D del conteggio e in ordinata il numero di volte N(D) che si è presentato quel codice particolare
• Il rapporto tra il numero di volte che si è presentato il codice D (N(D)) e il numero totale di conversioni registrate (NTOT) è la nostra P(D) che cerchiamo
• P(D) = N(D) / NTOT
15/10/2018 Elettronica Generale I_a , Raffaello D'Alessandro 71
Misura di DNL(D)• Quante conversioni si devono acquisire ?
• Dipende dalla precisione richiesta dalla misura.
• La popolazione di ogni “bin” dell'istogramma segue una distribuzione binomiale con probabilità P(D), che noi stimiamo con:• P(D) = N(D) / NTOT
• La varianza s2(D) del numero N(D) di conteggi nel bin è quindi data da:
• s2(D) = P(D)(1-P(D))NTOT (Binomiale)
• Se P(D) è molto piccolo rispetto a 1 (nel caso del nostro ADC a 10 bit P(D) sarà un valore prossimo a 1/1024) allora la varianza si approssima a:
• s2(D) = P(D) NTOT = N(D) (Poissoniana)
15/10/2018 Elettronica Generale I_a , Raffaello D'Alessandro 72
Misura di DNL(D)• L'errore su P(D) è quindi dato da (senza considerare le corrleazioni presenti):
• sP(D) = s(D) / NTOT
• sP(D) = √N(D) / NTOT
• sP(D) = √P(D)NTOT / NTOT
• sP(D) = √(P(D) / NTOT )
• L'errore relativo su P(D) è dato da:
• sP(D)/P(D) = 1/√P(D)NTOT = 1/√N(D).
• Quindi per avere una precisione su DNL del 10%, basta che in ogni bin ci siano almeno 100 conteggi.
• NTOT ≈ 2N * 100 = 25600 conteggi
15/10/2018 Elettronica Generale I_a , Raffaello D'Alessandro 73
In laboratorio• Il DNL dipende dalla frequenza del segnale in ingresso e dalla frequenza di
campionamento
• Prima si misura la frequenza di campionamento dell’Arduino (~10 KHz) ricostruendo l’onda triangolare
• Valutiamo DNL(D) per due frequenze dell'onda triangolare (10 Hz e 500 Hz)
• La prima verifica da fare è la ricostruzione del segnale dai campionamenti dall'ADC
• A seguito si fanno gli istogrammi e si valuta sia DNL(D) che INL(D)
15/10/2018 Elettronica Generale I_a , Raffaello D'Alessandro 74
In laboratorio
• Con i dati acquisiti dall’ARDUINO dovrete eleborare dei grafici che mostrino la DNL e INL del suo ADC:
15/10/2018 Elettronica Generale I_a , Raffaello D'Alessandro 75