pydsm.NTFdesign.delsig.ntf_clans

pydsm.NTFdesign.delsig.ntf_clans(order=4, osr=64, nq=5, rmax=0.95, opt=0, **options)

Synthesize the NTF for a ΔΣM w/ multibit quantizer by the CLANS method.

This function is based on the CLANS method (Closed-Loop Analysis of Noise Shaping Coders) by J. G. Kenney and L. R. Carley, described in ‘Design of Multibit Noise Shaping Data Converters’ Analog Integrated Circuits and Signal Processing Vol. 3 pp 259-272 (1993).

The method is only suitable for low pass modulators.

Parameters:

order : int, optional

the order of the modulator, defaults to 4

osr : float, optional

the oversamping ratio (based on the actual signal bandwidth). Defaults to 64

nq : int, optional

the number of quantization levels, defaults to 5

rmax : real, optional

the maximum radius of the NTF poles

opt : int, optional

opt parameter passed to synthesizeNTF which is used to compute the NTF zero location and the initial pole location for the optimizer

Returns:

ntf : tuple

noise transfer function in zpk form.

Other Parameters:
 

show_progress : bool, optional

provide extended output, default is False and can be updated by changing the function default_options attribute.

slsqp_opts : dictionary, optional

Parameters passed to the fmin_slsqp optimizer. Allowed options are:

maxiters

Maximum number of iterations (defaults to 100)

ftol

Precision goal for the value of f in the stopping criterion (defaults to 1e-6)

eps

Step size used for numerical approximation of the jacobian (defaults to 1.4901161193847656e-08)

Do not use other options since they could break the minimizer in unexpected ways. Defaults can be set by changing the function default_options attribute.

Raises:

ValueError

‘Error. f0 must be less than 0.5’ if f0 is out of range

‘Order must be even for a bandpass modulator.’ if the order is incompatible with the modulator type.

‘The opt vector must be of length xxx’ if opt is used to explicitly pass the NTF zeros and these are in the wrong number.

Notes

This is actually an adaptation of the CLANS method. In the original paper about CLANS, NTF zeros are placed at z=1 (with the indication that other placements are possible). Here, the zeros are placed where synthesizeNTF places them.

The computation is based on a nonlinear, nonlinearly constrained optimization. Since the optimizer used here is different from the optimizer used in other toolboxes implementing this function, the results may differ. The current optimizer is SLSQP.

The function internally calls synthesizeNTF, and rises the same exceptions as synthesizeNTF.