This block realizes the comparison between the two event inputs.
At each event the state of the regular outputs
can change according to the last state.
When the input events are perfectly synchronized, the high state are realized after one delay.
The following algorithm is a derived model of a model find in [1].
More descriptions of this Phase/Frequency comparator can be found in [2].
/* cpf Scicos Phase/frequency Comparator block * Type 4 simulation function ver 1.0 - scilab-3.0 * 6 janvier 2005 - IRCOM GROUP - Author : A.Layec */ /* REVISION HISTORY : * $Log$ */ #include "scicos_block.h" #include <stdio.h> /* Cette fonction de simulation réalise un comparateur phase fréquence * trois états. Elle calcule les signaux discrets Up(t) et Down(t) qui * sont les sorties logiques de deux bascules D. Les entrées de ces bascules * sont placées à 1 et les entrées d'horloges de celles-ci sont les entrées * évènementielles du bloc. Lorsque les sorties des deux bascules sont toutes * les deux placées à 1, la fonction place les sorties du bloc y[0] et y[1] à 0. * * entrées d'évenements : dates d'événements Ref(t), Div(t) * sortie d'évenement : néant * entrée régulières : néant * Sortie régulières : Up(t) et Down(t) * paramètres : néant * Etats discrets : z[0] et z[1] mémorisent les états précédents des sorties des bascules */ /*prototype*/ void cpf(scicos_block *block,int flag) { /*déclaration*/ int k; int nev; double *y1, *y2; /*récupération des adresses*/ y1=(double *)block->outptr[0]; y2=(double *)block->outptr[1]; nev=block->nevprt; /* Le flag 1 met à jour les sorties un test est réalisé sur les états précédents*/ if(flag==1) { /*Appel cpf_c*/ cpf_c((k=1,&k),&nev,&block->z[0],&block->z[1],&y1[0],&y2[0]); } }