I'm writing code for a 3x polyphase interpolator using a total of 9 coefficients. This is organized as 3 parallel FIR branches with 3-taps each that are summed at the 3x sampling rate.
The problem I have is the impulse response looks correct (I get my 9 filter coefficients as output) but when I use a real signal that is a smooth Gaussian area near the peak has 'digital noise'. I have confirmed by debug printouts the code is calculating what I want it to. It seems the combination of the input signal & the coefficients really does generate a non-monotonic output.
as reference I used the info at this site: [polyphase filter faq]
What am I missing? How do I avoid this? My coefficients are: [4066 6261 8133 9391 9834 9391 8133 6261 4066]
The inputs sample rate is 100Mh and the output is 300Mh. I choose the filter coefficients to have a bandwidth < 50Mh.
Adding followup information. I looked at the step response and it oscillated every 3 output samples. The output to a step should be the sum of the coefficients in a branch. I noticed the 3 coefficients of the 3 branches did not all add to the same value. By deduction, I changed the coefficient 6261 to 5878. Now the coefficients are: coeff = [4066 5878 8133 9391 9834 9391 8133 5878 4066] and the response is much better.