Scicos Block
eng - fr


Second order Loop Filter for PLL type 2 block

\epsfig{file=SOLOOPFILTER_f.eps,width=90.00pt}

Contents

Palette

Description

This block realizes a continuous second order loop filter defined by the following electrical circuit :

\begin{figure}\centering
\scalebox{0.8}{%
\input{filter2.pstex_t}}
\end{figure}
Figure : Passive second order loop filter

Because this circuit can be explicitly expressed with ordinary differential equations, it is able to be described with tranfert function representation.
The transfer function of this filter is given by :

$\displaystyle F(s)=\dfrac{1+\tau_{1}s}{\tau s\left(1+\tau_{2}s\right)}
$

where the zero $ \tau_{1}$ and the poles $ \tau\,\tau_{2}$ are computed in accord to the dialogue parameters with the calcul_3eme_ordre scilab function.

The interfacing function of this block also allows to draw the different Bode diagrams of the linear model of a third order type 2 PLL. This is useful when trying to calibrate the attenuation at cut-off frequency of the closed-loop transfert function.

Dialog box

\begin{figure}\begin{center}
\epsfig{file=SOLOOPFILTER_f_gui.eps,width=350pt}
\end{center}\end{figure}

Default properties

Interfacing function

SOLOOPFILTER_f.sci

Computational function (type 1)


      subroutine csslti(flag,nevprt,t,xd,x,nx,z,nz,tvec,ntvec,
     &     rpar,nrpar,ipar,nipar,u,nu,y,ny)
c     Copyright INRIA
c     Scicos block simulator
c     continuous state space linear system simulator
c     rpar(1:nx*nx)=A
c     rpar(nx*nx+1:nx*nx+nx*nu)=B
c     rpar(nx*nx+nx*nu+1:nx*nx+nx*nu+nx*ny)=C
c     rpar(nx*nx+nx*nu+nx*ny+1:nx*nx+nx*nu+nx*ny+ny*nu)=D
c
      double precision t,xd(*),x(*),z(*),tvec(*),rpar(*),u(*),y(*)
      integer flag,nevprt,nx,nz,ntvec,nrpar,ipar(*)
      integer nipar,nu,ny

c
      la=1
      lb=nx*nx+la
      lc=lb+nx*nu

      if(flag.eq.1.or.flag.eq.6) then
c     y=c*x+d*u     
         ld=lc+nx*ny
         call dmmul(rpar(lc),ny,x,nx,y,ny,ny,nx,1)
         call dmmul1(rpar(ld),ny,u,nu,y,ny,ny,nu,1)
c         if(t.gt.64.0) write(6,'(e15.8,10(e10.3,x))') t,x(1),x(2),
c     $        u(1),y(1) 
      elseif(flag.eq.0) then
c     xd=a*x+b*u
         call dmmul(rpar(la),nx,x,nx,xd,nx,nx,nx,1)
         call dmmul1(rpar(lb),nx,u,nu,xd,nx,nx,nu,1)
c         if(t.gt.64.0) write(6,'(e15.8,10(e10.3,x))') t,x(1),x(2),
c     $        xd(1),xd(2),u(1)
      endif
      return
      end

See also

Authors

IRCOM Group Alan Layec