From: Rob Gaddi on 15 Mar 2010 12:52 Hey y'all -- So I've been working with some filter topologies trying to do programmable low-pass filtering over a 100,000:1 Fc range in a single stage, no pre-decimation. (That's unfortunately non-negotiable for reasons above my control). The second order sections that I'm using are basically derived as digital equivalents of analog state variable filters. Flow diagram is: x[n] -->--+-->--k1-->--{A}-->--+-->--k2-->--{A}-->---- y[n] | | | | | -z^-1 | | | \----------<---------\------------<-------/ Where each {A} is an accumulator, structured as: -->--+------>---------->-- | | \--<--z^-1--<--/ There are no registers in the forward path, so y[n] contains (among other things) k1*k2*x[n]. The most important aspect, however, is that the negative feedback around the overall loop is -1, which means that the section has unity gain at DC. As compared to, for instance, direct form sections, where the gains become ludicrous at low cut-off frequencies. I'm trying to find some literature on this sucker in hopes that someone smarter than I has some more insight into it, just to make sure I know what I'm getting myself into. But I can't figure out for the life of me what it's called. It's sorta-kinda-similairish to a Chamberlin topology, but does all of the work in only two multiplies rather than 3. In short, to name a thing is to have Google power over it. Anyone know where to find this one? Thanks, Rob -- Rob Gaddi, Highland Technology Email address is currently out of order
From: Tim Wescott on 15 Mar 2010 13:25 Rob Gaddi wrote: > Hey y'all -- > > So I've been working with some filter topologies trying to do > programmable low-pass filtering over a 100,000:1 Fc range in a single > stage, no pre-decimation. (That's unfortunately non-negotiable for > reasons above my control). > > The second order sections that I'm using are basically derived as > digital equivalents of analog state variable filters. Flow diagram is: > > x[n] -->--+-->--k1-->--{A}-->--+-->--k2-->--{A}-->---- y[n] > | | | > | | -z^-1 > | | | > \----------<---------\------------<-------/ > > Where each {A} is an accumulator, structured as: > > -->--+------>---------->-- > | | > \--<--z^-1--<--/ > > There are no registers in the forward path, so y[n] contains (among > other things) k1*k2*x[n]. The most important aspect, however, is that > the negative feedback around the overall loop is -1, which means that > the section has unity gain at DC. As compared to, for instance, direct > form sections, where the gains become ludicrous at low cut-off > frequencies. > > I'm trying to find some literature on this sucker in hopes that someone > smarter than I has some more insight into it, just to make sure I know > what I'm getting myself into. But I can't figure out for the life of > me what it's called. It's sorta-kinda-similairish to a Chamberlin > topology, but does all of the work in only two multiplies rather than 3. > > In short, to name a thing is to have Google power over it. Anyone know > where to find this one? In the control systems world that'd be a controllability canonical form, only missing the forward terms from the input and the first state that are necessary to make the numerator come out right. Note: This is exactly the answer you asked for, yet it is useless for your purposes. I must be an engineer*. Dunno what -- if anything -- it's called in the DSP world. * http://www.anvari.org/fun/Job/Engineer_and_Manager.html -- Tim Wescott Control system and signal processing consulting www.wescottdesign.com
From: Tim Wescott on 15 Mar 2010 14:10 Rob Gaddi wrote: > Hey y'all -- > > So I've been working with some filter topologies trying to do > programmable low-pass filtering over a 100,000:1 Fc range in a single > stage, no pre-decimation. (That's unfortunately non-negotiable for > reasons above my control). > > The second order sections that I'm using are basically derived as > digital equivalents of analog state variable filters. Flow diagram is: > > x[n] -->--+-->--k1-->--{A}-->--+-->--k2-->--{A}-->---- y[n] > | | | > | | -z^-1 > | | | > \----------<---------\------------<-------/ > > Where each {A} is an accumulator, structured as: > > -->--+------>---------->-- > | | > \--<--z^-1--<--/ > > There are no registers in the forward path, so y[n] contains (among > other things) k1*k2*x[n]. The most important aspect, however, is that > the negative feedback around the overall loop is -1, which means that > the section has unity gain at DC. As compared to, for instance, direct > form sections, where the gains become ludicrous at low cut-off > frequencies. > > I'm trying to find some literature on this sucker in hopes that someone > smarter than I has some more insight into it, just to make sure I know > what I'm getting myself into. But I can't figure out for the life of > me what it's called. It's sorta-kinda-similairish to a Chamberlin > topology, but does all of the work in only two multiplies rather than 3. > > In short, to name a thing is to have Google power over it. Anyone know > where to find this one? Something that I have used in the past -- and I think that Vladimir has mentioned as well -- is a 'state space' resonant filter: [d cos(w) -d sin(w)] x[n] = [ ] x[n-1] + B u[n] [d sin(w) d cos(w)] y[n] = C x[n-1] + D u[n] This filter works well in certain limited circumstances, and I _think_ it does a better job resolving the poles given a fixed numerical precision (I distinctly recall proving both that it's better and that it's no better, then running out of time to cook up a tie-breaker proof). But it clearly requires more computational effort than a 'regular' filter unless it saves you from taking a step up in numerical precision. If you're casting about for filter topologies to use with your 1:10^5 ratio of frequencies, this may be one to investigate. -- Tim Wescott Control system and signal processing consulting www.wescottdesign.com
From: Vladimir Vassilevsky on 15 Mar 2010 14:11 Rob Gaddi wrote: > Hey y'all -- > > So I've been working with some filter topologies trying to do > programmable low-pass filtering over a 100,000:1 Fc range in a single > stage, no pre-decimation. (That's unfortunately non-negotiable for > reasons above my control). > > The second order sections that I'm using are basically derived as > digital equivalents of analog state variable filters. Flow diagram is: > > x[n] -->--+-->--k1-->--{A}-->--+-->--k2-->--{A}-->---- y[n] > | | | > | | -z^-1 > | | | > \----------<---------\------------<-------/ > > Where each {A} is an accumulator, structured as: > > -->--+------>---------->-- > | | > \--<--z^-1--<--/ > > There are no registers in the forward path, so y[n] contains (among > other things) k1*k2*x[n]. The most important aspect, however, is that > the negative feedback around the overall loop is -1, which means that > the section has unity gain at DC. As compared to, for instance, direct > form sections, where the gains become ludicrous at low cut-off > frequencies. > > I'm trying to find some literature on this sucker in hopes that someone > smarter than I has some more insight into it, just to make sure I know > what I'm getting myself into. But I can't figure out for the life of > me what it's called. It's sorta-kinda-similairish to a Chamberlin > topology, but does all of the work in only two multiplies rather than 3. > > In short, to name a thing is to have Google power over it. Anyone know > where to find this one? As mentioned by Tim, this structure is a lot like what is used in control systems. This won't save precision though, you will have to do 64-bit accumulation. What it could help with is the precision of the coefficients. You can probably get by 16 bits. However, you can accomplish exactly the same result with the direct form feedback path. y[n] = x[n] + B1*y[n-1] + B2*y[n-2] B1 ~ 2 B2 ~ 1 Let B1 = 2 - alpha Let B2 = 1 - beta Then alpha and beta could be 16-bit numbers. Vladimir Vassilevsky DSP and Mixed Signal Design Consultant http://www.abvolt.com
From: HardySpicer on 15 Mar 2010 15:34
On Mar 16, 6:25 am, Tim Wescott <t...(a)seemywebsite.now> wrote: > Rob Gaddi wrote: > > Hey y'all -- > > > So I've been working with some filter topologies trying to do > > programmable low-pass filtering over a 100,000:1 Fc range in a single > > stage, no pre-decimation. (That's unfortunately non-negotiable for > > reasons above my control). > > > The second order sections that I'm using are basically derived as > > digital equivalents of analog state variable filters. Flow diagram is: > > > x[n] -->--+-->--k1-->--{A}-->--+-->--k2-->--{A}-->---- y[n] > > | | | > > | | -z^-1 > > | | | > > \----------<---------\------------<-------/ > > > Where each {A} is an accumulator, structured as: > > > -->--+------>---------->-- > > | | > > \--<--z^-1--<--/ > > > There are no registers in the forward path, so y[n] contains (among > > other things) k1*k2*x[n]. The most important aspect, however, is that > > the negative feedback around the overall loop is -1, which means that > > the section has unity gain at DC. As compared to, for instance, direct > > form sections, where the gains become ludicrous at low cut-off > > frequencies. > > > I'm trying to find some literature on this sucker in hopes that someone > > smarter than I has some more insight into it, just to make sure I know > > what I'm getting myself into. But I can't figure out for the life of > > me what it's called. It's sorta-kinda-similairish to a Chamberlin > > topology, but does all of the work in only two multiplies rather than 3.. > > > In short, to name a thing is to have Google power over it. Anyone know > > where to find this one? > > In the control systems world that'd be a controllability canonical form, > only missing the forward terms from the input and the first state that > are necessary to make the numerator come out right. > > Note: This is exactly the answer you asked for, yet it is useless for > your purposes. I must be an engineer*. > > Dunno what -- if anything -- it's called in the DSP world. The same. a state-space canonical form. Normally companion form. Hardy |