+ All Categories
Home > Documents > Cosa è un DAC?

Cosa è un DAC?

Date post: 17-Mar-2016
Category:
Upload: brasen
View: 72 times
Download: 1 times
Share this document with a friend
Description:
Vcc. Vref. output analogico (Vout). D[n-1]. Convertitore D/A. D[n-2]. D[0]. gnd. Cosa è un DAC?. Digital-to-Analog converter dispositivo “mixed signal”: Input digitale (parola a n bit) Output analogico: tensione o corrente. Vcc. Vref. output analogico (Vout). D[n-1]. - PowerPoint PPT Presentation
64
Transcript
Page 1: Cosa è un DAC?
Page 2: Cosa è un DAC?
Page 3: Cosa è un DAC?
Page 4: Cosa è un DAC?
Page 5: Cosa è un DAC?

Cosa è un DAC?

Digital-to-Analog converter dispositivo “mixed signal”:

o Input digitale (parola a n bit)

o Output analogico: tensione o corrente

output analogico (Vout)D[n-1]

VrefVcc

...D[n-2]

D[0]

gnd

Convertitore D/A

Page 6: Cosa è un DAC?

La tensione di output è

refnout VnDV2

]0..1[

output analogico (Vout)D[n-1]

VrefVcc

...D[n-2]

D[0]

gnd

Convertitore D/A

Page 7: Cosa è un DAC?

Cosa fa esattamente un DAC?

Per un DAC a 3 bit ci sono 8 possibili codici di input

D[2..0] Vout

000 0V 001 1V 010 2V 011 3V 100 4V 101 5V 110 6V 111 7V

output analogico (Vout)D[2]

Vref (8V)Vcc

D[1]D[0]

gnd

Convertitore D/A

Page 8: Cosa è un DAC?

Il DAC sulla scheda di laboratorio

REFA, REFB, REFC, REFDTensioni di riferimento fissate a 2.5 V

DACA, DACB, DACC, DACDTensioni di output

VDDLDACDACADACBDACCDACDLOAD

4 DAC in un singolo chip:

1234567

1413121110 9 8

GNDREFAREFBREFCREFDDATADCLK

Page 9: Cosa è un DAC?
Page 10: Cosa è un DAC?

VDDLDACDACADACBDACCDACDLOAD

1234567

1413121110 9 8

GNDREFAREFBREFCREFDDATADCLK

DATA, LDAC, LOAD, DCLKSegnali di Input per programmare il DAC

configurazione

FPGA

Sono controllati dalla FPGA

Page 11: Cosa è un DAC?
Page 12: Cosa è un DAC?
Page 13: Cosa è un DAC?

DCLK

DATA A1 A0 RNG D7 D6 D5 D4 D3 D2 D1 D0

Il codice digitale a 8 bit viene trasmesso dalla FPGA al DAC in modo seriale tramite la linea DATA assieme a un treno di impulsi di sincronizzazione lungo la linea DCLK

Protocollo di configurazione (circuito da implementare nella FPGA)

Identificatore del DAC:A1A0 = 00 DAC0A1A0 = 01 DAC1A1A0 = 10 DAC2A1A0 = 11 DAC3

Codice digitale (è trasmesso prima il MSB)

RNGVDV refnout 12

]0..7[La tensione di output è

11 impulsi

Page 14: Cosa è un DAC?

DCLK

DATA A1 A0 RNG D7 D6 D5 D4 D3 D2 D1 D0

Il codice digitale a 8 bit viene trasmesso dalla FPGA al DAC in modo seriale tramite la linea DATA assieme a un treno di impulsi di sincronizzazione lungo la linea DCLK

Le linee LDAC e LOAD sono usate dal DAC per caricare i bit ricevuti lungo la linea DATA in un registro interno e per aggiornare la tensione di output

LDAC

LOAD

Sempre basso

La tensione di output viene aggiornata con questo impulso

Page 15: Cosa è un DAC?

DAC_interface

DCLKDATALDACLOAD

clkres

SW0

Una macchina a stati parte quanto SW0 viene premuto (segnale di inizio configurazione)

oGenera un treno di 11 impulsi DCLKoSuccessivamente genera un impulso LOAD

La linea LDAC è tenuta sempre bassa

La parola in ingresso D[7..0] deve essere serializzata: su ogni fronte di salita di DCLK viene messo un nuovo bit (il primo trasmesso è il MSB)

D[7..0]DAC_interface

A[1..0]

Page 16: Cosa è un DAC?
Page 17: Cosa è un DAC?

False partenze:1. non va bene generare un segnale largo 11 cicli di clock e usarlo in AND col segnale di clock della FPGA

Questo si chiama “gating” del clock e in generale è meglio evitarlo

Page 18: Cosa è un DAC?
Page 19: Cosa è un DAC?

Diagramma degli stati corretto ed “elegante” che genera un treno di impulsi attraverso un loop o ciclo

Il numero di cicli è controllato da un contatore che genera un segnale Cout quando ha raggiunto il giusto numero di conteggi (cicli)

Se l’enable del contatore (CNT_EN) è asserito nello stato S0, a quale valore del conteggio il contatore deve generare Cout?

Page 20: Cosa è un DAC?
Page 21: Cosa è un DAC?

Cambiamo i nomi degli input: DAC[7..0] corrisponde a D[7..0] DAC[8] corrisponde a RNG DAC[10..9] corrisponde a A[1..0]

Page 22: Cosa è un DAC?

Esternamente (nel foglio dove posizioniamo il simbolo DAC_INTERFACE) possiamo fare questi collegamenti

Page 23: Cosa è un DAC?

Abbiamo ancora il problema che DAC[10..0] deve essere serializzataSu ogni fronte di salita di DCLK deve essere messo un bit lungo la linea DATA

Convertitore parallelo/seriale

DCLK

DATA A1 A0 RNG D7 D6 D5 D4 D3 D2 D1 D0

DAC[10] DAC[9] DAC[8] DAC[7] DAC[6] DAC[5] DAC[4] DAC[3] DAC[2] DAC[1] DAC[0]

Page 24: Cosa è un DAC?

Stesso contatore usato dallaMacchina a stati

Page 25: Cosa è un DAC?

I bit cambiano sul fronte di discesa di DCLK anzichè su quello si salita

Page 26: Cosa è un DAC?

II soluzione:Il clock del contatore che incrementa SEL è DCLK

Qui i bit cambiano su ogni fronte di salita di DCLK

Il problema è che sul primo fronte SEL diventa 1 e appare quindi DAC[9] mentre DAC[9] dovrebbe apparire sul secondo

Page 27: Cosa è un DAC?

III soluzione:Cerchiamo di usare uno shift register e facciamo scorrere i bit con DCLK

Questo potrebbe funzionare se i bit DAC[10..0] sono preventivamente caricati nei Flip-Flop prima che arrivi il treno di impulsi DCLK

Problema: come faccio a caricare i FF con i bit?

Quanti FF ci vogliono?

Page 28: Cosa è un DAC?

Devo mettere davanti a ogni FF dello shift register un blocco di logica combinatoria con un input LOAD_SHREG che serve a caricare il FF

Per caricare il FF è necessario anche un impulso sull’input di clock del FF?Come posso fare?

LOAD_SHREG potrebbe essere generato modificando la macchina a stati. Come?

Page 29: Cosa è un DAC?

Caricamento dei FF tramite l’input PRES dei FF

Un inconveniente è che PRES (come RES) è un input asincrono attivo indipendentemente dal segnale di clock

Page 30: Cosa è un DAC?

Vediamo che problemi si potrebbero verificare con input asincroni (N.B. questo è illustrato per i segnali CNT_RES e LOAD, non per il caricamento dei FF)

Assegnamo a ciascuno dei 4 stati il codice indicato nelle bolle

Page 31: Cosa è un DAC?

La macchina a stati parte con START_DAC. Nel diagramma temporale sono indicati i due bit dello stato

Nella transizione da STATE[1..0]=01 (S0) a STATE[1..0]=10 (S1) entrambi i bit cambiano, ma non simultaneamente

Per un breve transiente lo stato è STATE[1..0]=11 (S2) e CNT_RES e LOAD vengono asseriti (creando problemi)

Page 32: Cosa è un DAC?

Possibile soluzione: facciamo passare CNT_RES e LOAD attraverso un FF.

Poichè il FF campiona il suo input solo sul fronte di salita del clock, il glitch non viene campionato (è filtrato)Ma N.B. L’impulso generato dopo è ritardato così di un ciclo di clock

Page 33: Cosa è un DAC?

Altra soluzione: usiamo un codice per gli stati in modo tale che da una transizione all’altra cambi solo un bit per volta

In questo modo non è possibile generare glitch

In ogni caso potrebbe essere sempre preferibile cercare dei codici in cui cambi un solo bit per volta il più possibile

Codice Gray a 2 bit00 0111 10

Page 34: Cosa è un DAC?

Tornando al caricamento dei FF è preferibile un caricamento sincrono

Serve un MUX in cui la linea di selezione è LOAD_SHREG

Page 35: Cosa è un DAC?
Page 36: Cosa è un DAC?

Cosa è un ADC?

Analog-to-Digital Converter dispositivo “mixed signal”:

o Input analogico (tensione o corrente)

o Output digitale: parola a n bit

Input analogico (Vin)

Out[n-1]

VrefVcc

...Out[n-2]

Out[0]

gnd

Convertitore A/D

Page 37: Cosa è un DAC?

Può essere considerato un partitore

o L’output ci dice: che frazione di Vref è l’input Vin?

o Output:

VrefVinnOut n2]0..1[

Input analogico (Vin)

Out[n-1]

VrefVcc

...Out[n-2]

Out[0]

gnd

Convertitore A/D

Page 38: Cosa è un DAC?

Cosa fa esattamente un ADC?

Per un ADC a 3 bit ci sono 8 possibili codici di output

Input analogico (Vin)

Out[2]

Vref(8V)Vcc

Out[1]Out[0]

gnd

Convertitore A/D

Vin Out[2..0]

0-1 000 1-2 001 2-3 010 3-4 011 4-5 100 5-6 101 6-7 110 7-8 111

Esempio: se Vin=5.5 V e Vref=8 V Out[2..0] = 101

Page 39: Cosa è un DAC?

Risoluzione

L’ADC risolve due tensioni diverse se differiscono per più di 1 V producendo due codici diversi

La risoluzione dell’ADC è 1 V (Vref/23)

Input analogico (Vin)

Out[2]

Vref(8V)Vcc

Out[1]Out[0]

gnd

Convertitore A/D

Vin Out[2..0]

0-1 000 1-2 001 2-3 010 3-4 011 4-5 100 5-6 101 6-7 110 7-8 111

Il bit meno significatico (LSB) rappresenta 1 V

Page 40: Cosa è un DAC?

La risoluzione di un ADC dipende dal numero di bit e da Vref:

Fissata Vref, maggiore è il numero di bit, migliore è la risoluzione. Se n=8 (anzichè n=3) la risoluzione sarebbe 8/28~31 mV

n

Vref2

La tensione Vref determina il range dinamico dell’ADC

A parità di bit, minore è la tensione Vref, più fine è la suddivisione dell’intervallo Vref(=Vin max)-0 per cui la risoluzione migliora.

Ad esempio, se Vref=0.8 (anzichè 8 V) la risoluzione sarebbe 100 mV. Il miglioramento va però a scapito del range dinamico.

formulazione alternativa: (fissata Vref) la risoluzione di un ADC è il numero di bit.

Risoluzione e range dinamico

Page 41: Cosa è un DAC?

ADC trackingDescrizione a grandi linee: il codice a 8 bit di un contatore viene convertito da un DAC in una tensione analogica che viene quindi confrontata con la tensione di input. Il contatore viene incrementato fino a quando la tensione del DAC raggiunge quella in input. A questo punto il conteggio raggiunto dal contatore è il codice richiesto.

Page 42: Cosa è un DAC?

Contatore a 8 bit

FPGA

DAC interface

count[7..0]

DCLKDATALDACLOAD

Vanno ai DAC

DAC Vanalog

Vanalog

Vincomp

sm_ADC

CNT_EN

CNT_EN

Start_conv

comparatore

ADC tracking: implementazione

comp

Tensione in ingresso da convertire

Page 43: Cosa è un DAC?

Il comparatore (analogico) confronta due tensioni e produce in output un segnale logico:

Se Vin > Vanalog comp = 0Se Vin < Vanalog comp = 1

Collegamento comparatore-ADC

Page 44: Cosa è un DAC?
Page 45: Cosa è un DAC?

Soluzione alternativa: aspetta che l’interfaccia del DAC asserisca il segnale LOAD che va al DAC

Page 46: Cosa è un DAC?

si ripete il ciclo

Page 47: Cosa è un DAC?

ADC[7..0] è collegato a due cifre del display

Page 48: Cosa è un DAC?

Per un’eventuale nuova conversione

Le macchine a stati vanno disegnate usando verilog

Page 49: Cosa è un DAC?

Altri dettagliSi deve impiegare il terzo DAC (CMREF) corrispondente ad A[1..0]=10

Vref dei DAC fissa Vref dell’ADC.Nella scheda Vref = 2.5 V

Il comparatore è un amplificatore operazionale (più dettagli in seguito)

Vin (COM_IN) può provenire da un generatore di tensione tramite un connettore LEMO

Page 50: Cosa è un DAC?

Limitazioni dell’ADC tracking

La limitazione principale è che è lento:Poichè il contatore parte sempre da zero, Il tempo di conversione è variabile

Maggiore è Vin maggiore è il tempo di conversione: se Vin = Vref è necessario ripetere il ciclo di incremento del contatore 256 volte!

Page 51: Cosa è un DAC?

START_CONV: inizio conversione.

Nel SAR viene caricata la parola 10000000 (solo il MSB = 1)

Se Vin >VD il controllore mantiene MSB a 1 e carica un altro 1 nel bit immediatamente successivo.

Se, invece Vin < VD il controllore pone MSB a 0 e carica un 1 nel bit immediatamente successivo.

La nuova parola viene caricata nel SAR e l'uscita del DAC viene aggiornata.

L’algoritmo descritto per il bit MSB viene ripetuto in modo identico per tutti gli altri bit.

ADC ad approssimazioni successive

Page 52: Cosa è un DAC?

Visualizzazione della conversione sul display

Page 53: Cosa è un DAC?
Page 54: Cosa è un DAC?

Visualizzazione della tensione in decimale

Page 55: Cosa è un DAC?

Può essere implementata con una ROM:Input a 8 bit (256 righe di memoria)Output a 12 bit

Page 56: Cosa è un DAC?
Page 57: Cosa è un DAC?

La variabile temporale In generale i segnali del mondo reale hanno una qualche dipendenza dal tempo

Nel processo di conversione A/D ci interessa ricostruire questa dipendenza dal tempo

Campionamento del segnale

Page 58: Cosa è un DAC?

Input analogico Sample

and Hold

L’input analogico non va direttamente all’ADC. Entra prima in un circuito che campiona il segnale a un certo istante e quindi lo tiene congelato per tutto il tempo richiesto dalla conversione

Il campionamento trasforma il tempo da continuo a discreto

ADCOutput digitale

L’ADC trasforma il segnale analogico quantizzato nel tempo in un codice digitale (segnale quantizzato)

Page 59: Cosa è un DAC?

Nei sistemi più semplici l’input analogico è collegato direttamente all’ADC

ADCOutput digitale

Questo va bene se il segnale varia nel tempo molto più lentamente del tempo richiesto dall’ADC per effettuare la conversione

Input analogico

In ogni caso, è il tempo di conversione che quantizza il tempo

Page 60: Cosa è un DAC?

Errore di quantizzazione della tensione

Al crescere della tensione di input cresce anche l’errore fino a quando cambia il codice

Page 61: Cosa è un DAC?

Aggiungiamo un offset pari a 1/2LSB all’input

Abbiamo un errore pari a ±1/2LSB

Page 62: Cosa è un DAC?

_

Segnale dopo il S/H

Errore di quantizzazione in un segnale variabile

Output digitale

Errore di quantizzatione

Page 63: Cosa è un DAC?

L’errore di quantizzazione appare come un rumore casuale.

La quantizzazione aumenta l’errore casuale del segnale

Caratteristiche di questo rumore:oDistribuito uniformemente nell’intervallo ±1/2LSBoDeviazione standard 1/sqrt(12)LSB=0.29LSB

Esempio:

Segnale analogico di ampiezza massima 1 V con rumore casuale di 1.0 mV

Conversione A/D a 8 bit 1mV = 0.255 LSB

Rumore di quantizzazione = 0.29 LSB

Rumore totale dell’output digitale LSB386.029.0255.0 22

Aumento del 50% del rumore già presente nel segnale

Page 64: Cosa è un DAC?

L’errore di quantizzazione diminuisce aumentando il numero di bit

La conversione di un segnale anaogico con un ADC a

o8 bit aggiunge un errore rms 0.29/256 ~ 1/900 del valore di fondo scala

o12 bit aggiunge un errore rms 0.29/4096 ~ 1/14000 del valore di fondo scala

o16 bit aggiunge un errore rms 0.29/65536 ~ 1/227000 del valore di fondo scala

Il numero di bit determina la precisione dei dati. La decisione sul numero di bit necessari dipende da:

oQuanto rumore è già presente nei dati

oQuanto rumore può essere tollerato nel segnale digitale


Recommended