Le dimanche 24 mars 2019 04:19:09 UTC-4, Piotr Wyderski a écrit :> I have a classic digital PLL with multiplier-based phase detector, > intended to lock at 50Hz. The sampling frequency Fs is 25kHz, the loop > filter bandwidth varies between Fc=10Hz to 40Hz, as I am experimenting > with different filter structures. The PLL itself works like > a charm and my reference filter is a 500th order FIR: fir1(500,Fc/(Fs/2)). > > To a reasonable degree the loop converges to a 55Hz input signal after > 4..5 periods; after about 12 periods the phase error is essentialy zero: > > https://i.postimg.cc/MpmPz0QK/convergence-sine-fir.png > https://i.postimg.cc/hGGrgknp/convergence-sine-fir-magnified.png > > (green is the input, blue is the VCO signal, red is the error) > > Interestingly, in the case of a heavily distorted signal the convergence > is still great: > > input=0.5*(1.5*sin(2*pi*f0+(80.0/180.0)*pi)+0.5*sin(3*2*pi*f0+(60.0/180.0)*pi) > + 0.2*sin(5*2*pi*f0+(45.0/180.0)*pi) + > 0.15*sin(7*2*pi*f0+(36.0/180.0)*pi) + 0.1*sin(11*2*pi*f0+(30.0/180.0)*pi)) > > https://i.postimg.cc/t48TCPQw/convergence-sine-fir-distorted.png > > But to te point: as the overhead of the FIR is bit too high, my next > attempt was to use 2 sections of the same biquad > > fs=25e3; > fc=35; > Wc=fc/fs; > > [B,A] = cheby1(2,1,Wc); > > The convergence rate is worse, but still acceptable. I am concerned > with the huge relative magnitude of the B and A coefficients, as the > target implementation is going to be fixed-point. But as a double-based > proof of concept it is fine. > > My third attempt was to use an exponential moving averager and > experiment with the alpha. It turns out that 8 EMA sections (I'm not > sure the term "order" is still correct here) in series, all with > alpha=1/70 work comparably well to the IIR. The number of > multiplications is a bit higher than in the case of a biquad (16 > instead of 10), but the structure seems to be unconditionally > stable and easy to implement in fixed-point. It even seems to > require less scaling fun than a good implementation of the FIR. > > https://i.postimg.cc/TPPZSN4X/convergence-ema-sine.png > https://i.postimg.cc/MTVtryqS/convergence-ema-distorted.png > https://i.postimg.cc/5yf57TsB/convergence-ema-distorted-magnified.png > > (in the last case the VCO tracks the f0 frequency component exactly, > there is no phase error, contrary to the first impression from the plot). > > I think I am onto something, but most likely not the first one. > Could you please explain to me why the multi-stage EMA works so > well or suggest a good reading on the theoretical properties of > this kind of structures? I haven't seen the performance of EMAs > appreciated in the entry-level DSP books. > > Best regards, PiotrQuick question : Since your frequency is 50 Hz, why not use a SOGI-PLL? Is there a reason to try another filter structure?