<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>