Event discrete buffer block
- Size of memory word :
Type 'vec' of size 1. integer. the size of the memory word
- Computation of period jitter (0:No/1:Yes)? :
Type 'vec' of size 1. a flag to compute period jitter.
- 0 :
only date of event are recorded in discrete state
- 1 :
compute and store period jitter in discrete state
- Initial discret state :
Type 'vec' of size -1. vector of reals. the initial discret sate
- Accepted herited (0/1)? :
Type 'vec' of size 1. Enable the event herited property (disable the event input port).
- always active: no
- direct-feedthrough: no
- zero-crossing: no
- mode: no
- number/sizes of inputs: 0 /
- number/sizes of outputs: 0 /
- number/sizes of activation inputs: 1 / 1
- number/sizes of activation outputs: 0 /
- continuous-time state: no
- discrete-time state: yes
- name of computational function: z_buft
ZBUFT_f.sci
/* z_buft Scicos discret event memory block
* Type 2 simulation function ver 1.0 - scilab-2.6&2.7
* 7 Avril 2004 - IRCOM GROUP - Author : A.Layec
* 4 Mai 2005 : passage type 4
*/
/* REVISION HISTORY :
* $Log$
*/
#include "scicos_block.h"
/* Cette fonction de simulation est un buffer qui mémorise
* les dates de déclenchement dans le vecteur des états discrets z
* si le paramètre entier ipar[1] est placé à 1 alors la
* fonction calcul les écarts temporels entre chaques activation
*
* entrée régulière : néant
* sortie régulière : néant
* entrée évènementielle : Date de déclenchement
* sortie évènementielle : néant
*
* état discret : z[0..n-1] : mot mémoire
* z[n] : date d'activatation précédente
* z[n+1] : compteur échantillon
* paramètre entier : ipar[0] : longueur du mot mémoire (n)
* ipar[1] : option : 1 : auto-calcul du jitter period
*/
/*prototype*/
// void
// z_buft(flag,nevprt,t,xd,x,nx,z,nz,tvec,ntvec,rpar,nrpar,
// ipar,nipar,inptr,insz,nin,outptr,outsz,nout)
// integer *flag,*nevprt,*nx,*nz,*ntvec,*nrpar,ipar[],*nipar,insz[],*nin,outsz[],*nout;
// double x[],xd[],z[],tvec[],rpar[];
// double *inptr[],*outptr[],*t;
void z_buft(scicos_block *block,int flag)
{
/*déclaration des variables*/
int i,j,n;
double t;
/*le flag 2 mémorise t dans z[]*/
if(flag==2)
{
/*récupération de la longeur du mot mémoire*/
n=block->ipar[0];
/*récupère valeur du compteur échantillons*/
j=(int)block->z[n+1];
/*récupère la date d'activation*/
t=get_scicos_time();
/*met en mémoire dans z ou calcule la période jitter*/
if (block->ipar[1]==0)
block->z[j]=t;
else if (block->ipar[1]==1)
block->z[j]=t-block->z[n];
/*met en mémoire la date d'activation*/
block->z[n]=t;
/*incrémente compteur échantillons*/
j++;
/*Test valeur compteur échantillons*/
if(j>=n) j=0;
/*mémorise compteur dans z[n+1]*/
block->z[n+1]=j;
}
}
IRCOM Group
Alan Layec