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.