DSPRelated.com
Forums

Farrow interpolation in QPSK synchro

Started by Unknown September 17, 2007
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

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 ?) > > Thanks
I 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