Hi, I've designed a QPSK bit synchro with Gardner algorithm working with two sample by symbol I've got a Farrow interpolation filter with simple linear interpolation If the two input sample of the Farrow filter are 0.5 then 1.0, the interpolation give 0.75 (good) but iof the two samples are 0.75 and 0.75 the interpolation give 0.75 (bad the good interpolation is 1.0) so I think I need an order better like two or three order Is there good paper about this and how to do this interpolation (with several FIR filters ?) Thanks

# Farrow interpolation in QPSK synchro

On Sep 17, 12:10 pm, fpga.vhdl.desig...@gmail.com wrote:> Hi, > > I've designed a QPSK bit synchro with Gardner algorithm working with > two sample by symbol > > I've got a Farrow interpolation filter with simple linear > interpolation > > If the two input sample of the Farrow filter are 0.5 then 1.0, the > interpolation give 0.75 (good) > but iof the two samples are 0.75 and 0.75 the interpolation give 0.75 > (bad the good interpolation is 1.0) > > so I think I need an order better like two or three order > > Is there good paper about this and how to do this interpolation (with > several FIR filters ?) > > ThanksI would refer you again to the original work that F. Gardner did on this topic. He discusses the pros and cons of the various interpolation schemes in the second volume of his paper. This paper is not free but is worth the cost, IMO. John

There was recent discussion about the typos in this one: http://www.signumconcepts.com/IP_center/paper018.pdf Your example results example looks like linear interpolation to me, but I could be mistaken. -mn

On Sep 17, 12:10 pm, fpga.vhdl.desig...@gmail.com wrote:> Hi,....> but iof the two samples are 0.75 and 0.75 the interpolation give 0.75 > (bad the good interpolation is 1.0) >If you do linear interpolation, 0.75 is the right answer. Linear interpolation is simply y = (1-a) * x1 + a * x2, where a = 0.5 in your case. What makes you think it should be 1.0 Depending on accuracy and bandwidth requirement, 3rd and 4th orders are commonly used in Farrow interpolator. If the bandwidth is small relative to fs, then 2nd order may be sufficient.

Let me try to summarize Farrow's idea in three bullet points: The numbers are from the reference. * I can use a FIR filter to interpolate one particular point between samples, for example at an offset of 1/32 sample time * I keep 32 different banks of FIR coefficients at hand, so that I can choose between interpolating at for example 0/32, 1/32, 2/32... 31/32 delay. That's a "polyphase" filter. * I may still need a higher timing resolution. Instead of decreasing the step size (and using more polyphase filter "banks") I calculate each FIR coefficient through a polynomial (for example 4th order) with the delay 0..1 as variable. Hope this is useful... Now some wild speculation: Your numbers (interpolation between 1/2 and 1/2 gives 1) might be correct with regard to the first bullet point. But usually one uses a much longer FIR filter to interpolate, not linear interpolation (which boils down to two-tap FIR). -mn

Hi when I said "but if the two samples are 0.75 and 0.75 the interpolation give 0.75 (bad the good interpolation is 1.0)" yes the linear interpolation gives 0.75 but the "real" interpolation should give 1.0 that's all... I'm going to buy the two Farrow's papers.. Thanks

and when I'm in QPSK, the Gardner loop recover the symbol clock (2 MHz), but how to have the bit clock (4 MHz) (which is twice the symbol frequency) Do I need to have my NCO at 4 MHz and then "downconvert" to 2 MHz ? thanks

Hello, There's now a short entry in my blog on dsprelated.com about basic polyphase / Farrows. Not sure, whether it tells anything new, though. But there are a couple of pictures that I couldn't easily post here. Cheers Markus link: http://www.dsprelated.com/showarticle/22.php