Esercitazione 6 : CONVERTITORE D/A CON RETE A SCALA Obiettivo Misurare gli errori di guadagno, di offset, e di nonlinearità di un convertitore D/A realizzato con rete a scala e componenti discreti. Verificare la presenza di nonlinearità differenziale e di glitch, e l’effetto di errori nel valore dei componenti. Trasformare il D/A in A/D e verificare qualitativamente il funzionamento. Specifiche Progettare un convertitore D/A a 6 bit utilizzando una rete a scala pilotata con deviatori di tensione. L'uscita deve coprire il campo 0 - 10 V. I deviatori sono costituiti dallo stadio di uscita di integrati logici CMOS tipo CD4029 e CD4013. Sono disponibili reti a scala con R = 13.5 kΩ , e amplificatori operazionali tipo LM741. Usare tensioni di alimentazione di 5 V (per i circuiti logici) e di +/-15 V (per gli amplificatori operazionali). Per questa esercitazione è opportuno disporre di una rete a scala precablata, secondo la struttura indicaa nel diagramma a lato (con valori di R da 10 a 50 kΩ). L A 2R B 2R R R 2R C 2R D E R R R 2R 2R 2R F G I 2R H Progetto I circuiti logici sono collegati in modo da formare un contatore a 6 bit (64 stati). Questo permette di applicare i diversi valori di ingresso (digitale) facendo avanzare il contatore. Per valutare gli errori di non linearità occorre determinare la resistenza equivalente delle uscite (RON), e confrontarla con il valore di R (rete a scala). La RON può essere diversa tra i due integrati e per i due stati di uscita. Il valore della RON può essere determinato dalle specifiche di tensione/corrente delle uscite riportate sui cataloghi. Realizzare il contatore in modo da minimizzare l'errore in uscita dovuto alla RON. ETLlabdac4c - 21/05/02 8.06 1 Misure Nel predisporre il generatore che invia il clock al contatore, limitare il livello del segnale tra 0 e 5 V (o comunque entro il campo tra massa e alimentazione dei circuiti logici). Verifica qualitativa del funzionamento Verificare con l'oscilloscopio il corretto funzionamento del divisore (non occorre collegare la rete a scala). Sincronizzare la base tempi con il segnale a frequenza più bassa, e verificare frequenza e fase delle altre uscite. Con la rete a scala collegata e il contatore comandato da un clock continuo verificare che venga generata in uscita una rampa continua di 64 livelli. La rampa è osservabile anche scollegando l'uscita (in corrente) della rete a scala e osservando la tensione a vuoto sul morsetto. Misura dei livelli di uscita Facendo avanzare il contatore a passi singoli (a partire da una condizione nota), misurare ciascuno dei 64 livelli. Dato che successivamente dovranno essere effettuate delle differenze tra i valori misurati, usare gli strumenti in modo da ottenere la massima risoluzione possibile, e non effettuare arrotondamenti. Se il generatore usato per il clock non permette di inviare singoli impulsi, montare un deviatore manuale con circuito antirimbalzo per generare impulsi singoli. Il circuito antirimbalzo può essere realizzato con un FF SR comandato da un deviatore che attiva alternativamente gli ingressi S e R. Calcolo degli errori e diagrammi dei risultati Dalle misure effettuate ricavare i parametri della retta approssimante con il metodo dei minimi quadrati; da questi calcolare gli errori di offset e di guadagno. Tracciare i diagrammi della non-linearità assoluta e non-linearità differenziale, prendendo come riferimento la retta approssimante. Indicare nei diagrammi l'errore di misura (attenzione: in questo caso è confrontabile con il risultato della misura stessa). ETLlabdac4c - 21/05/02 8.06 2 Esperienza dimostrativa Visualizzando la caratteristica completa (clock continuo), verificare l'effetto di errori nella rete a scala, variando le resistenze dei diversi rami (inserire altre resistenze in serie o in parallelo). Valutare la relazione tra errore introdotto nel ramo (variazione di resistenza) ed errore in uscita, in funzione della posizione del ramo (MSB, ...LSB). Sempre visualizzando la caratteristica completa e applicando un clock continuo, aumentare la cadenza del clock fino a rendere visibili i glitch. Verificare che la transizione da fondo scala a 0 ha pendenza limitata dallo slew rate dell’operazionale. Aumentare il ritardo di commutazione di un ramo inserendo in parallelo alla corrispondente uscita logica un condensatore, e verificare che vengono introdotti glitch nel punto della caratteristica in cui commuta il bit corrispondente. Per lo MSB-1 e gli altri bit di peso più basso il ritardo determina glitch sulla transizione 0-1 e 1-0; verificare il verso del glitch nei due casi. La figura indica (per un DAC a 4 bit) la corrispondenza tra stati del contatore e rampa di uscita. Sono riconoscibili le posizioni corrispondenti a metà del fondo scala (commutazione del MSB), quarti, e così via. Verificare che introducendo anomalie (ritardi, errori nella rete di peso) su un determinato bit, gli effetti sono evidenti nel punto in cui il bit cambia stato. ETLlabdac4c - 21/05/02 8.06 3 Nonlinearità differenziale Le foto di questa pagina evidenziano errori di nonlinearità diffrenziale ottenuti modificando la corrente di un ramo della rete a scala con una resistenza inserita in parallelo al ramo stesso. La rampa è sempre formata da 64 gradini. La resistenza è in parallelo al ramo del MSB. L’errore si manifesa come un incremento del peso del MSB (incremento della corrente nel ramo), che determina un “innalzamento” della seconda metà della caratteristica (corrispondente alla parte in cui MSB = 1). Inserendo la resistenza in parallelo al ramo del MSB-1 si modificano il secondo e il quarto “quarto”, in cui MSB-1 = 1. L’errore introdotto sul ramo è sempre lo stesso; dato però che il peso del ramo è metà rispetto al caso precedente, l’effetto in uscita è dimezzato. A metà del fondo scala la caratteristica diventa non-monotona. Spostando la resistenza sul ramo MSB-2 si nota che l’errore interviene per “ottavi” del fondo scala, con ampiezza ulteriormente dimezzata. L’entità dell’errore non è più tale da determinare non-monotonicità. Ritardando la commutazione del MSB-1 compaiono glitch in corrisponenza della metà e dei quarti di fondo scala. La direzione del glitch dipende dal verso della commutazione del bit: ritardando il passaggio da 0 a 1 si introduce uno stato temporaneo 000.. (glitch verso massa); ritardando il passaggio da 1 a 0 lo stato transitorio è 111…, che determina un glitch verso il fondo scala. ETLlabdac4c - 21/05/02 8.06 4 Calcolo della retta approssimante Dato l’insieme dei risultati di misura (xi , yi) si devono determinare i parametri m e n della miglior retta approssimante y = mx + n. Deve essere minimo l’errore quadratico complessivo E calcolato per gli N punti: E= N−1 ∑ (yi − mx i − n) 2 i= 0 Il minimo di E si ricava annullando le derivate parziali rispetto a m e n: δE = m xi2 − xi yi + n xi = 0 δm i i i δE = nN − yi + m xi = 0 δn i i ∑ ∑ ∑ ∑ ∑ Risolvendo per n, m, e dato che in questa esperienza N = 64: 63 ∑ xiyi − m= i=0 63 ∑ xi i=0 63 2 1 63 63 ∑ x i ∑ y i 64 i=0 i=0 1 63 ∑ xi − 64 i=0 2 63 ∑ yi − m ∑ xi n= i=0 i=0 64 I parametri della retta ideale y = m0 x + n0 sono: n0 = 0 m 0 = 10V / 63 = 0.1562 V • LSB Errore di guadagno E’ la variazione di pendenza tra la retta meglio approssimante e la retta ideale: ε g = m − m0 • Errore di offset E’ lo scostamento dell’intercetta sull’asse y rispetto al valore nominale: ε off = n − n 0 • Valori analogici della retta approssimante I valori analogici da utilizzare per calcolare gli errori di nonlinearità vanno ricavati dalla relazione y = mx + n , dove m e n sono i parametri calcolati in precedenza. ETLlabdac4c - 21/05/02 8.06 5 Trasformazione in convertitore A/D E’ possibile trasformare il circuito in A/D ad inseguimento utilizzando l’operazionale come comparatore. Mantenendo solo la parte di rete di peso comandata dal CD4029, con il circuito indicato in figura si realizza un convertitore A/D a inseguimento. L’operazionale viene usato come comparatore tra la tensione Vu generata dalla rete a scala e la Vi di ingresso. Il contatore viene incrementato o decrementato (attraverso il comando Up/Down), a seconda che la tensione Vu ricostruita attraverso il D/A sia minore o maggiore della Vi. CD 4029 CK Q1 Q2 2R 2R Q3 2R R U/D Q4 2R R 2R R Vu R6 Vi Per adattare i livelli presenti in uscita del comparatore ai livelli richiesti per il comando up/down del contatore si usa la rete formata dalla resistenza R6 e diodo zener. Scegliere uno zener adatto e determinare il valore opportuno per R6; in alternativa è possibile usare un circuito di clamp a diodi. Usare come comparatore un LM748 (molto più veloce in questa applicazione del 741). Per verificare il funzionamento del convertitore applicare un segnale Vi di ampiezza corrispondente al fondo scala e frequenza bassa, tale che lo slew rate massimo sia inferiore allo slew rate ottenibile sulla Vu (pari ad Ad/Tck). Nell’immagine compaiono le tensioni Vi e Vu: Vi è la tensione sinusoidale, e Vu il segnale ricostruito attraverso il D/A, che si modifica in modo da inseguire continuamente Vi. La differenza Vi – Vu è l’errore di quantizzazione. ETLlabdac4c - 21/05/02 8.06 6 Espandendo l’asse tempi si osservano i singoli passi dell’inseguimento, a gradini di ampiezza costante in discesa o in salita. Quando il segnale varia entro 1 LSB (zona indicata dall’ellisse gialla) si ha una sequenza di passi in salita e discesa alternati. Aumentando la frequenza del segnale cresce lo slew rate, e la tensione Vu non riesce a inseguire Vi determinando un errore di sovraccarico. Il segnale ricostruito diventa un’onda triangolare, con pendenza corrispondente al massimo slew rate, pari ad Ad/Tck. E’ possibile anche visualizzare lo stato del contatore collegando dei LED alle uscite; in questo caso si introduce un errore dovuto al gruppo resistenza-LED collegato sulle uscite. Per limitare questo errore occorre limitare la corrente che circola nei LED a meno di 1 mA (resistenze da 4,7 KΩ in serie ai LED). Variando molto lentamente l’ingresso, verificare il funzionamento e tracciare la transcaratteristica D(A). ETLlabdac4c - 21/05/02 8.06 7 ETLlabdac4c - 21/05/02 8.06 8