in [FPGA]

From: Tim Wescott on 29 Jul 2010 19:42 On 07/29/2010 12:47 PM, Steve Pope wrote: > Pete Fraser<pfraser (a)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
From: Tim Wescott on 29 Jul 2010 19:44 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
From: Steve Pope on 29 Jul 2010 20:05 Tim Wescott <tim (a)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
From: Rune Allnor on 30 Jul 2010 03:12 On 30 Jul, 01:42, Tim Wescott <t... (a)seemywebsite.com> wrote:> On 07/29/2010 12:47 PM, Steve Pope wrote: > > > > > > > Pete Fraser<pfra... (a)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
From: Steve Pope on 30 Jul 2010 12:31
Rune Allnor <allnor (a)tele.ntnu.no> wrote:>On 30 Jul, 01:42, Tim Wescott <t... (a)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 |