777arc / textbook

216 stars 63 forks source link

Fine Frequency Synchronization needs explanation for how LNA removes second term #54

Closed warnes closed 8 months ago

warnes commented 2 years ago

In https://pysdr.org/content/sync.html#fine-frequency-synchronization, the Costas loop includes LPF's that remove the terms containing 2\pif*t.

There needs to be an explanation that the LPF low-pass filters are set so that the first term containing \theta+\phi passes, but that the higher frequency 2\pif*t term is removed, perhaps with an example of the filter passband range.

warnes commented 2 years ago

It would also help to briefly explain how the error function works..

For BPSK, Q should always equal 0, so the error function takes on its minimum value when Q=0, which should only occur when there is no phase or frequency offset shifting signal from I to Q.

For QPSK, taking the abs of each component will put the IQ value at +1 +1j if there is no phase or frequency offset, so the difference between the absolute value of I and Q should be zero . Otherwise it will take a value > 0.

777arc commented 2 years ago

Just to clarify, are you saying there should be added blocks (LNAs) in the diagram? I used https://en.wikipedia.org/wiki/Costas_loop as a starting point. For a digital implementation it wouldn't be LNAs right? I'm not trying to be specific to digital/analog, although the python code is more of a digital implementation than trying to model analog.

Thanks for the explanation of the two error functions, I tweaked the wording and added it right before I show the 4th order error function.

warnes commented 2 years ago

Sorry, I mistyped 'LNA' when I should have typed 'LPF'. I edited the text to fix this, so it should make more sense now.