Hi, On 2021-03-18 13:59, Detlef Schuecker via time-nuts wrote: > Hi, > > yes, got it, I think, thanks. > > I calculate the complex quotient of the incoming complex signal and the > local complex oscillator. I feed the imaginary part of the quotient to the > PI controller, thus forcing it to zero. The local oscillator is updated by > multiplying it with ( real(quotient)+j*PIOutput ). Forcing the imaginary > part of the quotient to zero means that incoming signal and local > oscillator are in phase. > > See Matlab code and the image. > No atan/cos/sin, just mere multiplication :))
In the code you sent you used a division for phase detection as far as I can tell. The modeling approach you used is different enough that it took some time to decode it, and maybe I would have used a different set of variable names, but that's more me than the model. I often use a phase-accumulator / integrator to model (and synthesize) in PLL simulations. Anyway, good that you are on track. Once you have that basic I think you can quickly enough vary the theme. You could move over from imag to real and it would only change subtly. Cheers, Magnus > > Thanks > > Cheers > Detlef Schücker > DD4WV > > clear > n=10000; > T1=0; > T2=0.01; > s0=exp(j*2*pi*200*(0:n-1)/n); > s1=zeros(1,n); > s2=zeros(1,n); > s3=zeros(1,n); > for(k=1:n) > s1(k)=(s0(k)/T2); > T1=T1+imag(s1(k))/4000; > s2(k)=0.03*imag(s1(k))+T1; > s3(k)=T2; > T2=T2*(real(s1(k))+j*s2(k)); > > end; > plot(1:n,real(s3),'b.-',1:n,real(s0),'r.-') > return > > > > > > "Magnus Danielson" <[email protected]> schrieb am 17.03.2021 19:20:49: > >> Von: "Magnus Danielson" <[email protected]> >> An: [email protected] >> Datum: 17.03.2021 19:59 >> Betreff: [time-nuts] Re: Complex PLL >> >> Hi, >> >> On 2021-03-17 17:20, Detlef Schuecker via time-nuts wrote: >>> Hi time-nuts, >>> >>> a PLL takes the phase difference of the incoming signal and the >>> synthesized signal and feeds that in a loop filter. The output of the > loop >>> filter is used to steer the local oscillator. >>> >>> In my setup I have an incoming complex signal and my local oscillator > is >>> generating a complex signal as well. So calculation of the phase >>> difference is just the quotient of the incoming signal and the local >>> oscillator, it is a sampled system. I take the quotient, calculate the >>> angle using the atan function and then I feed it in the loop filter, a > PI >>> controller. The output of the loop filter is converted to a complex > phase >>> increment for the local oscillator with the sin and cos function. >>> >>> Now I have to get rid of the atan, cos and sin functions. >>> >>> I am looking for a loop filter which takes the quotient of the >>> incoming/synthesized signal as a complex value. The output of this > loop >>> filter should be the phase increment for the local oscillator. It > should >>> not use the angle of the complex value explicitly, as this will > involve >>> the atan/cos/sin functions. >>> >>> Is someone aware of such a loop filter? I surfed through Gardners' >>> 'Phaselock Techniques' but did not find a hint. >> That book is full of hints. Costas loop is one. Actually, you could just >> do complex multiplication and only use the real output (and thus remove >> half the complex multiplication) and use that output of the >> multiplication as input to normal PI-regulator, that will lock up and >> achieve everything you want. You can then also remove the sine with a >> squarewave. There is some benefits and losses in doing that, which may >> or may not be relevant. >> >> There is a richness of complex detectors to be found in GPS literature, >> such as that of "Understanding GPS principles and applications" of >> Kaplan and Hegarty. You can also look at "Phase-locked loop circuit >> design" by Wolaver for additional inspiration. You end up finding that >> Garners' book is actually very comprehensive if you only take time to >> dwell into it. >> >> Let me know if you need more hints. >> >> Cheers and 73, >> Magnus SA0MAD >> _______________________________________________ >> time-nuts mailing list -- [email protected] -- To unsubscribe >> send an email to [email protected] >> To unsubscribe, go to and follow the instructions there. > > _______________________________________________ > time-nuts mailing list -- [email protected] -- To unsubscribe send an > email to [email protected] > To unsubscribe, go to and follow the instructions there. _______________________________________________ time-nuts mailing list -- [email protected] -- To unsubscribe send an email to [email protected] To unsubscribe, go to and follow the instructions there.
