Network Transformation

The operation of scaling a filter changes the values of the `non-integrating' branches of the state-space graph (the filter network) but does not change the graph structure. If also the graph structure may be changed, there are more possibilities to optimize the dynamic range.

FA has several transformations to optimize the network of the filter. They
are designated by the keywords `do`, `do2` and `do3`
(where `do' stands for `dynamic-range optimization') and work quite differently.

`do` is an implementation of the dynamic-range optimization algorithm
that was developed by Mullis and Roberts [2] and Hwang [3]
for digital filters. This method
assumes that the input-referred noise spectra for the integrators is
*independent of the network realization and equal for all the integrators*.
That this is not true in general is clear from equation (26).
However, for high-Q bandpass filters, this is a reasonable assumption.

When optimizing a bandpass filter through the transformation `do`,
this optimization should be done on the low-pass equivalent of the
filter *before* lowpass to bandpass transformation, see
Section 6.2.

Also, this optimization assumes the input signal to be a wide-band signal with the spectral properties of white noise, see Section 10.2.1.

`do2` takes everything into account and therefore returns with a filter
that has a dynamic range that is higher than the dynamic range of the filter
`do` yields. This is a more complex task than `do` performs.
Therefore, `do2` is implemented as a numerical routine, whereas
`do` is analytical and much faster.

In general, the filter structures returned by `do`
and `do2` are not very
practically realizable as a real circuit. Usually no or only few of the
entries of
*A*
,

`do3` is very similar to `do2`. However, it restricts the
transformation for
quicker computation, and to obtain a less dense filter realization.
For this to work properly, the state matrix
*A*
before transformation
should only have zero-valued elements below the first subdiagonal.
This is the case for cascade and ladder filters.
If before transformation

These dynamic-range optimizers do not need the values of
*C*_{tot}
,
*V*_{max}
and the noise factor to work. These are only needed if the dynamic
range is to be evaluated.

Here is an example input file.

butterworth(3); ctot = 30e-12; umax = 1; noisefactor = 1; transform: scale; output: dr; set: optc; transform: do2; output: "optimal filter:" filter caps dr;The output is:

Output noise level: 4.334959e-05 V. Scaling is L-infinity. Maximum output level: 1.000000e+00 V. Dynamic range: 2.306827e+04 (87.26 dB). optimum at 0.09 0.13 -0.17 -0.05 -0.05 0.17 DR change is +1.180dB optimal filter: A = (3, 3) -1.091324e+00 7.175562e-01 3.558719e-01 -1.489248e-01 -3.718107e-06 5.197124e-01 -5.287917e-01 -1.372476e+00 -9.086724e-01 B = (3, 1) 1.605863e+00 -1.293019e-01 -3.333185e-01 C = (1, 3) 4.972029e-02 -6.906501e-01 5.074617e-01 D = 0.000000e+00 c1 = 6.054107e-12 c2 = 1.435668e-11 c3 = 9.589212e-12 Capacitance is divided optimally. Output noise level: 3.774110e-05 V. Scaling is L-infinity. Maximum output level: 1.000000e-00 V. Dynamic range: 2.649631e+04 (88.46 dB).So this optimization results in an improvement of the dynamic range of about 1.2dB above the dynamic range of the scaled filter. This also indicates that the maximum dynamic range attainable for the given transfer function and values of