Timeline for Digital PLL loses lock every time mesage crosses zero
Current License: CC BY-SA 4.0
8 events
when toggle format | what | by | license | comment | |
---|---|---|---|---|---|
Oct 23, 2019 at 16:26 | comment | added | researcher9 | I'm working on data stream and that makes me wonder if mine contains some sort of mistake since it doesn't always lock, only for a certain range of phase difference (if it's out of $(−\pi/2,\pi/2)$, it won't lock) link | |
Oct 23, 2019 at 14:12 | comment | added | TimWescott | In general a PLL is assumed to work on a data stream, and it is acceptable for it to take some time to lock. Just a plain multiplier will always lock, at least if there's noise to kick it out of the unstable equilibrium when the phase difference is equal to $\pi$. If you need to acquire the phase of a packet or something then you need a different synchronization technique. | |
Oct 23, 2019 at 14:05 | comment | added | researcher9 | Oh, I see. So as long as I'm sure that the initial $\theta_{in}-\theta$ is small enough so that $sin(2\theta_{in} - 2\theta)\simeq2\theta_{in} - 2\theta$, I can use the simple Costas loop you proposed, right? And if I wanted to address a larger $\theta_{in}-\theta$, I'd need to consider implementing a decision-directed loop. At least that's what I'm seeing in my simulations, it works fine for $\theta_{in}-\theta$ not bigger than $\pi/2$ | |
Oct 22, 2019 at 20:07 | comment | added | TimWescott | And yes, if you wanted to use an atan2 function in there you'd want a decision-directed loop. But you'd want to ask yourself why you were doing it -- you want your phase error to be small, and that implies that the approximation $\theta \simeq \sin \theta$ holds -- so why bother with atan2? | |
Oct 22, 2019 at 20:06 | comment | added | TimWescott | I tend to conflate "Costas loop" with "decision directed" loop. I'm not sure what's considered to be the dividing line these days. I think the improvements I had in the back of my mind would push it more into decision-directed territory. | |
Oct 22, 2019 at 18:39 | vote | accept | researcher9 | ||
Oct 22, 2019 at 18:39 | comment | added | researcher9 | It did work! Changing atan2 by a multiplier and adding a loop filter, it's working now! Thank you very much. When you say it's a simple Costas loop, it's because it could be improved somehow? Also, I'd like to know some more info about it: as far as I understand by your reply, if I wanted to use atan2 I'd need some sort of decision-directed method? | |
Oct 22, 2019 at 18:25 | history | answered | TimWescott | CC BY-SA 4.0 |