Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Residual phase error #28

Closed
windytan opened this issue Sep 17, 2016 · 1 comment
Closed

Residual phase error #28

windytan opened this issue Sep 17, 2016 · 1 comment

Comments

@windytan
Copy link
Owner

windytan commented Sep 17, 2016

There's a residual phase error of around 6° in the liquid-dsp symbol synchronizer. Probably not a big deal, but not perfect either; it could potentially cause more bit flips than necessary in noisy conditions.

The relevant function is Subcarrier::demodulateMoreBits(). This phase error seems to come from the PLL NCO that follows the difference frequency between 57 kHz and the actual subcarrier (nco_exact_).

  • Perhaps nco_exact_.stepPLL() should be called at a different point?
  • Calling nco_exact_.step() anywhere makes the constellation rotate wildly. But according to Liquid docs, you should call step() on an NCO or it will not advance. So what's happening here?
  • What about loop filter bandwidth?
  • Or perhaps the PLL can't lock onto such a low frequency? It's on the order of ±10 Hz.
  • Links to liquid docs: nco, symsync

Here's the constellation of PSK symbols returned by the liquid-dsp functionsymsync_crcf_execute():

png image

@windytan
Copy link
Owner Author

Fixed in v0.7.4

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant