Nel nostro progetto sono presenti più segnali di riferimento: il segnale princi- pale, a frequenza più alta (100KHz), è il segnale di clock che regola l'attività di switching degli integratori, del comparatore e del latch; Il secondo segnale di clock è quello che regola la commutazione degli interruttori per realiz- zare la tecnica chopper, pari a metà della frequenza del segnale principale (50KHz); l'ultimo è quello che controlla la commutazione nel CMFB ed è pari a 1/8 della frequenza principale (12.5KHz).
E' necessario dunque un divisore di frequenza: è stato scelto un contatore sincrono modulo 28 (superiore alle nostre esigenze), realizzato con 8 F-F po-
sitive edge-triggered T. Il ip-op T viene realizzato a partire dal F-F S-R, con l'aggiunta di semplice logica. Il F-F S-R di tipo master-slave viene rea- lizzato con NAND CMOS.
Un altro circuito digitale fondamentale per il corretto funzionamento del sistema, è il generatori di clock con fasi non sovrapposte. A partire da un segnale di clock con duty-cycle del 50%, si ottengono 4 segnali di clock alla stessa frequenza, per pilotare nMOS e pMOS, con fasi non sovrapposte. Si ottengono cioè due segnali mai alti contemporaneamente per gli nMOS, in modo che non ci sia un istante in cui conducano due transistor pilotati su fasi opposte; per i pMOS si ottengono due segnali mai bassi contemporaneamen-
Figura 4.16: Schema del generatore di clock con fasi non sovrapposte
te, in modo che pMOS pilotati su fasi opposte non conducano nello stesso istante.
Capitolo 5
Simulazioni e risultati
Per vericare il corretto funzionamento del convertitore sono stati simulati elettricamente tutti i blocchi che compongono il modulatore ∆ − Σ, ripor- tando di seguito i risultati dei blocchi più critici, come l'amplicatore opera- zionale, i due integratori e il comparatore. Inne sono state eettuate delle simulazioni per vericare le prestazioni del modulatore complessivo, sia "full range" che "short range", andandone a ricostruirne la caratteristica e valu- tando la cancellazione dell'oset che si ottiene con la tecnica chopper. Per quanto riguarda l'amplicatore operazionale, sono state vericate le pre- stazioni in termini di guadagno in continua, prodotto guadagno-banda, ru- more riportato in ingresso e consumo di potenza.
Per il comparatore è stata vericata la caratteristica e misurata l'isteresi, eettuando anche delle simulazioni montecarlo per vericare la variabilità delle soglie di isteresi.
Sono state eettuate delle simulazioni in transitorio per i due integratori, vericandone il corretto funzionamento. Inoltre, per quanto riguarda il pri- mo integratore, è stata eettuata un'analisi montecarlo per stimarne l'oset, essendo il blocco più critico.
Per il modulatore, sono state eettuate analisi in transitorio, andando ad applicare tensioni continue e valutando l'uscita del modulatore, ltrata op- portunamente con un CIC del terzo ordine implementato via software con Python. Inoltre sono state testate le prestazioni del modulatore dando in in- gresso una tensione a gradino, aggiungendo un oset del primo e del secondo integratore. E' stata testata inoltre la risposta del convertitore a un tono in banda, confrontando il risultato con quelli teorici ottenuti nel capitolo 3. Inne sono state costruite le caratteristiche del modulatore "full range" e "short range".
5.1 Amplicatore Operazionale
Verichiamo innanzitutto il comportamento in frequenza dell'amplicatore operazionale progettato, da cui possiamo ricavarne informazioni importanti quali il guadagno in continua e il prodotto guadagno-banda. E' stata eseguita un'analisi AC dell'amplicatore operazionale ad anello aperto, collegando tra le uscite una capacità di 1pF, che simula il valore della capacità di carico che avrà l'op-amp nella congurazione a integratore.
La prima simulazione è un'analisi AC da 10mHz a 100MHz, ad anello aperto, con una capacità di valore 1pF tra le uscite e sostituendo il circuito CMFB con dei generatori controllati, in modo da ottenere la VCM F B = Vbp+(Voc−VCM O).
Figura 5.1: Risposta in frequenza dell'amplicatore operazionale
L'amplicatore presenta un guadagno in continua superiore a 82.68dB e un P.G.B. di circa 1.5MHz (superiore a 10 volte la frequenza di clock del cir- cuito switched capacitors in cui verrà inserito). L'amplicatore operazionale risulta stabile, con un margine di fase di circa 90o.
E' interessante vericare la dinamica d'uscita dell'amplicatore operazio- nale, applicando uno swing della tensione dierenziale in ingresso da -100mV a 100mV e valutando, con un'analisi DC, lo swing della tensione dierenziale
in uscita dell'op-amp.
Figura 5.2: Dinamica dierenziale in uscita
L'op-amp satura a dei valori prossimi a 1.6V e -1.6V, dunque presenta una dinamica dierenziale in uscita di 3.6V; il comportamento lineare del- l'amplicatore risulta invece tra -1.1V a 1.1V, dunque una dinamica lineare in uscita di circa 2.2V, come da progetto.
Dall'analisi DC dell'op-amp è possibile ricavare i parametri elettrici esatti dei transistor, per poter calcolare la d.s.p. di potenza di rumore termico e icker:
M1-M2 VT E1 = 57.6mV, gm1= 19.04µV
M3-M4 VT E3 = 146.85mV
M9-M10 VT E9 = 85.99mV
Dalla (4.36) è possibile calcolare: Sth = 2.7510−15V2/Hz, mentre dalla (4.37)
è possibile calcolare: Sf l = 2.3410−11/f V2/Hz. Si può ricavare la frequenza
di corner pari a: fc= 8.526KHz.
Per l'analisi di rumore del circuito, l'op-amp è stato chiuso in retroazione in congurazione unity-gain e successivamente è stata calcolata d.s.p. (in
V /√Hz) di rumore riportata in ingresso, in funzione della frequenza.
Figura 5.3: Andamento della d.s.p. di potenza dell'op-amp riportata in ingresso
Il rumore termico risulta essere -143dB, pari a −70nV/Hz−1 (tale valore
risulta coerente con quello teorico appena calcolato), mentre la frequenza di corner risulta essere di 15KHz (anch'esso in linea con il valore calcolato), dunque il rumore icker è teoricamente eliminabile implementando una tec- nica chopper con frequenza di chopper di 50KHz, come nel nostro progetto. Vediamo adesso la risposta al gradino dell'amplicatore operazionale ad anello aperto, con un carico di 1pF. In questa analisi in transitorio è stato utilizzato anche il circuito CMFB reale, dunque è possibile apprezzare quan- to tempo impiega per andare a regime il modo comune in uscita, e se avviene precisamente la correzione del modo comune. Inoltre, con le capacità del CMFB che commutano sulle uscite, si ha una riduzione del guadagno rispet- to al valore calcolato nella risposta in frequenza. Tramite la simulazione è possibile vericare il comportamento.
Dalla simulazione del transitorio della risposta al gradino dell'op-amp ad anello aperto, risulta che il modo comune in uscita si stabilizza al valore di progetto Vdd/2 dopo circa 3ms, che risulta essere un tempo più che ragio-
Figura 5.4: Risposta al gradino dell'op-amp ad anello aperto
valore di tensione corrispondente al gradino in ingresso di 1mV, dunque si ha n guadagno di 1027, pari a 60dB. La specica sul guadagno dell'ampli- catore, come detto nel capitolo 3, è dettata dalla specica sulla dead zone. In particolare per avere una dead zone inferiore al LSB, bisognerà avere:
VF S
A2 < LSB, cioè si deve avere A <
√
s16 = 256. In questo caso il valore
dell'amplicazione A è ben superiore alle speciche richieste.
Dall'analisi DC è stato possibile ricavare la potenza media dissipata: con una corrente media di 8.344µA e una tensione di alimentazione di 1.8V, si ha una potenza dissipata di 15.02µW . Calcolando la corrente media durante il transitorio, applicando il gradino in ingresso, è stata calcolata anche la potenza dinamica dissipata, pari a: 15.06µW .
5.2 Integratori
Sono stati testati entrambi gli integratori, andando ad applicare ai due in- gressi delle tensioni costanti, per vericare il corretto guadagano dei due. Inoltre, per il primo integratore è stata eettuata un'analisi montecarlo, per vericare il comportamento statistico del singolo blocco rispetto alla reiezio- ne dell'oset e alla corretta integrazione.
(a) Transitorio del primo integra-
tore (b) Zoom
Figura 5.5: Primo integratore
Per entrambi gli integratori, si è aspettato il tempo dell'andata a regime del modo comune del circuito prima di applicare gli ingressi, ovvero delle tensioni a gradino, in modo da valutare la correttezza dell'integrazione. Le tensioni dierenziali in ingresso hanno un modo comune pari a 900mV , e un modo dierenziale rispettivamente per il primo ingresso di 100mV e per il secondo integratore di 300mV.
Il salto della tensione dierenziale in uscita risulta pari a: 765.644mV − 752.041mV = 13.603mV, che è molto prossimo all'eettivo salto di tensione che si deve avere con ingressi: VA = 100mV (campionata al termine della
fase 1), e VB = 0mV (campionata al termine della fase 2) e un coeciente
per il primo integratore pari a 0.136.
Sono state eettuate anche delle analisi montecarlo del primo integratore senza modulazione chopper, in modo da valtare l'entità e la variabilità del- l'oset in ingresso. Per motivi computazionali, è stato eettuato un numero ridotto di analisi dal quale è comunque apparso come il valore di oset fosse inferiore a 5mV.
Per il secondo integratore le condizioni di stimolo sono analoghe a quelle applicate al primo integratore. Dobbiamo vericare adesso che la dieren- za di tensione dierenziale in uscita tra due fasi successive di clock venga correttamente aggiornata in base al valore dei due ingressi all'istante di cam- pionamento, secondo coecienti diversi per i due segnali.
Nella condizione in cui stiamo testando il secondo integratore, si ha il primo ingresso VA= 100mV e il secondo ingresso VB = 300mV. Con i coef-
(a) Transitorio del secondo integratore (b) Zoom
Figura 5.6: Secondo integratore
tensione dierenziale in uscita pari a −7.6mV , confermato dal risultato della simulazione.
5.3 Comparatore
E' stato vericato il comportamento nominale del comparatore, applicando una rampa in ingresso per valutare il valore delle soglie di isteresi (la rampa è stata fatta applicata con una pendenza molto ridotta, per poter apprezzare con precisione il valore delle soglie). Dalla simulazione risultano delle soglie di −6.5µV e 6.5µV , con un'isteresi complessiva di 13µV . Dal risultato della simulazione è inoltre evidente il mezzo ciclo di clock di ritardo introdotto dal comparatore. Sono state eettuate anche delle simulazioni montecarlo per vericare la variabilità del comparatore, osservando un range di variabilità della soglia d'isteresi no a 5mV, che non va inciare le prestazioni del nostro convertitori (come osservato in [2]).
5.4 Modulatore
Per la verica delle prestazioni del modulatore, sono state eettuate diver- se simulazioni, che prevedono l'implementazione di un sistema di test più complesso. I risultati delle simulazioni elettriche eettuate sul modulatore in ambiente Cadence, sono state estratte mediante un le ASCII contenente il valore delle tensioni analogiche in uscita dal modulatore. Tali le ASCII sono state elaborate in ambiente Python sulla stessa workstation, andando
Figura 5.7: Soglie di isteresi del comparatore
a campionare il segnale in uscita alla frequenza fs e valutandone il valore
digitale 0 o 1. Una volta ottenuta la bit stream, è stata elaborata in base al tipo di test in esame. Per calcolare la caratteristica del convertitore o la risposta a un gradino di tensione d'ingresso, è stata ltrata con un ltro CIC del terzo ordine sintetizzato con Python. Per analizzare lo spettro e il rapporto segnale-rumore, invece, sono state utilizzate le funzioni messe a disposizione dal "deltasigma toolbox".
Verichiamo innanzitutto l'ecacia della tecnica di cancellazione dell'o- set implementata per l'amplicatore operazionale del primo integratore. L'a- nalisi dell'oset è stata eseguita aggiungendo un generatore ideale in ingresso all'op-amp, anziché eettuando l'analisi montecarlo, in quanto le risorse com- putazionali richieste per eseguire tale simulazione in transitorio dell'intero modulatore sarebbe stata troppo onerosa. Avendo vericato precedentemen- te che l'oset in ingresso al primo integratore è inferiore a 5mV, abbiamo inserito un generatore in ingresso di 10mV sovrastimando l'oset dell'op- amp, per vericare vericare l'ecacia della tecnica di cancellazione dell'o- set implementata per il primo integratore, e invece il contributo del secondo integratore a cui non è applicata la tecnica chopper.
Sono state messe a confronto tre situazioni signicative: in tutti e tre i casi abbiamo applicato un gradino di tensione dierenziale in ingresso di 10mV a partire da tensione nulla; nel primo caso non abbiamo inserito nessun oset al primo integratore; nel secondo abbiamo inserito l'oset di 10mV senza ef- fettuare la tecnica chopper; nel terzo caso abbiamo inserito lo stesso oset,
Figura 5.8: Confronto tra le risposte del modulatore con e senza oset e la cancellazione dell'oset
eettuando però la tecnica di cancellazione. Il risultato della simulazione è molto soddisfacente, in quanto dopo la cancellazione si ottiene un oset residuo inferiore a 1LSB ( ' 54µV ), dunque con una reiezione dell'oset di circa un fattore 200.
Il test successivo è stato eettuato applicando in ingresso al modulatore una sinusoide di ampiezza 900mV di frequenza 50Hz, elaborando la bit stream in uscita con le funzioni fornite dal tool Python, con un'analisi analoga a quel- la eettuata per modulatore teorico, in modo da svolgere un confronto equo tra i due.
Dall'analisi spettrale si nota come l'andamento reale del modulatore rispec- chi quello del modulatore ideale sintetizzato col toolbox python, ottenendo inoltre un SNR molto prossimo a quello ideale, che garantisce i 16 bit di risoluzione eettiva desiderati.
Il fulcro della nostra analisi però riguarda il comportamento in continua del nostro modulatore, date le caratteristiche dei segnali d'ingresso tipici
Figura 5.9: D.S.P. della bit stream in uscita dal modulatore, con ingresso un tono a frequenza 50Hz e ampiezza 900mV
(a) Caratteristica del modulatore full-range (b) Caratteristica del modulatore short- range
Figura 5.10: Caratteristiche dei modulatori con diverso range di tensioni in ingresso
della nostra applicazione. Sono state dunque ricostruite le caratteristiche di ingresso-uscita del modulatore (full-range e short-range), andando ad appli- care in ingresso dei segnali dierenziali di valori tali da coprissero l'intero range ammesso, ltrando successivamente la bit stream del modulatore col ltro CIC del terzo ordine implementato su python.
Data l'elevata complessità computazionale delle simulazioni dell'intero modulatore, non è stato possibile simulare un numero di valori in ingres- so sucienti da valutare gli errori di non linearità del nostro convertitore. Comunque le caratteristiche ottenute per le due tipologie di convertitori di- mostrano un comportamento perfettamente lineare sull'intero range in in-
gresso, privo di errore di gain e oset nominale. Dalle simulazioni eettuate possiamo concludere che il convertitore progettato rispetta perfettamente le speciche pressate, sia in termini di risoluzione eettiva che di cancellazione dell'oset.
Conclusioni e sviluppi futuri
Dopo aver esplorato lo spazio di progetto e valutato la fattibilità di realiz- zare un convertitore AD in grado di leggere sia l'uscita dell'amplicatore da strumentazione con una risoluzione eettiva di 16 bit, sia direttamente l'u- scita del sensore (con una risoluzione inferiore), è stata scelta l'architettura di un convertitore ∆ − Σ. In base alle speciche dettate dalla particolare ap- plicazione, è stata scelta un'architettura del modulatore del secondo ordine, single-bit, tempo-discreto.
Mediante l'ausilio del tool python, è stato simulato il comportamento ad al- to livello del modulatore e sono stati calcolati i coecienti della particolare topologia scelta. Successivamente è stata svolta la progettazione transistor- level di ogni singolo blocco del modulatore, riservando particolare attenzione alle prestazioni in termini di rumore a bassa frequenza e di oset e imple- mentando una tecnica di cancellazione dell'oset.
Dopo le simulazioni necessarie per vericare il corretto funzionamento e il rispetto delle speciche di ogni singolo blocco, è stato vericato il comporta- mento del convertitore. I dati digitalizzati in uscita dal modulatore vengono elaborati mediante un ltro passa-basso decimatore CIC del terzo ordine, im- plementato a livello software con python. La sintesi con un linguaggio HDL del ltro digitale non è stata fonte di approfondimento di questo lavoro di tesi, preferendo concentrarsi sull'ottimizzazione delle prestazioni del modu- latore; inoltre il ltro digitale non deve essere necessariamente implementato sul chip, ma può essere realizzato a livello software su un microprocessore che acquisisce la bit stream in uscita dal modulatore.
Il convertitore progettato raggiunge la risoluzione eettiva desiderata di 16 bit per la lettura dell'uscita dell'amplicatore da strumentazione, mentre rag- giunge una risoluzione eettiva di 13 bit per la lettura diretta del sensore. La frequenza di campionamento è di 100KHz, il fattore di oversampling è di 256, in modo che il convertitore sia in grado di trattare segnali in ingresso con banda no a 200Hz.
Un importante sviluppo del progetto consiste nel realizzare un convertitore ∆ − Σ low-voltage o ultra-low-voltage, per rendere maggiormente appetibile
il sistema nelle applicazioni di lettura di sensori in sistemi portatili alimentati a batteria. Se il progetto prevede l'integrazione del ltro digitale sul chip, è necessaria una descrizione in linguaggio HDL del ltro CIC, in modo da sintetizzarlo col processo standard cell fornito dalla fonderia. Come è noto, un sistema completo per la lettura di sensori integrati necessita dell'ampli- catore da strumentazione e del ltro anti-alias, che dovranno dunque essere integrati insieme al convertitore. Dopo il design degli schematici di ogni bloc- co del modulatore, è necessario il trasferimento su silicio attraverso la fase di layout. Essendo un progetto full-custom mixed-signal, è necessario porre particolare attenzione nelle scelte di layout.
Una volta ricevuti i chip fabbricati dalla fonderia, dovranno essere eseguite le opportune misurazioni per vericare il rispetto delle speciche pressate e per testare la digitalizzazione dell'uscita di un sensore reale.
Appendice A
Guida al "python-deltasigma"
toolbox
A.1 Breve introduzione al Python
Python è un linguaggio di programmazione dinamico orientato agli oggetti, molto utilizzato per lo scripting, calcolo numerico e applicazioni distribuite. Python si presta fortemente all'integrazione con altri linguaggi e program- mi ed è fornito di una estesa libreria standard. Altra caratteristica molto importante, è che Python è un software free, liberamente modicabile e di- stribuibile. Si contraddistingue per la semplicità e la essibilità, nonché per la portabilità, essendo un linguaggio pseudocompilato.
Le caratteristiche più riconoscibili sono le variabili non tipizzate e l'uso del- l'indentazione per la denizione dei blocchi, nonché la presenza di un ricco assortimento di funzioni di base e librerie standard. Il controllo dei tipi è comunque presente ed eseguito a runtime (dynamic typing).
Viene spesso classicato come linguaggio di scripting, ma la sua essibilità permette di scrivere software modulare per svariate applicazioni: dalle ap- plicazioni web, alla programmazioni di interfacce grache, alla computazione matematica. La libreria standard è compatibile con tutte le piattaforme e questo aumenta la portabilità del software prodotto.
Nonostante venga considerato un linguaggio interpretato, in realtà il codice sorgente viene prima pre-compilato in byte-code e successivamente convertito in linguaggio macchina. Lo stesso bytecode viene spessp riutilizzato dopo la prima esecuzione del programma, evitando di dover interpretare nuovamente il sorgente ed incrementando le prestazioni; inoltre è possibile distribuire pro- grammi Python direttamente in bytecode, saltando la fase di interpretazione da parte dell'utilizzatore nale. Col linguaggio Python è inoltre possibile
inserire codice direttamente da terminale e ottenere immediatamente il risul- tato.