• Non ci sono risultati.

Il python-deltasigma è un pacchetto Python open-source per sintetizzare, simulare, scalare e mappare le più comuni topologie di modulatore ∆ − Σ implementabili. Il toolbox ha l'obiettivo di fornire un porting 1 : 1 su Py- thon del "MATLAB Delta Sigma Toolbox" di Richard Schreier, considerato lo strumento standard de facto per alto livello di simulazione di convertitori Delta Sigma. Per utilizzare "python-deltasigma" è richiesto almeno Python 2, oltre alle librerie NumPy, SciPy e matplotlib.

Di seguito è riportata una rapida guida al toolbox ([12]), in cui vengono spie- gate le funzioni essenziali per la sintesi e la simulazione ad alto livello di un modulatore ∆ − Σ.

synthesizeNTF:

Sintassi: ntf = synthesizeNTF(order=3,OSR=64,opt=0, H_inf=1.5,f0=0) La funzione sintetizza una noise transfer function (NTF) per un modulatore delta-sigma.

Argomenti:

order: Ordine della NTF (deve essere pari per modulatori passa-banda). OSR: Fattore di oversampling. OSR deve essere specicato solo quando viene

richiesta l'ottimizzazione degli zeri.

opt: Flag utilizzato per eseguire l'ottimizzazione degli zeri della NTF. opt=0 posiziona tutti gli zeri della NF a centrobanda (DC per modulatori passabasso). opt=1 ottimizza gli zeri della NTF (per modulatori di ordine pari, opt=2 inserisce due zeri a centro-banda e ottimizza gli altri).

H_inf: Massimo guadagno fuori banda della NTF. E' richiesto H_inf<2 per garantire la stabilità del modulatore con quantizzatore binario. Ri- ducendo H_inf aumenta la probabilità di avere un modulatore stabi- le, ma riduce l'ampiezza dell'attenuazione introdotta dalla NTF e di conseguenza la risoluzione teorica del modulatore.

f0: Frequenza centrale del modulatore. f0 diverso da 0 indica un modu- latore passa-banda (ad esempio f0=0.25 indica una frequenza centrale pari a fs/4).

Output:

ntf: Noise Transfer Function del modulatore, data come un oggetto LTI (Linear-Time Invariant) nella forma poli-zeri.

simulateDSM:

Sintassi: [v,xn,xmax,y] = simulateDSM(u, ABCD, ntf,nlev=2,x0=0) La funzione simula un modulatore delta-sigma modulator con un dato input. Argomenti:

u: Sequenza in ingresso al modulatore, fornita come un vettore colonna m×N (con m numero di ingressi, generalemente 1). Il full-scale coincide con un input di ampiezza nlev-1.

ABCD: Rappresentazione in spazio di stato (descrizione di un sistema dinami- co in cui si fa particolare riferimento alle variabili di stato) del ltro d'anello del modulatore.

ntf: Noise Transfer Function del modulatore, nella forma poli-zeri. La Signal Transfer Function del modulatore viene considerata di valore unitario.

nLev: Numero di livelli del quantizzatore. x0: Stato iniziale del modulatore. Output:

v: I campioni delle uscite del modulatore, ciascuno corrispondente a un campione dell'ingresso.

xn: Gli stati interni del modulatore, uno per ogni campione dell'ingresso, dati come matrice.

xmax: Valore massimo assoluto di ogni variabile di statole.

y: I campioni dell'ingresso del quantizzatore, uno per ogni campione del- l'ingresso del modulatore.

realizeNTF:

Sintassi: [a,g,b,c] = realizeNTF(ntf,form='CRFB',stf=1)

La funzione converte una Noise Transfer Function (NTF) in un set di coe- cienti specici per la particolare topologia del modulatore.

Argomenti:

ntf: NTF del modulatore, nella forma poli-zeri (cioè un oggetto zpk). form: Stringa che specica la topologia del modulatore. Può essere una tra:

CRFB (Cascade-of-resonators feedback); CRFF (Cascade-of-resonators feedforward), CIFB (Cascade-of-integrators feedback); CIFF (Cascade- of-integrators feedforward).

stf: STF del modulatore, data come oggetto zpk. Output:

a: Coecienti di feedback/feedforward da/verso il quantizzatore ( 1 × n). g: Coecienti dei risuonatori (1 × bn/2c ).

b: Coecienti di feed-in dall'ingresso del modulatore a ogni integratore ( 1 × n + 1).

c: Coecienti tra gli stadi integratori ( 1 × n). In un modulatore non scalato, c è unitario.

stuABCD:

Sintassi: ABCD = stuABCD(a,g,b,c,form='CRFB')

La funziona calcola la matrice ABCD a partire dai coecienti specici per la particolare topologia del modulatore.

Argomenti:

a: Coecienti di feedback/feedforward da/verso il quantizzatore. g: Coecienti dei risuonatori.

b: Coecienti di feed-in dall'ingresso del modulatore a ogni integratore. c: Coecienti tra gli stadi integratori.

form: Stringa che specica la topologia del modulatore. Può essere una tra: CRFB (Cascade-of-resonators feedback); CRFF (Cascade-of-resonators feedforward), CIFB (Cascade-of-integrators feedback); CIFF (Cascade- of-integrators feedforward).

Output:

ABCD: Rappresentazione in spazio di stato del ltro d'anello del modulatore. mapABCD:

Sintassi: [a,g,b,c] = mapABCD(ABCD,form='CRFB')

La funzione calcola i i coecienti specici per la particolare topologia del modulatore a partire dalla rappresentazione ABCD.

Argomenti:

ABCD: Rappresentazione in spazio di stato del ltro d'anello del modulatore. form: Stringa che specica la topologia del modulatore. Può essere una tra:

CRFB (Cascade-of-resonators feedback); CRFF (Cascade-of-resonators feedforward), CIFB (Cascade-of-integrators feedback); CIFF (Cascade- of-integrators feedforward).

Output:

a: Coecienti di feedback/feedforward da/verso il quantizzatore. g: Coecienti dei risuonatori.

b: Coecienti di feed-in dall'ingresso del modulatore a ogni integratore. c: Coecienti tra gli stadi integratori.

scaleABCD:

Sintassi: [ABCDs,umax]=scaleABCD(ABCD, nlev=2, f=0, xlim=1, ymax=nlev+5, umax, N=1e5)

La funzione scala la matrice ABCD in moto che i valori massimi delle varia- bili di stato siano inferiori a un limite specicato. Inoltre calcola il massimo ingresso stabile del modulatore.

Argomenti:

ABCD: Rappresentazione in spazio di stato del ltro d'anello del modulatore. nLev: Numero di livelli del quantizzatore.

f: Frequenza normalizzata della sinusoide di test.

xLim: Limite sulle variabili di stati. Può essere fornito come vettore.

ymax: La soglia per giudicare la stabilità del modulatore. Se l'ingresso del quantizzatore supera ymax, il modulatore viene considerato instabile. Output:

ABCDs: Rappresentazione scalata in spazio di stato del ltro d'anello del mo- dulatore.

umax: Massimo ingresso stabile. Sinusoidi in ingresso con ampiezza inferiore a questo valore non dovrebbero portare le variabili di stato del modu- latore a superare i limiti specicati.

Bibliograa

[1] Atmel. AVR127: Understanding ADC Parameters. 2016.

[2] Bruce A. Wooley Bernhard E. Boser. The design of sigma-delta modu- lation analog-to-digital converters. IEEE Journal of Solid State Circuit, 1988.

[3] Paolo Bruschi. Dispense del corso PSM - Modulo microelettronica analogica.

[4] Paolo Bruschi. Notes on Mixed Signal.

[5] Hsin-Liang Chen, Po-Sheng Chen, and Jen-Shiun Chiang. A low- oset low-noise sigma-delta modulator with pseudorandom chopper- stabilization technique. IEEE Sensors Journal, 2009.

[6] Vladimir Cravero. A second order Delta-Sigma converter for quasi-DC signal. 2014.

[7] Bruno Neri Giovanni Basso. Appunti di Strumentazione Elettronica. [8] Eugene B. Hogenauer. An economical class of digital lters for deci-

mation and interpolation. IEEE Transactions on acoustics, speech, and signal processing, 1981.

[9] Michele Dei Paolo Bruschi and Massimo Piotto. A low-power 2-d wind sensor based on integrated ow meters. IEEE Sensors Journal, 2009. [10] Massimo Piotto, Michele Dei, Federico Butti, Giovanni Pennelli, and

Paolo Bruschi. Smart ow sensor with on-chip cmos interface performing oset and pressure eect compensation. IEEE SENSORS JOURNAL, 2012.

[11] Gabor C. Temes Richard Schreirer. Understanding Delta-Sigma Data Converters.

[12] Richard Schreier. The Delta-Sigma Toolbox Version 7.3. 2009.

[13] Rudy van de Plassche. CMOS integrated analog-to-digital and digital- to-analog converters.

Documenti correlati