Phase modulator event generator block
- Period :
Type 'vec' of size 1. The period of the periodic event generation.
- Init time :
Type 'vec' of size 1. The initial time when the event generation begins.
- always active: no
- direct-feedthrough: no
- zero-crossing: no
- mode: no
- number/sizes of inputs: 1 / 1
- number/sizes of outputs: 0 /
- number/sizes of activation inputs: 1 / 1
- number/sizes of activation outputs: 3 / 1 1 1
- continuous-time state: no
- discrete-time state: yes
- name of computational function: pevtdly
PEVTDLY_f.sci
/* pevtdly Scicos Phase Modulator Event block
* Type 2 simulation function ver 1.0 - scilab-3.0
* 7 octobre 2003 - IRCOM GROUP - Author : A.Layec
* 14 janvier 2005 : passage type4/rajout option
*/
/* REVISION HISTORY :
* $Log$
*/
#include "machine.h"
#include "scicos_block.h"
#include <math.h>
#define M_PI 3.14159265358979323846
/* Cette fonction de simulation calcul des instants de transistion
* modulée en phase.
* Entrées régulières : delta_{phi}
* Sorties régulières : néant
* Entrées évènementielles : instant de déclenchement
* Sortie évènementielles : evout[0] : horloge fixe
* evout[1] u tvec[2] : sortie modulée
* paramères : rpar[0] : période de déclenchement
*
* nb : la mémoire z[0] est utilisée pour savoir sur quel port tvec[1]
* ou tvec[2] l'événement modulé doit être dirigé.
*/
/*prototype*/
void pevtdly(scicos_block *block,int flag)
{
/*déclaration*/
double T; /*période fixe*/
double *u;
/*récupération de l'adresse du port d'entrée*/
u=(double *)block->inptr[0];
/*récupération des paramètres*/
T=block->rpar[0];
/*le flag 3 calcul les dates de sorties*/
if (flag==3)
{
/*calcul de l'horloge fixe.*/
block->evout[0]=T;
/*Test sur valeur d'entrée*/
if (u[0]<(2*M_PI) && u[0]>-(2*M_PI))
{
/*test sur z[0]*/
if(block->z[0]==0) /*si z[0]=1 alors calcul evout[1]*/
{
block->z[0]=1;
block->evout[1]=T*(1+(u[0]/(2*M_PI)));
}
else /*sinon calcul tvec[2]*/
{
block->z[0]=0;
block->evout[2]=T*(1+(u[0]/(2*M_PI)));
}
}
}
}
IRCOM Group
Alan Layec