MATLAB Codes for Frequency-Domain Min-Max Optimization of Noise-Shaping Delta-Sigma Modulators

Introduction

This page gives MATLAB codes for our paper:

M. Nagahara and Y. Yamamoto,
Frequency-Domain Min-Max Optimization of Noise-Shaping Delta-Sigma Modulators,
IEEE Transactions on Signal Processing, 2012. (Download PDF)

See also our related paper:

M. Nagahara,
Min-max design of FIR digital filters by semidefinite programming,
Applications of Digital Signal Processing, pp. 193-210, InTech, Nov. 2011. (Download PDF)

MATLAB Codes

Frequency-Domain Optimization of Delta-Sigma Modulators (main function1 )
NTF_MINMAX.m
Multiband Delta-Sigma Modulators (main function 2)
NTF_MINMAX_MB.m

Note that to execute the codes, Control System Toolbox, YALMIP, and SeDuMi are needed.
YALMIP and SeDuMi are free softwares which can be downloaded via
YALMIP
SeDuMi

We have made sure that the codes run with no errors on MATLAB version 7.8.
On older versions of MATLAB, the codes might have unexpected errors.

Usage

[ntf,R]=NTF_MINMAX(order,OSR,Hinf,f0,zf)
Arguments
order:
The order of NTF which is an FIR filter. The default value is order=32.
OSR:
The over sampling ratio. The default value is OSR=32.
Hinf:
The maximum out-of-band gain of NTF. The default value is Hinf=1.5.
f0:
The normalized center frequency of the modulator. f0 must be in [0,1/2). The center frequency will be 2*pi*f0 (rad/sec). The default value is f0=0.
zf:
The flag for assigning NTF zeros. If zf is 0, then the design is executed without zero assignment. Otherwise, zeros of the NTF to be optimized is assigned at the center frequency. The default value is zf=0.
Outputs
ntf:
The optimized NTF given as a zpk object.
R:
FIR filter coefficients of the optimized loop filter R(z).

[ntf,R]=NTF_MINMAX_MB(order,OSR,Hinf,f,zf)
Arguments
order:
The order of NTF which is an FIR filter. The default value is order=32.
OSR:
The over sampling ratio. The default value is OSR=32.
Hinf:
The maximum out-of-band gain of NTF. The default value is Hinf=1.5.
f:
The vector of normalized center frequencies of the modulator. The elements of f must be in [0,1/2). The length of f must be less than 4. The center frequencies will be 2*pi*f(i) (rad/sec). The default vector is f=[0,1/4].
zf:
The flag for assigning NTF zeros. If zf is 0, then the design is executed without zero assignment. Otherwise, zeros of the NTF to be optimized is assigned at the center frequencies. The default value is zf=0.
Outputs
ntf:
The optimized NTF given as a zpk object.
R:
FIR filter coefficients of the optimized loop filter R(z).

Examples

Cascaded lowpass modulator
m=2; % The number of cascades
order=32;
OSR=32;
Hinf=1.5^(1/m);
f0=0;
zf=0;
[ntfm,R]=NTF_MINMAX(order,OSR,Hinf,f0,zf);
ntf=ntfm^m;
figure;bode(ntf); %Bode plot of NTF


Bandpass modulator
order=32;
OSR=16;
Hinf=1.5;
f0=1/4;
zf=1;
[ntf,R]=NTF_MINMAX(order,OSR,Hinf,f0,zf);
figure;bode(ntf); %Bode plot of NTF


Multiband modulator
order=32;
OSR=64;
Hinf=1.5;
f=[1/8,1/4,3/8];
zf=1;
[ntf,R]=NTF_MINMAX(order,OSR,Hinf,f,zf);
figure;bode(ntf); %Bode plot of NTF