Data-path accuracy in IIR filters?

P

Pete Fraser

Guest
I am working on a project where I need to
implement 6-th order Butterworth low-pass
filters in an FPGA. In some the bandwidth is
low relative to the input data rate, whereas
others have higher bandwidth. I can use ScopeIIR
or Matlab to give me a good idea of coefficient
accuracy for any given ratio of bandwidth to
input sample rate.

However, I'm not sure what data-path accuracy
I need (for 20-bit input / output accuracy).
Is there a rule-of-thumb I can use, or do I just
have to simulate the filter with real data and
see what gives me low enough noise?

I was planning on using biquads, but I'm not sure
whether I'm better off with DF1 or DF2 sections.

Thoughts?

Thanks

Pete
 
Pete Fraser wrote:

I am working on a project where I need to
implement 6-th order Butterworth low-pass
filters in an FPGA. In some the bandwidth is
low relative to the input data rate, whereas
others have higher bandwidth. I can use ScopeIIR
or Matlab to give me a good idea of coefficient
accuracy for any given ratio of bandwidth to
input sample rate.

However, I'm not sure what data-path accuracy
I need (for 20-bit input / output accuracy).
Is there a rule-of-thumb I can use, or do I just
have to simulate the filter with real data and
see what gives me low enough noise?

I was planning on using biquads, but I'm not sure
whether I'm better off with DF1 or DF2 sections.
If the filter cutoff frequency is much lower then samplerate, then loss
of precision in the direct implementation of the biquad section could be
very roughly estimated as ~ Q (Fc/Fs)^2.

Let's say Fc = 100 kHz, Fs = 100 Hz, Q = 1. Loss of precision ~ 1e6 ~ 20
bits. That is, if your filter is implemented with 32 bit data path, the
result will be accurate only to 12 bits.

There are, of course, methods to get more accurate estimates and to
improve precision, however this is a different and rather long story.


Vladimir Vassilevsky
DSP and Mixed Signal Design Consultant
http://www.abvolt.com
 
Pete Fraser <pfraser@covad.net> wrote:

I am working on a project where I need to
implement 6-th order Butterworth low-pass
filters in an FPGA. In some the bandwidth is
low relative to the input data rate, whereas
others have higher bandwidth. I can use ScopeIIR
or Matlab to give me a good idea of coefficient
accuracy for any given ratio of bandwidth to
input sample rate.

However, I'm not sure what data-path accuracy
I need (for 20-bit input / output accuracy).
Is there a rule-of-thumb I can use, or do I just
have to simulate the filter with real data and
see what gives me low enough noise?
You should simulate the fixed-point filter. When simulating,
you do not necessarily have to stimulate it with realistic data. I
often will stimulate the design being tested with bandlimited noise, and
measure the RMS error of output (relative to the same design, but in full
floating-point). Plotting the RMS error (in dBc) vs. RMS input level
gives you a very good idea of the dynamic range of the fixed point
design.

I was planning on using biquads, but I'm not sure
whether I'm better off with DF1 or DF2 sections.
You can do this, or you can use a lattice topology
(called "ARMA" in matlab/fdatool), which is the most
well-behaved topology.

Steve
 
On Jul 29, 3:23 pm, "Pete Fraser" <pfra...@covad.net> wrote:
I am working on a project where I need to
implement 6-th order Butterworth low-pass
filters in an FPGA. In some the bandwidth is
low relative to the input data rate, whereas
others have higher bandwidth. I can use ScopeIIR
or Matlab to give me a good idea of coefficient
accuracy for any given ratio of bandwidth to
input sample rate.

However, I'm not sure what data-path accuracy
I need (for 20-bit input / output accuracy).
Is there a rule-of-thumb I can use, or do I just
have to simulate the filter with real data and
see what gives me low enough noise?

I was planning on using biquads, but I'm not sure
whether I'm better off with DF1 or DF2 sections.

Thoughts?
i think you'll do better with DF1 sections (it will cost you two more
storage states, you'll have 8 instead of 6) and, for each section, an
accumulator that is wide enough to have no error given the word widths
of the signal (you said 20 bits) and the coefficients (that might
depend on the range of coefficients).

using 1st-order error shaping, a.k.a. "fraction saving" might gain you
something, and you can accomplish this for free if you leave in your
accumulator (as an initial value) the long-word output from the
previous sample. you will need to compensate this by subtracting 1
from "a1", the first feedback coefficient. then, for rounding to the
next section, all you need to do is truncate the low-order bits of the
word going to the next section, no rounding necessary (that gets fixed
with the fraction saving). that means, for

H(z) = N(z)/D(z)

where

D(z) = 1 + a1*z^(-1) + a2*z^(-2)

= 1 + (a1+1)*z^(-1) - z^(-1) + a2*z^(-2)

the term z^(-1) would be the double wide output from the previous
sample, y[n-1].


if your biquads remain resonant (meaning complex conjugate poles) and
if the resonant frequency is going to be very low and if the resonance
will be high (that is the poles are close to z=1), then consider
reworking the denominator of the biquad transfer function as:


D(z) = 1 + a1*z^(-1) + a2*z^(-2)

= 1 + (a1+2)*z^(-1) - 2*z^(-1) + (a2-1)*z^(-2) + z^(-2)


for the terms 2*z^(-1) and z^(-2), you would use the double-wide
previous states of y[n-1] and y[n-2].

just a recommendation i might make to make your life easier in the
universe of fixed-point arithmetic.

FWIW.

r b-j
 
On 07/29/2010 12:47 PM, Steve Pope wrote:
Pete Fraser<pfraser@covad.net> wrote:

I am working on a project where I need to
implement 6-th order Butterworth low-pass
filters in an FPGA. In some the bandwidth is
low relative to the input data rate, whereas
others have higher bandwidth. I can use ScopeIIR
or Matlab to give me a good idea of coefficient
accuracy for any given ratio of bandwidth to
input sample rate.

However, I'm not sure what data-path accuracy
I need (for 20-bit input / output accuracy).
Is there a rule-of-thumb I can use, or do I just
have to simulate the filter with real data and
see what gives me low enough noise?

You should simulate the fixed-point filter. When simulating,
you do not necessarily have to stimulate it with realistic data. I
often will stimulate the design being tested with bandlimited noise, and
measure the RMS error of output (relative to the same design, but in full
floating-point). Plotting the RMS error (in dBc) vs. RMS input level
gives you a very good idea of the dynamic range of the fixed point
design.

I was planning on using biquads, but I'm not sure
whether I'm better off with DF1 or DF2 sections.

You can do this, or you can use a lattice topology
(called "ARMA" in matlab/fdatool), which is the most
well-behaved topology.

Steve
I did a quick search on "digital lattice filter" and didn't come up with
any really coherent discussion. There was lots of stuff about how to
use this or that lattice filter in this or that specialized application,
but not "this is DF1, this is DF2, this is a digital lattice filter...".

Got any references?

--

Tim Wescott
Wescott Design Services
http://www.wescottdesign.com

Do you need to implement control loops in software?
"Applied Control Theory for Embedded Systems" was written for you.
See details at http://www.wescottdesign.com/actfes/actfes.html
 
On 07/29/2010 12:23 PM, Pete Fraser wrote:
I am working on a project where I need to
implement 6-th order Butterworth low-pass
filters in an FPGA. In some the bandwidth is
low relative to the input data rate, whereas
others have higher bandwidth. I can use ScopeIIR
or Matlab to give me a good idea of coefficient
accuracy for any given ratio of bandwidth to
input sample rate.

However, I'm not sure what data-path accuracy
I need (for 20-bit input / output accuracy).
Is there a rule-of-thumb I can use, or do I just
have to simulate the filter with real data and
see what gives me low enough noise?

I was planning on using biquads, but I'm not sure
whether I'm better off with DF1 or DF2 sections.
What Vladimir and Steve said. If you want to know for sure, make a
block diagram of the filter, put in summing junctions for the
quantizers, then find the transfer function from that summing junction
to the output. Do a Bode plot, and figure that your output noise will
be your quantization noise times the worst-case gain.

--

Tim Wescott
Wescott Design Services
http://www.wescottdesign.com

Do you need to implement control loops in software?
"Applied Control Theory for Embedded Systems" was written for you.
See details at http://www.wescottdesign.com/actfes/actfes.html
 
On Jul 29, 8:47 pm, spop...@speedymail.org (Steve Pope) wrote:
Pete Fraser <pfra...@covad.net> wrote:
I am working on a project where I need to
implement 6-th order Butterworth low-pass
filters in an FPGA. In some the bandwidth is
low relative to the input data rate, whereas
others have higher bandwidth. I can use ScopeIIR
or Matlab to give me a good idea of coefficient
accuracy for any given ratio of bandwidth to
input sample rate.

However, I'm not sure what data-path accuracy
I need (for 20-bit input / output accuracy).
Is there a rule-of-thumb I can use, or do I just
have to simulate the filter with real data and
see what gives me low enough noise?

You should simulate the fixed-point filter.  When simulating,
you do not necessarily have to stimulate it with realistic data.  I
often will stimulate the design being tested with bandlimited noise, and
measure the RMS error of output (relative to the same design, but in full
floating-point).  Plotting the RMS error (in dBc) vs. RMS input level
gives you a very good idea of the dynamic range of the fixed point
design.

I was planning on using biquads, but I'm not sure
whether I'm better off with DF1 or DF2 sections.

You can do this, or you can use a lattice topology
(called "ARMA" in matlab/fdatool), which is the most
well-behaved topology.

Steve
I recently did just that and concurs with everything Steve said. Most
important figure you need to keep track of is your I/O RMS with the
various quantizations and casts you'd have applied. The places where
casting occurs is of particular importance here and is structure-
related. If your realization is sequential it'd be even harder to sort
out. My final filter was DF2 with a shared biquad core and a memory
trace for states and biquad inputs and outputs. The best performance
for casting you get from convergent. Keep simulating various scenarios
and look at your RMS and play with your structure, quantization, and
castings until you land something satisfactory. Looking at my core's
generics, here are what worked quite well for me:
- core: rolled IIR DF2 SOS
- sample word width: 16
- internal state width: 25
- internal fract width: 15
- coeff word width: 17
- coeff fract width: 15
- output scaling: YES

Regards,
-Momo
 
Tim Wescott <tim@seemywebsite.com> wrote:

I did a quick search on "digital lattice filter" and didn't come up with
any really coherent discussion. There was lots of stuff about how to
use this or that lattice filter in this or that specialized application,
but not "this is DF1, this is DF2, this is a digital lattice filter...".

Got any references?
A classical description of lattice filters is in Rabiner and
Schafer, where they are called "lattice filters". But in
the Mathworks world, they are called "ARMA filters", or
sometimes "lattice ARMA" filters.

Something like the Mathworks Filter Design Toolbox has a passable
explanation of this topology.

Steve
 
On 30 Jul, 01:42, Tim Wescott <t...@seemywebsite.com> wrote:
On 07/29/2010 12:47 PM, Steve Pope wrote:





Pete Fraser<pfra...@covad.net>  wrote:

I am working on a project where I need to
implement 6-th order Butterworth low-pass
filters in an FPGA. In some the bandwidth is
low relative to the input data rate, whereas
others have higher bandwidth. I can use ScopeIIR
or Matlab to give me a good idea of coefficient
accuracy for any given ratio of bandwidth to
input sample rate.

However, I'm not sure what data-path accuracy
I need (for 20-bit input / output accuracy).
Is there a rule-of-thumb I can use, or do I just
have to simulate the filter with real data and
see what gives me low enough noise?

You should simulate the fixed-point filter.  When simulating,
you do not necessarily have to stimulate it with realistic data.  I
often will stimulate the design being tested with bandlimited noise, and
measure the RMS error of output (relative to the same design, but in full
floating-point).  Plotting the RMS error (in dBc) vs. RMS input level
gives you a very good idea of the dynamic range of the fixed point
design.

I was planning on using biquads, but I'm not sure
whether I'm better off with DF1 or DF2 sections.

You can do this, or you can use a lattice topology
(called "ARMA" in matlab/fdatool), which is the most
well-behaved topology.

Steve

I did a quick search on "digital lattice filter" and didn't come up with
any really coherent discussion.  There was lots of stuff about how to
use this or that lattice filter in this or that specialized application,
but not "this is DF1, this is DF2, this is a digital lattice filter...".

Got any references?
These filters are treated in medium / advanced level
DSP books, like Proakis & Manolakis. Don't think the
term 'lattice filter' is too common, though; rather
'lattice structure' or 'lattice ladder structure'.

I am not sure they are worth a general discussion:
The problem is that the lattice structure fuses both
the FIR and its IIR inverse, so if the FIR has zeros on
or outside the unit circle, the computations blow up.

It makes a lot of sense keeping those disussion on a
need to know basis.

Rune
 
Rune Allnor <allnor@tele.ntnu.no> wrote:

On 30 Jul, 01:42, Tim Wescott <t...@seemywebsite.com> wrote:

On 07/29/2010 12:47 PM, Steve Pope wrote:

You can do this, or you can use a lattice topology

I did a quick search on "digital lattice filter" and didn't come up with
any really coherent discussion.  There was lots of stuff about how to
use this or that lattice filter in this or that specialized application,
but not "this is DF1, this is DF2, this is a digital lattice filter...".

Got any references?

These filters are treated in medium / advanced level
DSP books, like Proakis & Manolakis. Don't think the
term 'lattice filter' is too common, though; rather
'lattice structure' or 'lattice ladder structure'.

I am not sure they are worth a general discussion:
The problem is that the lattice structure fuses both
the FIR and its IIR inverse, so if the FIR has zeros on
or outside the unit circle, the computations blow up.
I do not think this is a problem in practice. The FIR
form of any topology is stable; the IIR form of the lattice
topology is unconditionally stable if the coefficients are
in the range (-1,1) and you are using saturating arithmetic.
This latter fact makes them very useful in implementation,
because (almost) any IIR filter you would want to implement
satisfies this constraint.

It makes a lot of sense keeping those disussion on a
need to know basis.
Just FYI, the lattice topology is my first-line choice
for implementing a typical IIR such as the OP's Butterworth.
I only go to something else if the lattice topology it
too costly (it does take 3*N+1 multiplies to implement
a N-pole, N-zero filter. But often the multipliers are
somewhat lower precision than in other topologies;
the coefficients tend to be pretty insensitive.)
I have used these filters many, many times because the
design time is really short because you don't have
to angst over whether you've chosen a well-behaved structure.

Steve
 
Rune Allnor <allnor@tele.ntnu.no> wrote:

These filters are treated in medium / advanced level
DSP books, like Proakis & Manolakis. Don't think the
term 'lattice filter' is too common, though; rather
'lattice structure' or 'lattice ladder structure'.
Also, I'm pretty sure the "wave filters" or "wave lattice filters"
are not closely related to (what I am calling) a lattice filter
or lattice structure.

"lattice-ladder" specifically refers to the topology of this
family that gives you both poles and zeros.


Steve
 
On 30 Jul, 18:31, spop...@speedymail.org (Steve Pope) wrote:
Rune Allnor  <all...@tele.ntnu.no> wrote:





On 30 Jul, 01:42, Tim Wescott <t...@seemywebsite.com> wrote:
On 07/29/2010 12:47 PM, Steve Pope wrote:
You can do this, or you can use a lattice topology
I did a quick search on "digital lattice filter" and didn't come up with
any really coherent discussion.  There was lots of stuff about how to
use this or that lattice filter in this or that specialized application,
but not "this is DF1, this is DF2, this is a digital lattice filter...".
Got any references?
These filters are treated in medium / advanced level
DSP books, like Proakis & Manolakis. Don't think the
term 'lattice filter' is too common, though; rather
'lattice structure' or 'lattice ladder structure'.
I am not sure they are worth a general discussion:
The problem is that the lattice structure fuses both
the FIR and its IIR inverse, so if the FIR has zeros on
or outside the unit circle, the computations blow up.

I do not think this is a problem in practice.  The FIR
form of any topology is stable; the IIR form of the lattice
topology is unconditionally stable if the coefficients are
in the range (-1,1)
My library is unavailable for the moment, so I can't look it
up, but as I remember it this constraint is equivalent to
the zeros of the FIR being inside the unit circle. The lattice
factors are equivalent to the reflection coefficients that pop
out from the Levinson recursion, right?

and you are using saturating arithmetic.
This latter fact makes them very useful in implementation,
because (almost) any IIR filter you would want to implement
satisfies this constraint.
Would *want* to implement? If I am right about the zeros,
that would require a competent designer / user of the filter.
Would you risk a design of yours, on some of your students
or clients making that call...?

Rune
 
Rune Allnor <allnor@tele.ntnu.no> wrote:

On 30 Jul, 18:31, spop...@speedymail.org (Steve Pope) wrote:

I do not think this is a problem in practice.  The FIR
form of any topology is stable; the IIR form of the lattice
topology is unconditionally stable if the coefficients are
in the range (-1,1)

My library is unavailable for the moment, so I can't look it
up, but as I remember it this constraint is equivalent to
the zeros of the FIR being inside the unit circle. The lattice
factors are equivalent to the reflection coefficients that pop
out from the Levinson recursion, right?
Yes, they are.

and you are using saturating arithmetic.
This latter fact makes them very useful in implementation,
because (almost) any IIR filter you would want to implement
satisfies this constraint.

Would *want* to implement? If I am right about the zeros,
that would require a competent designer / user of the filter.
Would you risk a design of yours, on some of your students
or clients making that call...?
I think you're referring to the filter being user-programmable.
If the range of the coefficients is limited to (-1,1), then
it is stable. It's pretty straightforward to build this range
limit into an implementation. This may not keep the user
from programming a useless transfer function into the filter,
but it will keep them from creating an unstable filter
that oscillates.

(You may be addressing some other aspect of the situation, but
if so, I'm not picking up on what you're saying.)

Steve
 
On 31 Jul, 10:05, spop...@speedymail.org (Steve Pope) wrote:
Rune Allnor  <all...@tele.ntnu.no> wrote:

On 30 Jul, 18:31, spop...@speedymail.org (Steve Pope) wrote:
I do not think this is a problem in practice.  The FIR
form of any topology is stable; the IIR form of the lattice
topology is unconditionally stable if the coefficients are
in the range (-1,1)
My library is unavailable for the moment, so I can't look it
up, but as I remember it this constraint is equivalent to
the zeros of the FIR being inside the unit circle. The lattice
factors are equivalent to the reflection coefficients that pop
out from the Levinson recursion, right?

Yes, they are.

and you are using saturating arithmetic.
This latter fact makes them very useful in implementation,
because (almost) any IIR filter you would want to implement
satisfies this constraint.
Would *want* to implement? If I am right about the zeros,
that would require a competent designer / user of the filter.
Would you risk a design of yours, on some of your students
or clients making that call...?

I think you're referring to the filter being user-programmable.
If the range of the coefficients is limited to (-1,1), then
it is stable.  It's pretty straightforward to build this range
limit into an implementation.  This may not keep the user
from programming a useless transfer function into the filter,
but it will keep them from creating an unstable filter
that oscillates.

(You may be addressing some other aspect of the situation, but
if so, I'm not picking up on what you're saying.)
I'm referring to what I interpret to be the constraint of FIR
zeros to stay inside the unit circle. Being able to use such
a filter requires an amount of knowledge and competence on
behalf of the user that I would not rely on. The xonstraint
only changes the questionfrom "Why is my lattice structure
linear phase FIR numerically unstable?" to "Why can't I
implement the linear phase FIR as a lattice structure?"

OK, you as system designer might have prevented your client
from cooking up a disaster, but you are still left with a
wining client.

Rune
 
Rune Allnor <allnor@tele.ntnu.no> wrote:

[Lattice filter topology]

I'm referring to what I interpret to be the constraint of FIR
zeros to stay inside the unit circle. Being able to use such
a filter requires an amount of knowledge and competence on
behalf of the user that I would not rely on. The xonstraint
only changes the questionfrom "Why is my lattice structure
linear phase FIR numerically unstable?" to "Why can't I
implement the linear phase FIR as a lattice structure?"

OK, you as system designer might have prevented your client
from cooking up a disaster, but you are still left with a
wining client.
I must say that I'm just not getting your point here.

Firstly, the FIR part of such a filter is not unstable.

The IIR part cannot be unstable if the coefficients are
constrained within the range (-1,1), a constraint that is
easily imposed by the implementation whether it be in RTL,
or gates, or software/firmware.

Other topologies have similar regions of instabilities for
their coefficient; but they are not stated as simply.

You seem to be fishing for problems specific to the lattice topology
that, so far as I know, just aren't there. This is useful,
normal, mundane, everday filter topology.

Steve
 
On 31 Jul, 21:03, spop...@speedymail.org (Steve Pope) wrote:
Rune Allnor  <all...@tele.ntnu.no> wrote:

[Lattice filter topology]

I'm referring to what I interpret to be the constraint of FIR
zeros to stay inside the unit circle. Being able to use such
a filter requires an amount of knowledge and competence on
behalf of the user that I would not rely on. The xonstraint
only changes the questionfrom "Why is my lattice structure
linear phase FIR numerically unstable?" to "Why can't I
implement the linear phase FIR as a lattice structure?"
OK, you as system designer might have prevented your client
from cooking up a disaster, but you are still left with a
wining client.

I must say that I'm just not getting your point here.

Firstly, the FIR part of such a filter is not unstable.

The IIR part cannot be unstable if the coefficients are
constrained within the range (-1,1), a constraint that is
easily imposed by the implementation whether it be in RTL,
or gates, or software/firmware.
Sure. You know that. I know that. But is that konwledge
wide-spread? Would you trust users to depend on knowing
these things?

Other topologies have similar regions of instabilities for
their coefficient; but they are not stated as simply.
Wrong. The IIRs are stable subject to poles staying
strictly inside the unit circle. Zeros might be everywhere,
no restrictions there.

FIRs are unconditionally stable, at the outset.

The lattice structure represents a dobule obfuscation in that it

1) Places restrictions on FIR filter stability
2) Depends on zero locations

Ano one of those restrictions would mess up the amateur's mind;
the two together would play havoc with anyone in two seconds flat.

Remember, the days when people actually read up on DSP before
attempting to use the techniques are long since gone. You have
to deal with the "Matlab does all the thinking" (TM) generation.

You seem to be fishing for problems specific to the lattice topology
that, so far as I know, just aren't there.  This is useful,
normal, mundane, everday filter topology.
Again, I don't have my books easily available, so with the caveat
that
I'm writing off years-old memories:

The FIR and IIR parts are tightly coupled in the lattice structure.
In effect the N'th order lattice filter does the computations in
N stages, with cross-copleing between each stage: The output after
*both* n'th stage filters are fed (with different scaling) as
input to *both* the n+1'th stages in the lattice. As there are
the same number of stages as there are poles (IIR) / zeros (FIR),
the IIR part will be unconditionally unstable if there are two
zeros on or outside the unit circle. Concequently, the FIR
will be unstable, as input from one M order unstable IIR will
be used as input to the FIR computations somewhere in the lattice.

The only way I can see where one might get away ith this, is if
there is exactky one unstable zero of the IIR (reflection coefficient
=1)
and that the corresponding lattice section is the very last, where
its output is not used as input to the FIR.

If you think I am wrong, you are welcome to provide proofs to show
that the lattice structure is unconditionally stable.

Rune
 
Rune Allnor <allnor@tele.ntnu.no> replies to my post,

I must say that I'm just not getting your point here.

Firstly, the FIR part of such a filter is not unstable.

The IIR part cannot be unstable if the coefficients are
constrained within the range (-1,1), a constraint that is
easily imposed by the implementation whether it be in RTL,
or gates, or software/firmware.

Sure. You know that. I know that. But is that konwledge
wide-spread? Would you trust users to depend on knowing
these things?
Yes, it's as widespread as any stability criteria for any
other filter topology.

Other topologies have similar regions of instabilities for
their coefficient; but they are not stated as simply.

Wrong. The IIRs are stable subject to poles staying
strictly inside the unit circle. Zeros might be everywhere,
no restrictions there.
The same is true for a lattice topology, and for any other common
topologies.

FIRs are unconditionally stable, at the outset.

The lattice structure represents a dobule obfuscation in that it

1) Places restrictions on FIR filter stability
I have NO idea what you are talking about here.

2) Depends on zero locations
Again, you've lost me. Your statements 1) and 2) are not true,
so far as I know.

Again, I don't have my books easily available, so with the caveat
that
I'm writing off years-old memories:

The FIR and IIR parts are tightly coupled in the lattice structure.
Please look at the figure on page 11-28 of this document:

http://www.busim.ee.boun.edu.tr/~resources/fdq.pdf

The zero location are controlled by the coefficients v1, v2....
These coefficients do not make the filter unstable.

There is no "obfuscation" much less "double obfuscation". This
is a perfectly normal, everyday, widely used filter with better
stability behavior than most.


Steve
 
Steve Pope <spope33@speedymail.org> wrote:

Please look at the figure on page 11-28 of this document:

http://www.busim.ee.boun.edu.tr/~resources/fdq.pdf
Actually, there is a somewhat better Mathworks document on the
subject here:

http://www.mathworks.com/access/helpdesk_r13/help/toolbox/filterdesign/propref7.html#20164

In my experience, the most useful and well behaved forms of lattice
filters are termed as follows in the above:

"latticema" -- all-zero filter
"latticear" -- all-pole filter
"latticearma" -- filter with both poles and zeros


Steve
 
On 31 Jul, 22:49, spop...@speedymail.org (Steve Pope) wrote:
Rune Allnor  <all...@tele.ntnu.no> replies to my post,

I must say that I'm just not getting your point here.
Firstly, the FIR part of such a filter is not unstable.
The IIR part cannot be unstable if the coefficients are
constrained within the range (-1,1), a constraint that is
easily imposed by the implementation whether it be in RTL,
or gates, or software/firmware.
Sure. You know that. I know that. But is that konwledge
wide-spread? Would you trust users to depend on knowing
these things?

Yes, it's as widespread as any stability criteria for any
other filter topology.
The other topologies only matter as the established baseline.
We are focusing on the lattice topology here.

Other topologies have similar regions of instabilities for
their coefficient; but they are not stated as simply.
Wrong. The IIRs are stable subject to poles staying
strictly inside the unit circle. Zeros might be everywhere,
no restrictions there.

The same is true for a lattice topology,
The pleas prove this statement mathematically. Up to this point
you have been very persistent in restricting the reflection
coefficients to the range [-1,1]. Could you pelase elaborate
on what happens if the reflection coefficients stray outside
that range?

FIRs are unconditionally stable, at the outset.
The lattice structure represents a dobule obfuscation in that it
1) Places restrictions on FIR filter stability

I have NO idea what you are talking about here.
A lattice implementation fuses the IIR and the FIR into a
common structure. That's why it is used in the AR-type
perdictors: You get *both* the perdicted signal, as computed
by the FIR AR predictor *and* the prediction error (as computed
by the IIR predictor inverse) for a minimum ofcomputations.

One constraint for this to work is that the IIR is stable.

2) Depends on zero locations

Again, you've lost me.  Your statements 1) and 2) are not true,
so far as I know.
"As far as you know." Check it out.

Again, I don't have my books easily available, so with the caveat
that
I'm writing off years-old memories:
The FIR and IIR parts are tightly coupled in the lattice structure.

Please look at the figure on page 11-28 of this document:

http://www.busim.ee.boun.edu.tr/~resources/fdq.pdf

The zero location are controlled by the coefficients v1, v2....
These coefficients do not make the filter unstable.

There is no "obfuscation" much less "double obfuscation".  This
is a perfectly normal, everyday, widely used filter with better
stability behavior than most.
So why isn't it mentioned in every textbook out there?
Why bother with DF I and II if the lattice works so well?

Rune
 
On 1 Aug, 05:10, spop...@speedymail.org (Steve Pope) wrote:
Steve Pope <spop...@speedymail.org> wrote:
Please look at the figure on page 11-28 of this document:

http://www.busim.ee.boun.edu.tr/~resources/fdq.pdf

Actually, there is a somewhat better Mathworks document on the
subject here:

http://www.mathworks.com/access/helpdesk_r13/help/toolbox/filterdesig...

In my experience, the most useful and well behaved forms of lattice
filters are termed as follows in the above:

"latticema" -- all-zero filter
"latticear" -- all-pole filter
"latticearma" -- filter with both poles and zeros

Steve
Sorry - I got you wrong from the start. I had you down as knowing
your DSP. This reveals your true guise as a mere matlab user.

Rune
 

Welcome to EDABoard.com

Sponsor

Back
Top