Closed warnes closed 8 months 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.
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.
Sorry, I mistyped 'LNA' when I should have typed 'LPF'. I edited the text to fix this, so it should make more sense now.
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.