<div dir="ltr">Thank you all for the responses, this does help.<div><br></div><div>From some Wikipedia lookups, I think "Windowed-Sinc" is what I've been reading about, although it doesn't use those terms (It instead talks about sin(x)/x and tuned Kaiser/Chebyshev parameters)</div>

<div><br></div><div>When it comes to FFT-based filters, I'm guessing the tap count is pretty close to the size of your FFT window.  Although I'm also not certain what is preventing you from just ignoring filter rules and doing a "set all frequencies outside of this band to zero and iFFT the results" (I'm quickly learning that any abrupt changes in DSP likely have some smearing results so this is likely not done for very good reasons)</div>

<div><br></div><div>I'd still like to know about how many taps people end up using when doing convolution, mostly to know whether there's any value in adapting the 16-tap pure-register SSE implementation I found.</div>

<div><br></div><div>That polyphase filter is definitely interesting.  I dug through the SVN repo and found a 976-tap decimate-by-8 (along with associated source) but not either of the ones you were describing.  I doubt I could implement anything like this on a general purpose CPU with the kind of parallelism you use, but the video card might be another matter.</div>

<div><br></div><div>I will probably be looking more closely at polyphase filters after this as I'm starting to suspect decimation will be coming up fairly soon.</div><div><br></div><div>Thank you for your attention on this :-)</div>

<div><br></div><div>Erik KM2G<br><div class="gmail_extra"><br><br><div class="gmail_quote">On Tue, Sep 2, 2014 at 7:58 PM, Warren C. Pratt <span dir="ltr"><<a href="mailto:warren@wpratt.com" target="_blank">warren@wpratt.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
  
    
  
  <div text="#000000" bgcolor="#FFFFFF">
    Hi Eric,<br>
    <br>
    As far as real-world examples, there are several in the wdsp library
    which is included with the PowerSDR source code.  Depending upon the
    requirements, some of these filters were implemented with
    time-domain convolution (tap-weights multiplied by sample values and
    summed) and others were implemented with the FFT-multipliers-IFFT
    technique.  The two techniques are mathematically equivalent;
    however, as Tom pointed out, the FFT approach is much more
    computationally efficient for larger filters.  Examples of filters
    within wdsp include:<br>
    <br>
    * Complex bandpass filters (FFT approach - designed on the fly as
    requirements change using the Windowed-Sinc design approach)<br>
    * Audio equalizers (FFT approach)<br>
    * Automatic Notch Filter (TD Convolution - Adaptive Filter, tap
    weights are adjusted on the fly at each sample)<br>
    * Noise Reduction (TD Convolution - Adaptive Filter, tap weights are
    adjusted on the fly)<br>
    * Resamplers (TD Convolution implemented with a polyphase approach)<br>
    * Adjustable sub-sample delays (TD Convolution, polyphase approach)<br>
    * perhaps others that don't come to mind at the moment.<br>
    <br>
    If you need pointers to specific files for any of these, let me
    know.  <br>
    <br>
    With regard to the number of taps, it really depends upon several
    factors, including the sample rate.  For example, for a bandpass
    filter, at 192K sample rate, my taste for selectivity leads me to at
    least 4097 coefficients.<br>
    <br>
    One other design/analysis program of potential interest is
    ScopeFIR.  I think there is a free trial.  For filters within the
    SDR, often the filters must be designed on the fly.  So, one has to
    write the software for that and include it within the SDR console
    program.  However, the separate design programs are interesting to
    learn and explore the possibilities and to design filters that can
    be static.  For the "static" filters, the design can often be more
    optimized than for the filters designed on the fly.<br>
    <br>
    73,<br>
    Warren  NR0V</div></blockquote><div> </div><div><br><div class="gmail_quote">On Tue, Sep 2, 2014 at 7:07 PM, Phil Harman <span dir="ltr"><<a href="mailto:phil@pharman.org" target="_blank">phil@pharman.org</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div class="">Hi Erik,<br></div><br>I use Matlab to do the FIR simulation and designs for the FPGA code.<br>

<br>The current DSP path on receive is  CICs followed by cascaded Polyphase<br>FIRs, one decimating by 2 and the other by 4.<br><br>The design parameters are as follows:<br><br>For decimate by 2 - 512 tap, 0.01dB ripple, 110dB ultimate rejection.<br>

For decimate by 4 - 1024 tap, 0.01dB ripple, 110dB ultimate rejection.<br><br>You will find the filter coefficients in the *.mif files under \<project<br>name>\Source\Polyphase under SVN.<br><br>If you would like the coefficients as a straight coefficient file rather<br>

than in Polyphase format then please drop me an email.<br><br>See also fir2r2.v and fir4r4.v for a description as to how the filters are<br>implemented. In order to meet the timing at the highest sampling rate the<br>first filter is actually two filters (odd and even coefficients) operating<br>

in parallel.<br><br>The very low ripple is a requirement of PureSignal.<br><br>73 Phil...VK6PH </blockquote></div></div></div></div></div></div>