[time-nuts] Re: Complex PLL

Magnus Danielson magnus at rubidium.se
Fri Mar 19 12:23:23 UTC 2021


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" <magnus at rubidium.se> schrieb am 17.03.2021 19:20:49:
>
>> Von: "Magnus Danielson" <magnus at rubidium.se>
>> An: time-nuts at lists.febo.com
>> 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 -- time-nuts at lists.febo.com -- To unsubscribe
>> send an email to time-nuts-leave at lists.febo.com
>> To unsubscribe, go to and follow the instructions there.
>
> _______________________________________________
> time-nuts mailing list -- time-nuts at lists.febo.com -- To unsubscribe send an email to time-nuts-leave at lists.febo.com
> To unsubscribe, go to and follow the instructions there.




More information about the Time-nuts_lists.febo.com mailing list