
##
##  ***************************************************************
##  ******      Sigma-delta modulators, 1st to 4th order     ******
##  ***************************************************************
##

#define ANALYZE_ERRORS  FALSE
#define SIGNAL          SIN

title       "Sigma Delta 1st, 2nd, 3rd and 4th order modulators"

header      <napa.hdr>
header      <toolbox.hdr>

directive   WINDOW   ROSENFELD

fs          1.0e6

ivar npts   POWEROF2(18)

dvar vref   1.0

dvar vrefp  vref
dvar vrefm -vref


#ifdef SIGNAL   SIN

dvar phase  rand_uniform(0.0, _2pi_)

dvar dbmin   -90.0
dvar dbmax   -10.0

dvar ampldb  LINSWEEP(TOOL_INDEX, dbmin, dbmax, 9)   &update   &export
dvar ampl    DB2LIN(ampldb, 1.0)                     &update

node in      sine   0.0 ampl 1234.5 phase

#else

dvar ampldb -20.0
dvar ampl    DB2LIN(ampldb, 1.0)


node in      algebra   ampl

#endif


node out1 cell sd1 <ASD/m1.net>      "./_m1.dat"     in err1 vrefp vrefm
node out2 cell sd2 <ASD/m2.net>      "./_m2.dat"     in err2 vrefp vrefm
node out3 cell sd3 <ASD/m11.net>     "./_m11.dat"    in err3 vrefp vrefm
node out4 cell sd4 <ASD/m21_va.net>  "./_m21_va.dat" in err4 vrefp vrefm
node out5 cell sd5 <ASD/m22_va.net>  "./_m22_va.dat" in err5 vrefp vrefm

#ifdef ANALYZE_ERRORS FALSE

##
## ANALYZE SIGNALS!
##
tool fft "sd1.out" out1 1.0 npts
tool fft "sd2.out" out2 1.0 npts
tool fft "sd3.out" out3 1.0 npts
tool fft "sd4.out" out4 1.0 npts
tool fft "sd5.out" out5 1.0 npts

#else

##
## ANALYZE ERRORS!
##
tool fft "sd1.out" err1 1.0 npts
tool fft "sd2.out" err2 1.0 npts
tool fft "sd3.out" err3 1.0 npts
tool fft "sd4.out" err4 1.0 npts
tool fft "sd5.out" err5 1.0 npts

#endif

terminate  ampldb > dbmax
