Daniel Weiss wrote on Wed, 14 September 2005 22:57 |
C-J wrote on Wed, 14 September 2005 21:11 | Could you (easily) explain what a Polyphase Filter means?
|
In a nutshell: As an example of a polyphase filter used in an SRC - it is a large FIR filter. A symmetrical FIR filter has a constant delay (linear phase response). The polyphase filter now takes only a subset of all coefficients of that long FIR for any given output sample, i.e. output sample # 1 is calculated using subset # 1, output sample # 2 uses subset # 2 and so forth. Now, the subset #1 takes every Nth coefficient of the FIR starting with coefficient # 1. The subset # 2 takes every Nth coefficient starting with coefficient # 2. So the resulting FIR for any given output sample has still the same amplitude response as the "complete" FIR (the full set of coefficients), but the delay through the FIR varies for each subset. Hence the term polyphase. So this polyphase filter lets you calculate values between any two sample points. Example: For a 44.1 to 88.2 conversion you need to calculate a new value exactly midway (on the time axis) between two sample values of the original 44.1, so in that case you would have two subsets in the polyphase filter, one with delay 0 (so to speak) and one with delay half a sampling period of 44.1. Other examples: For a 44.1 to 3 times 44.1 conversion you need three subsets, each 1/3rd of a sampling period apart in their delays. For a 44.1 to 48 conversion you need 160 subsets, because you first go up to 160 times 44.1kHz (=7.056MHz), i.e. this gives you a fine grid of samples, 160 samples per 44.1k sampling period. Out of that fine grid you take every 147th sample and this is your 48kHz output. I hope that helps a little - google gives more than 27000 hits for "polyphase filter", so the concept is not that exotic...
Daniel
|
Thanks Daniel,
Well, I have now read your answer 65535 times, and studied Polyphase filters for a few weeks, not ALL 27000 hits, though.
But, somehow, I cannot see the mathematical "beauty" of the polyphase function? I got the impression that ONE purpose, is to (re)use excisting hardware, by running "parallell" processes at higher calculating rates?
From reading Dan's and Nika's writings. I
think I understand the basics of FIR filters. We take a chosen amount of coefficients (the sum of which =1, in an LPF), which we then multiply one by one, with the same amount of backward input taps, stored into shift registers. Finally, we add the products of each multiplication. If we want a Phase Linear FIR, we rotate the coefficients, (like CBABC), instead of going back and forth along the taps.
If we do a 4x upsample, and call the original samples "a", and the new, interpolated samples "b,c,d,", we get a string of "abcdabcd...". If we then use an FIR LPF with 16 coefficients, named "A-P", the 1st subset uses "AEIM", the 2nd "BFJN", and so on... Now,,, some stupid questions. Is the coefficent's sum of each coefficient subset =1, or =1/4?
What taps do we use? The old "a" taps
only, or, all "abcd" taps. If so, won't we have to multiply all original "a" tap values by 4, to compensate for the zero valued "bcd" taps? (p159/160 in Nika's book.)
Whichever we use, I can see two choices when we start to multiply the taps by the rotated four coefficient subsets. Either we use the very
same four taps, and multiply them in turns by the rotated subsets. Or, we use a total of 16 backward taps:
"n, n(-4), n(-8), n(-12)" for the 1st subset, "n(-1), n(-5), n(-9), n(-13)" for the 2nd subset, and so on... (Here the "n" could point to either "a" taps only, or to "abcd" taps.)
However this is done, I have troubles in understanding why, the use of four rotated subset calculations would be any better, than to use a single set of four coefficients? Anyway, compared to using the 'long' 16 tap filter for each individual calculation, wouldn't all three options yield different output sample values?
Hopefully somebody, now post AES, could find the time to steer me into the right direction.
Lost in polyspace,
C.J., Finland