<ZipCPU>
emeb: Is it? Thanks! Let me go double check on it ...
<ZipCPU>
Sure is ...
jkiv has quit [Quit: Leaving]
jkiv has joined #yosys
<emeb>
ZipCPU: Nice article though - I've been doing FPGA & ASIC DSP for many years and have used variations of those polynomial interpolators in a lot of places.
<ZipCPU>
Out of curiosity, have you ever seen this approach before?
<emeb>
The ones I did were similar = a set of CSD-based FIR filters to compute the coefficient terms, then a chain of multiply/add functions to compute the polynomial.
<emeb>
I usually did 4th-order interpolators based on a paper published back in the 90's by some Finnish guys.
<ZipCPU>
yeah, the 3rd and 4th order filters do get a quite rapid increase in performance--but there is (of course) a cost associated with them
* ZipCPU
looks it up, and is surprised to find a full paper with no login required
<emeb>
I know, right?
<jkiv>
> Interpol.pdf
<jkiv>
evening, all
<ZipCPU>
Interpol via Wikipedia ... The International Criminal Police Organization
<jkiv>
(well, depending on where you are.)
<emeb>
When I first started working with those we were building ASIC-based video modems, so we had a lot of gates to throw around. Now of course you can buy FPGAs with equivalent performance for a few dollars.
<ZipCPU>
Somehow I don't think that's what Interpol is referencing here. :D
* ZipCPU
goes back to browsing the article ... it has a fascinating introduction
<emeb>
Lately I've done interpolators running at audio rates on DSP microcontrollers, but those are based on sinc (bandlimited) interpolation as described by J.O. Smith -> https://ccrma.stanford.edu/~jos/resample/
<tpb>
Title: Digital Audio Resampling Home Page (at ccrma.stanford.edu)
<ZipCPU>
I've looked at sinc interpolation. Never really liked it much. Just don't trust it at the interval edges.
<emeb>
hmm
<emeb>
It has much better frequency response than polynomial interpolation.
<emeb>
better for audio
<ZipCPU>
Piecewise polynomials, on the other hand ... don't nearly require as much memory, can be done with less computation, ...
<emeb>
but sinc interpolation is not appropriate for hardware implementation
<ZipCPU>
Yes. I see your point there. The filter I presented today can be a component of an ideal audio filter, but won't be that on its own.
<emeb>
Right - you can put a nice "cleanup" FIR filter after it to get rid of the unwanted portion of the spectrum
<ZipCPU>
"Interpolation is generally considered as a time domain polynomial fitting problem which is not very practical for DSP applications. This is because the time-domain characteristics of the signal are not known usually. What is known is the frequency band of the signal." ... nice
<ZipCPU>
emed: Actually, in another design of mine, I have "cleanup" filters both before and after the polynomial filter for just that purpose.
<emeb>
Makes sense.
<ZipCPU>
Those cleanup filters are typically a combination of a CIC filter and something else, so its a cascaded rough filter with a further cleanup filter.
<emeb>
When I do RF / SDR stuff I usually don't use any of these techniques though - Mainly I use CIC filters.
<ZipCPU>
You know, that's the one thing I haven't really discussed how to build on the blog: a good CIC filter.
<emeb>
They can't get you arbitrary resampling ratios, but usually you can work around that.
<emeb>
CICs are worth a mention.
<emeb>
At first they seem like magic until you look at all the little tricks that go into them.
<ZipCPU>
I don't know ... I used a series of block averages as an anti-aliasing filter when doing a 1024/1023 resampler ...
<ZipCPU>
"At first they seem like magic until you look at all the little tricks that go into them" <---- heheh! Good. See Clark's third law too.
<emeb>
Yeah - they are sufficiently advanced.
<emeb>
But the basic trick is just the old rectangular window implemented with a sum, delay and difference. Replace the delay with a rate change and whammo...
<ZipCPU>
It is amazing how simple they become.
<emeb>
Yeah - I have a 2-channel 256x decimation CIC that fits into a Lattice LP4k with room to spare.