Forums

Xilinx FIR Core Implementation

Started by Andrew Ashworth June 27, 2011
Hi,

I've built a FIR filter in Matlab, and used to the coefficients in
Xilinx Coregen to build a multirate lowpass decimator (16x). According
to Matlab, and the Xilinx Coregen graph, I should be getting 120dB of
attenuation in the stopband. However, in real life when I hook my fpga
board to a signal generator, I only get around ~50dB of attenuation
between a tone in the passband and a tone in the stopband.

I'm at a loss as to why this could be. Does anyone have any
suggestions on where I could start in order to troubleshoot this
issue?

On Mon, 27 Jun 2011 07:39:42 -0700 (PDT), Andrew Ashworth
<alashworth@gmail.com> wrote:

>Hi, > >I've built a FIR filter in Matlab, and used to the coefficients in >Xilinx Coregen to build a multirate lowpass decimator (16x). According >to Matlab, and the Xilinx Coregen graph, I should be getting 120dB of >attenuation in the stopband. However, in real life when I hook my fpga >board to a signal generator, I only get around ~50dB of attenuation >between a tone in the passband and a tone in the stopband. > >I'm at a loss as to why this could be. Does anyone have any >suggestions on where I could start in order to troubleshoot this >issue? >
How much precision are you using in the arithmetic of your filter? Eric Jacobsen http://www.ericjacobsen.org http://www.dsprelated.com/blogs-1//Eric_Jacobsen.php

Andrew Ashworth wrote:

> Hi, > > I've built a FIR filter in Matlab, and used to the coefficients in > Xilinx Coregen to build a multirate lowpass decimator (16x). According > to Matlab, and the Xilinx Coregen graph, I should be getting 120dB of > attenuation in the stopband. However, in real life when I hook my fpga > board to a signal generator, I only get around ~50dB of attenuation > between a tone in the passband and a tone in the stopband. > > I'm at a loss as to why this could be. Does anyone have any > suggestions on where I could start in order to troubleshoot this > issue?
Code the filter by hand. Start with the basics. Matlabs and Coregens won't help before you know how the stuff works. Vladimir Vassilevsky DSP and Mixed Signal Design Consultant http://www.abvolt.com
On 27.6.11 5:39 , Andrew Ashworth wrote:
> Hi, > > I've built a FIR filter in Matlab, and used to the coefficients in > Xilinx Coregen to build a multirate lowpass decimator (16x). According > to Matlab, and the Xilinx Coregen graph, I should be getting 120dB of > attenuation in the stopband. However, in real life when I hook my fpga > board to a signal generator, I only get around ~50dB of attenuation > between a tone in the passband and a tone in the stopband. > > I'm at a loss as to why this could be. Does anyone have any > suggestions on where I could start in order to troubleshoot this > issue? >
Are you sure that there are no analog creepage paths for the amount of attenuation you're seeing? A careless ground loop will well create a -50 dB leakage. -- Tauno Voipio
On 06/27/2011 07:39 AM, Andrew Ashworth wrote:
> Hi, > > I've built a FIR filter in Matlab, and used to the coefficients in > Xilinx Coregen to build a multirate lowpass decimator (16x). According > to Matlab, and the Xilinx Coregen graph, I should be getting 120dB of > attenuation in the stopband. However, in real life when I hook my fpga > board to a signal generator, I only get around ~50dB of attenuation > between a tone in the passband and a tone in the stopband. > > I'm at a loss as to why this could be. Does anyone have any > suggestions on where I could start in order to troubleshoot this > issue?
How are you measuring? If you're measuring in the analog domain, then it could be an analog problem. Can you stick a logic analyzer on the DAC data lines, or use Xilinx's fancy "whatever" that does the same thing inside the chip? That'll tell you if you're getting attenuation in digital-land, and slice your possible problems in half. -- 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 06/27/2011 01:49 PM, Tim Wescott wrote:
> On 06/27/2011 07:39 AM, Andrew Ashworth wrote: >> Hi, >> >> I've built a FIR filter in Matlab, and used to the coefficients in >> Xilinx Coregen to build a multirate lowpass decimator (16x). According >> to Matlab, and the Xilinx Coregen graph, I should be getting 120dB of >> attenuation in the stopband. However, in real life when I hook my fpga >> board to a signal generator, I only get around ~50dB of attenuation >> between a tone in the passband and a tone in the stopband. >> >> I'm at a loss as to why this could be. Does anyone have any >> suggestions on where I could start in order to troubleshoot this >> issue? > > How are you measuring? If you're measuring in the analog domain, then it > could be an analog problem. > > Can you stick a logic analyzer on the DAC data lines, or use Xilinx's > fancy "whatever" that does the same thing inside the chip? That'll tell > you if you're getting attenuation in digital-land, and slice your > possible problems in half. >
Alternatively, put the signal generator inside the FPGA, feeding the filter. Make it so it sweeps slowly or can be commanded, and look at your output as the frequency goes through the filter null. -- 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 06/27/2011 10:39 AM, Andrew Ashworth wrote:
> Hi, > > I've built a FIR filter in Matlab, and used to the coefficients in > Xilinx Coregen to build a multirate lowpass decimator (16x). According > to Matlab, and the Xilinx Coregen graph, I should be getting 120dB of > attenuation in the stopband. However, in real life when I hook my fpga > board to a signal generator, I only get around ~50dB of attenuation > between a tone in the passband and a tone in the stopband. > > I'm at a loss as to why this could be. Does anyone have any > suggestions on where I could start in order to troubleshoot this > issue? >
I vote for precision issues. -- Randy Yates % "Watching all the days go by... Digital Signal Labs % Who are you and who am I?" mailto://yates@ieee.org % 'Mission (A World Record)', http://www.digitalsignallabs.com % *A New World Record*, ELO
Randy Yates <yates@ieee.org> wrote:
>On 06/27/2011 10:39 AM, Andrew Ashworth wrote: >> Hi, >> >> I've built a FIR filter in Matlab, and used to the coefficients in >> Xilinx Coregen to build a multirate lowpass decimator (16x). According >> to Matlab, and the Xilinx Coregen graph, I should be getting 120dB of >> attenuation in the stopband. However, in real life when I hook my fpga >> board to a signal generator, I only get around ~50dB of attenuation >> between a tone in the passband and a tone in the stopband. >> >> I'm at a loss as to why this could be. Does anyone have any >> suggestions on where I could start in order to troubleshoot this >> issue? >> > >I vote for precision issues. >
afair the coregen filter generator will show both the ideal and the quantized filter response it should be easy to check, it doesn't take many minutes to write and testbench that instatiate the filter and file in/output -Lasse
Randy Yates <yates@ieee.org> wrote:
>On 06/27/2011 10:39 AM, Andrew Ashworth wrote: >> Hi, >> >> I've built a FIR filter in Matlab, and used to the coefficients in >> Xilinx Coregen to build a multirate lowpass decimator (16x). According >> to Matlab, and the Xilinx Coregen graph, I should be getting 120dB of >> attenuation in the stopband. However, in real life when I hook my fpga >> board to a signal generator, I only get around ~50dB of attenuation >> between a tone in the passband and a tone in the stopband. >> >> I'm at a loss as to why this could be. Does anyone have any >> suggestions on where I could start in order to troubleshoot this >> issue? >> > >I vote for precision issues. >
afair the coregen filter generator will show both the ideal and the quantized filter response it should be easy to check, it doesn't take many minutes to write and testbench that instatiate the filter and file in/output -Lasse
Randy Yates <yates@ieee.org> wrote:
>On 06/27/2011 10:39 AM, Andrew Ashworth wrote: >> Hi, >> >> I've built a FIR filter in Matlab, and used to the coefficients in >> Xilinx Coregen to build a multirate lowpass decimator (16x). According >> to Matlab, and the Xilinx Coregen graph, I should be getting 120dB of >> attenuation in the stopband. However, in real life when I hook my fpga >> board to a signal generator, I only get around ~50dB of attenuation >> between a tone in the passband and a tone in the stopband. >> >> I'm at a loss as to why this could be. Does anyone have any >> suggestions on where I could start in order to troubleshoot this >> issue? >> > >I vote for precision issues. >
afair the coregen filter generator will show both the ideal and the quantized filter response it should be easy to check, it doesn't take many minutes to write and testbench that instatiate the filter and file in/output -Lasse