Hi, Hoping some of you experts can shine some light on the following regarding polyphase filtering 1...I created a polyphase FIR interpolator, sampling frequency is upsampled by 10 from 10KHz to 100KHz. It works fine and I get the required frequencies output on the scope. I notice however, that the output gain is much lower than that with a standard FIR sampled at 100 KHz with the same coefficients. Is there a gain issue with the polyphase structure? 2...I tried to create a polyphase FIR decimator, downsampling by 10 from 100KHz to 10KHz. I cannot get it to work. Should the coefficients be exactly the same as the interpolator? 3...Should the input to each filter in the polyphase filter structure of the decimator be a data sample from the ADC followed by zeros, as the other samples from the ADC are being input to the other filters in the structure? 4...Anybody got any C code for a polyphase decimator? Would be much appreciated. Thank you Duncan P.S. Back to the lab to try to figure this out, before you all prove my ignorance. Lets see who wins!!

# Polyphase filter questions

Started by ●March 12, 2007

Posted by ●March 12, 2007

redpathdu@yahoo.co.uk wrote:> 1...I created a polyphase FIR interpolator, sampling frequency is > upsampled by 10 from 10KHz to 100KHz. It works fine and I get the > required frequencies output on the scope. I notice however, that the > output gain is much lower than that with a standard FIR sampled at 100 > KHz with the same coefficients. Is there a gain issue with the > polyphase structure?When you are upsampling the signal by a factor of N, the gain of the filter is N times lower compared to the filter design value. That happens because you are using only every Nth coefficient of the filter when calculating the output sample.> > 2...I tried to create a polyphase FIR decimator, downsampling by 10 > from 100KHz to 10KHz. I cannot get it to work.Look for bugs.> Should the coefficients > be exactly the same as the interpolator?They can be the same, but they don't have to be the same.> > 3...Should the input to each filter in the polyphase filter structure > of the decimator be a data sample from the ADC followed by zeros, as > the other samples from the ADC are being input to the other filters in > the structure?You are missing the basics. There is absolutely no need to stuff zeroes for the decimator.> 4...Anybody got any C code for a polyphase decimator? Would be much > appreciated.for(i = 0; i < N; i++) acc += x[i]*k[i]; Vladimir Vassilevsky DSP and Mixed Signal Design Consultant http://www.abvolt.com

Posted by ●March 12, 2007

On 12 Mar, 15:24, Vladimir Vassilevsky <antispam_bo...@hotmail.com> wrote:> redpat...@yahoo.co.uk wrote: > > 1...I created a polyphase FIR interpolator, sampling frequency is > > upsampled by 10 from 10KHz to 100KHz. It works fine and I get the > > required frequencies output on the scope. I notice however, that the > > output gain is much lower than that with a standard FIR sampled at 100 > > KHz with the same coefficients. Is there a gain issue with the > > polyphase structure? > > When you are upsampling the signal by a factor of N, the gain of the > filter is N times lower compared to the filter design value. That > happens because you are using only every Nth coefficient of the filter > when calculating the output sample. > > > > > 2...I tried to create a polyphase FIR decimator, downsampling by 10 > > from 100KHz to 10KHz. I cannot get it to work. > > Look for bugs. > > > Should the coefficients > > be exactly the same as the interpolator? > > They can be the same, but they don't have to be the same. > > > > > 3...Should the input to each filter in the polyphase filter structure > > of the decimator be a data sample from the ADC followed by zeros, as > > the other samples from the ADC are being input to the other filters in > > the structure? > > You are missing the basics. There is absolutely no need to stuff zeroes > for the decimator. > > > 4...Anybody got any C code for a polyphase decimator? Would be much > > appreciated. > > for(i = 0; i < N; i++) acc += x[i]*k[i]; > > Vladimir Vassilevsky > > DSP and Mixed Signal Design Consultant > > http://www.abvolt.comHi Vladinir, That was much to quick. You didn't give me time to get the scope switched on. Thank you Duncan

Posted by ●March 12, 2007

"Vladimir Vassilevsky" <antispam_bogus@hotmail.com> wrote in message news:tgeJh.3750$JZ3.3413@newssvr13.news.prodigy.net...> > > redpathdu@yahoo.co.uk wrote: > > >> 1...I created a polyphase FIR interpolator, sampling frequency is >> upsampled by 10 from 10KHz to 100KHz. It works fine and I get the >> required frequencies output on the scope. I notice however, that the >> output gain is much lower than that with a standard FIR sampled at 100 >> KHz with the same coefficients. Is there a gain issue with the >> polyphase structure? > > When you are upsampling the signal by a factor of N, the gain of the > filter is N times lower compared to the filter design value. That happens > because you are using only every Nth coefficient of the filter when > calculating the output sample. >Vladimir, I understand what you say here but I'm puzzled by it. I think my confusion is because we don't have a filter reference defined. In this case the filter will be a lowpass with cutoff at fs/(2*10) and where fs is the new sampling frequency. Presuming that the gain is 1.0 in the passband then 1/N of the energy of the original signal will remain. By the "original signal" I mean the zero-stuffed version of the signal. This one can be viewed as the original signal replicated N times in frequency. That seems a reasonable starting point for talking about the filter. Otherwise, if we define the "original signal" as the one at the original sample rate then the zero stuffing step does something doesn't it? It reduces the average energy per sample by N. So, I think this "loss" is more about the signal and not about the filter. Fred

Posted by ●March 12, 2007

"Vladimir Vassilevsky" <antispam_bogus@hotmail.com> wrote in message news:tgeJh.3750$JZ3.3413@newssvr13.news.prodigy.net...> > > redpathdu@yahoo.co.uk wrote: > > >> 1...I created a polyphase FIR interpolator, sampling frequency is >> upsampled by 10 from 10KHz to 100KHz. It works fine and I get the >> required frequencies output on the scope. I notice however, that the >> output gain is much lower than that with a standard FIR sampled at 100 >> KHz with the same coefficients. Is there a gain issue with the >> polyphase structure? > > When you are upsampling the signal by a factor of N, the gain of the > filter is N times lower compared to the filter design value. That happens > because you are using only every Nth coefficient of the filter when > calculating the output sample. >Vladimir, I understand what you say here but I'm puzzled by it. I think my confusion is because we don't have a filter reference defined. In this case the filter will be a lowpass with cutoff at fs/(2*10) and where fs is the new sampling frequency. Presuming that the gain is 1.0 in the passband then 1/N of the energy of the original signal will remain. By the "original signal" I mean the zero-stuffed version of the signal. This one can be viewed as the original signal replicated N times in frequency. That seems a reasonable starting point for talking about the filter. Otherwise, if we define the "original signal" as the one at the original sample rate then the zero stuffing step does something doesn't it? It reduces the average energy per sample by N. So, I think this "loss" is more about the signal and not about the filter. Fred

Posted by ●March 12, 2007

On 12 Mar, 17:00, "Fred Marshall" <fmarshallx@remove_the_x.acm.org> wrote:> "Vladimir Vassilevsky" <antispam_bo...@hotmail.com> wrote in message > > news:tgeJh.3750$JZ3.3413@newssvr13.news.prodigy.net... > > > > > > > > > redpat...@yahoo.co.uk wrote: > > >> 1...I created a polyphase FIR interpolator, sampling frequency is > >> upsampled by 10 from 10KHz to 100KHz. It works fine and I get the > >> required frequencies output on the scope. I notice however, that the > >> output gain is much lower than that with a standard FIR sampled at 100 > >> KHz with the same coefficients. Is there a gain issue with the > >> polyphase structure? > > > When you are upsampling the signal by a factor of N, the gain of the > > filter is N times lower compared to the filter design value. That happens > > because you are using only every Nth coefficient of the filter when > > calculating the output sample. > > Vladimir, > > I understand what you say here but I'm puzzled by it. I think my confusion > is because we don't have a filter reference defined. > > In this case the filter will be a lowpass with cutoff at fs/(2*10) and where > fs is the new sampling frequency. Presuming that the gain is 1.0 in the > passband then 1/N of the energy of the original signal will remain. > > By the "original signal" I mean the zero-stuffed version of the signal. > This one can be viewed as the original signal replicated N times in > frequency. That seems a reasonable starting point for talking about the > filter. > > Otherwise, if we define the "original signal" as the one at the original > sample rate then the zero stuffing step does something doesn't it? It > reduces the average energy per sample by N. > > So, I think this "loss" is more about the signal and not about the filter. > > Fred- Hide quoted text - > > - Show quoted text -Hi, I think you've shown up my ignorance. Still having problems...here is my decimator filter. Lowpass filter Cut off freq = 1KHz Stop freq = 2KHz Fsample = 100KHz No of samples = 360 and I want to downsample by 10 to 10 KHz My input signal is a composite of 500Hz + 1800Hz + 3KHz and I see these on the spec analyser when the sampling freq is 100KHz. With regard to the polyphase structure..the coefficients are calculated based on the 100 KHz sample rate and arranged as for the polyphase structure. I mux the data into the filters at the 100 KHz sample rate...is this correct or should it be 10Khz? I sum the output of all the filters and output them at 10KHz, but I am getting nothing like what I expect. When I set the sample rate of the spec analyser to 10 Khz, I would expect to see a peak at 500Hz. I know there is a gap in my understanding, but I cannot figure it out. The polyphase decimator structure seems to be what is shown in the literature. Hope you can help duncan

Posted by ●March 12, 2007

<redpathdu@yahoo.co.uk> wrote in message > my decimator filter.> Lowpass filter > Cut off freq = 1KHz > Stop freq = 2KHz > Fsample = 100KHz > No of samples = 360 > and I want to downsample by 10 to 10 KHz > > My input signal is a composite of 500Hz + 1800Hz + 3KHz and I see > these on the spec analyser when the sampling freq is 100KHz. > > With regard to the polyphase structure..the coefficients are > calculated based on the 100 KHz sample rate and arranged as for the > polyphase structure. I mux the data into the filters at the 100 KHz > sample rate...is this correct or should it be 10Khz? > > I sum the output of all the filters and output them at 10KHz, but I > am getting nothing like what I expect. When I set the sample rate of > the spec analyser to 10 Khz, I would expect to see a peak at 500Hz. > > I know there is a gap in my understanding, but I cannot figure it out. > The polyphase decimator structure seems to be what is shown in the > literature. > > Hope you can help > duncanLet me see if I can play back what you're saying: The signal has *additive / summed* (and not multiplied/modulated) components at 500Hz + 1800Hz + 3KHz. The sample rate is 100kHz. The desired decimated sample rate is 10kHz. The length of the lowpass filter is 360 [at 100kHz / 10usec] or nearly 3.6 msec long. So, roughly it should be capable of a transition band width of 277 Hz or greater. The lowpass filter transition is from 1kHz to 2kHz so the length makes sense if the specs are tight. But, this makes one wonder what you expect to have happen to the 3kHz component... ?? In view of the numbers it makes one wonder why you aren't filtering more like 3 kHz band edge and 5kHz stop since all you need is to filter out everything above 5kHz to support the desired 10kHz sample rate. That would allow for a shorter filter - if that matters - possibly as short as 50 if the requirements are modest and length 100 if the requirements are "typical". About polyphase filters: Polyphase filters are just a way of implementing a FIR filter. So, I would think that one might implement a simple FIR filter first if there are system problems to consider. You may well be in that mode. Then, if the system works with a simple FIR you can change to a polyphase implementation to see if it's the fundamental filter (or something else) or the polyphase implementation that's the problem. As long as the processing time isn't too great with the simple FIR implementation then this approach could make sense for you. Fred

Posted by ●March 12, 2007

> - Show quoted text -Hi Fred, Thanks for replying. Standard FIR filter works fine. Also I had created an upsampler to go from 10KHz to 100KHz using basically the same spec in a polyphase structure...worked perfectly. I then created the polyphase downsampler, thinking it would be as easy!!! Regards Duncan

Posted by ●March 13, 2007

redpathdu@yahoo.co.uk wrote:> 4...Anybody got any C code for a polyphase decimator? Would be much > appreciated.This site has a nice tutorial for multirate filters, as well as source code written in C. http://www.dspguru.com/info/faqs/mrfaq.htm Enjoy. -- Jim Thomas Principal Applications Engineer Bittware, Inc jthomas@bittware.com http://www.bittware.com (603) 226-0404 x536 Build a man a fire and he is warm for a day. Set a man on fire and he is warm for the rest of his life.

Posted by ●March 14, 2007

I just wanted to clarify some decimation issues with you in regards to the polyphase decimator I created. As stated earlier, my specification is as follows Lowpass filter Cut off freq = 1KHz Stop freq = 2KHz Fsample = 100KHz No of samples = 360 and I want to downsample by 10 to 10 KHz My input signal is a composite of 500Hz + 1800Hz + 3KHz and I see them correctly on the analyzer when sampling at 100 KHz. At the output of the filter, I would expect to see the 500 Hz signal while the 1.8KHz and 3KHz would be attenuated. Here are a few questions. I just want to verify my understanding is correct. If I downsample by 10.... 1...Will the cut off freq be 100 Hz and Stop freq 200 Hz ? 2...Will the input signal now be 50Hz + 180Hz + 300Hz My understanding is that fcut and fstop will remain 1 Khz and 2 KHz respectively and that the input signal spectrum shouldn't change, but I am no expert. Best Regards Duncan