Large-scale limit cycles
When overflow occurs, even otherwise stable filters may
get stuck in a large-scale limit cycle, which is a
short-period, almost full-scale persistent filter output caused by overflow.
Example 1
Consider the second-order system
Hz=11-z-1+12z-2
H
z
1
1
z
1
2
z
-2
with zero input and initial state values
z
0
0=0.8
z
0
0
0.8
,
z
1
0=-0.8
z
1
0
-0.8
. Note
yn=
z
0
n+1
y
n
z
0
n
1
.
The filter is obviously stable, since the magnitude of the poles is
12=0.707
1
2
0.707
, which is well inside the unit circle.
However, with wraparound overflow, note that
y0=
z
0
1=45-12-45=65=-45
y
0
z
0
1
4
5
1
2
4
5
6
5
4
5
, and that
z
0
2=y1=-45-1245=-65=45
z
0
2
y
1
4
5
1
2
4
5
6
5
4
5
, so
yn=
-45
,
45
,
-45
,
45
,
…
y
n
4
5
,
4
5
,
4
5
,
4
5
,
…
even with zero input.
Clearly, such behavior is intolerable and must be
prevented. Saturation arithmetic has been proved to prevent
zero-input limit cycles, which is one reason why all
DSP microprocessors support this feature. In many applications,
this is considered sufficient protection. Scaling to prevent
overflow is another solution, if as well the inital state
values are never initialized to limit-cycle-producing
values. The normal-form structure also reduces the chance of
overflow.
Small-scale limit cycles
Small-scale limit cycles are caused by quantization. Consider
the system
Note that when
α
z
0
>
z
0
-
Δ
B
2
α
z
0
z
0
Δ
B
2
, rounding will quantize the output to the current
level (with zero input), so the output will remain at this
level forever. Note that the maximum amplitude of this
"small-scale limit cycle" is achieved when
α
z
0
=
z
0
-
Δ
B
2=⇒=
z
max
=
Δ
B
21-α
α
z
0
z
0
Δ
B
2
⇒
z
max
Δ
B
2
1
α
In a higher-order system, the small-scale limit cycles are
oscillatory in nature. Any
quantization scheme that never increases the magnitude of
any quantized value prevents small-scale limit cycles.
Note:
Two's-complement truncation does
not do this; it increases the magnitude
of negative numbers.
However, this introduces greater error
and bias. Since the level of the limit cycles is
proportional to
Δ
B
Δ
B
, they can be reduced by increasing the
number of bits. Poles close to the unit circle increase the
magnitude and likelihood of small-scale limit cycles.