• Non ci sono risultati.

Riassumiamo dunque le scelte architetturali eettuate: modulatore del se- condo ordine single bit, con architettura fully-dierential implementata con circuiti switched-capacitors, OSR = 256 e frequenza di campionamento di 100KHz; la topologia del modulatore è la CIFB. Vedremo adesso un esempio di sintesi ad alto livello del modulatore, nonché la simulazione delle presta- zioni teoriche, mediante il supporto del tool "sigma delta toolbox".

Per calcolare la NTF del modulatore, eettuando l'ottimizzazione degli zeri per incrementare il rapporto segnale-rumore in banda, è suciente utilizza- re la funzione: "synthesizeNTF(order=2, OSR=256, opt=1)". L'espressione della NTF è la seguente:

H(z) = z

2− 2z + 1

z2− 1.225z + 0.4415 (3.1)

E' possibile gracare l'ampiezza della NTF (in dB) in funzione della frequen- za. L'asse delle ascisse è normalizzato secondo la frequenza di campionamen- to, dunque la banda del segnale in cui ci interessa valutare la funzione di trasferimento risulta essere: Bs

fs =

1

2·OSR ∼= 2 · 10 −3.

Il tool fornisce la possibilità di calcolare il SQNR del nostro modulatore: la funzione "rmsGain(H,f1=0,f2=0.5/OSR)" calcola il valore rms della NTF

Figura 3.6: Rappresentazione nel piano complesso dei poli e degli zeri della NTF. Diagramma di Bode dell'ampiezza della NTF.

valutata nella banda [f1, f2], cioè quella del segnale utile. Per calcolare il va- lore di SQNR è suciente ricordare che in un convertitore con oversampling: SnOV R = ∆

2

12·OSR = 1

3·OSR, in quanto in un convertitore single bit con segnali

bipolari come quello considerato dal tool, si ha: ∆ = 2. Dunque si calcola: SQN R = V 2 F S OSR 3 H 2 rms ' 102dB (3.2)

Tale rapporto segnale-rumore (valutando solo quello di quantizzazione) cor- risponde a una risoluzione teorica di 17 bit di risoluzione, dunque abbiamo un certo margine rispetto alla risoluzione desiderata.

Un'altra funzione fornita dal tool è quella di poter simulare il comportamento nel dominio del tempo del modulatore teorico. Ad esempio, possiamo appli- care in ingresso al modulatore un tono nella banda del segnale e tramite la funzione "simulateDSM()" è possibile ottenere la bit stream del modulatore con uscita bipolare [1,-1]. E' possibile gracare l'andamento temporale della bit stream insieme al tono in ingresso.

E' possibile inoltre analizzare lo spettro dell'uscita del modulatore, per con- frontarlo con la NTF ideale e calcolare il SQNR del modulatore simulato. Il tono in ingresso ha una frequenza normalizzata rispetto alla frequenza di campionamento pari a 0.0005, che corrisponde a una frequenza reale di 50Hz; l'ampiezza è pari a metà del fondo scala. Lo spettro della bit stream in uscita viene calcolato mediante FFT, utilizzando la nestra di Hann, scel- ta opportunamente (sia la funzione che realizza la nestratura di Hann, sia

la funzione che realizza l'algoritmo della FFT, sono presenti nella libreria fornita dal tool).

Il calcolo del rapporto segnale-rumore è facilitato dalla funzione "calcula- teSNR(hwt=spectrum[0:fB+1],f=ftest)", dove "spectrum" è pari alla FFT della bit stream in uscita dal modulatore, opportunamente elaborata con la nestra di Hann; valutata nella banda del segnale per calcolare la potenza del rumore di quantizzazione; il segnale è frequenza ftest.

Figura 3.7: Simulazione temporale del modulatore con un tono in ingresso. Dia- gramma di Bode dell'ampiezza della NTF ideale e dello spettro dell'uscita del modulatore.

Il tool permette inoltre di sintetizzare un ltro decimatore e di poterne simulare il comportamento, nonché utilizzarlo per elaborare la bit stream in uscita dal modulatore. L'architettura del ltro suggerita dai creatori del tool è piuttosto complessa; si è preferito descrivere l'algoritmo di un ltro CIC con linguaggio python per elaborare i risultati ottenuti dalle simulazioni del sistema completo.

Inne, uno degli strumenti più importanti forniti dal tool è il calcolo dei coecienti che contraddistinguono la topologia scelta per il modulatore. Ab- biamo già elencato le motivazioni che hanno portato alla scelta della struttura CIFB. Adesso è necessario calcolare i coecienti che permettono di ottenere la NTF sopra riportata. Il nostro progetto prevede di progettare un converti- tore ∆−Σ in grado di leggere sia l'uscita dell'amplicatore da strumentazione in cascata al sensore, che direttamente il sensore. La lettura diretta dal sen- sore è possibile riducendo la tensione di riferimento del convertitore: questo

si traduce nell'avere coecienti diversi in base alle due applicazioni, come vedremo più avanti. Vediamo innanzitutto la procedura per calcolare i coef- cienti del modulatore "full range" per la lettura dell'uscita dell' In-Amp, cioè con tensione di riferimento pari alla tensione di alimentazione.

Tramite la funzione "realizeNTF(ntf = H, form='CIFB')" è possibile otte-

Figura 3.8: Schema a blocchi di un modulatore del secondo ordine CIFB

nere la rappresentazione secondo i coecienti [a,g,b,c] della topologia scelta. Tali valori non sono utilizzabili in un progetto realistico, in quanto gli am- plicatori reali non hanno una dinamica d'uscita in grado di raggiungere la tensione di fondoscala, pari generalmente alla tensione di alimentazione del sistema. Inoltre, con tale ottimizzazione dei coecienti, entrambi gli integra- tori sfruttano l'intera dinamica d'uscita, in modo da ottenere dei vantaggi in termini di risoluzione.

Il tool prevede delle opportune per scalare tali coecienti, in modo da otte- nere tensioni in uscita dagli integratori appartenenti alla corretta dinamica del circuito. La procedura da seguire è la seguente: noti i coecienti [a,g,b,c] non scalati, è necessario passare alla rappresentazione ABCD del modula- tore, mediante la funzione "stuABCD(a,g,b,c,form='CIFB')". Tramite la funzione "scaleABCD(ABCD,nlev=2,xlim=0.65)" si ottiene la rappresenta- zione ABCD_s del modulatore, avendo imposto una limitazione sulle tensio- ni. Successivamente la funzione "ds.mapABCD(ABCD_s, form='CIFB')" permette di tornare alla rappresentazione con i coecienti [a,g,b,c] della to- pologia CIFB. I coecienti b2e b3vengono posti uguali a 0: si può dimostrare

che tale scelta permette di avere una STF perfettamente piatta nella banda del segnale.

Il valore di xLim per limitare le variabili di stato, cioè le tensioni in uscita dagli integratori, è dettato dalla dinamica d'uscita dell'amplicatore opera- zionale impiegato. Nota la topologia scelta per l'amplicatore operazionale, analizzata nel dettaglio nel prossimo capitolo, si ottiene: xLim = 0.65. I valori dei coecienti scalati per il modulatore "full range" sono i seguenti:

a = [0.13656583, 0.08021222]

g = [0.00030613]

b = [0.13656583, 0., 0.]

c = [0.16397796, 9.66029575]

Osservando il valore numerico dei coecienti, possiamo eettuare alcune con- siderazioni. Avere a1 = b1 è un notevole vantaggio nella progettazione del

primo integratore; g1, dato il valore ridotto rispetto agli altri coecienti, può

essere trascurato commettendo un errore praticamente nullo; c2 può essere

posto arbitrariamente a 1, in quanto in cascata è presente il quantizzatore a due livelli, che distingue soltanto il segno del segnale al suo ingresso.

Per quanto riguarda il progetto del modulatore "small range" per la let- tura diretta del sensore, il processo di sintesi è esattamente lo stesso, avendo mantenuto la stessa topologia circuitale. L'unica variazione riguarda il valore di xLim, in quanto in questo caso la tensione di fondo-scala è una frazione del- la tensione di alimentazione: risulta dunque conveniente utilizzare un xLim superiore a 1, per sfruttare al massimo la dinamica d'uscita degli ampli- catori operazionali. Con valutazioni analoghe a quelle che hanno portato a scegliere il valore di xLim per il modulatore "full range", si è deciso di optare per: xLim = 5.85.

I valori dei coecienti scalati per il modulatore "small range" sono i seguenti: a = [1.22909251, 0.72191001]

g = [0.00030613]

b = [1.22909251, 0., 0.]

c = [0.16397796, 1.07336619]

Documenti correlati